欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CentOS7安装ELK

程序员文章站 2022-06-04 10:05:02
...

CentOs 7下ELK日志分析系统搭建

准备工作

为了安装时不出错,建议选择一样的版本,本文全部选择6.2.2版本。

首先讲一下elk吧,elk是指ElasticSearch,Logstash,Kibana。

  • Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
  • Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
  • Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
  • ELK 关系:LEK:logstatsh 收集日志,存到elasticserach (存储,产生索引,搜索) 到kibana展现(view)

下载

下载地址:
https://www.elastic.co/downloads
自己挑选适合自己的版本进行下载安装

一.Elasticsearch安装配置

1.解压

我这边把文件下载上传到/opt/elk下了()没有的自己建目录。
解压到当前目录

[aaa@qq.com elasticsearch-6.2.2]# cd /opt/elk/
[aaa@qq.com elk]# tar -xvf elasticsearch-6.2.2.tar.gz 

2.修改配置文件

[aaa@qq.com elasticsearch-6.2.2]#vim ./config/elasticsearch.yml

在文件中修改或者添加上如下内容,可以根据实际需求做相应修改。

# 这里指定的是集群名称,需要修改为对应的,开启了自发现功能后,ES会按照此集群名称进行集群发现
 cluster.name: skynet_es_cluster
 node.name: skynet_es_cluster_dev1
# 数据目录
 path.data: /data/elk/data
# log 目录
 path.logs: /data/elk/logs
# 修改一下ES的监听地址,这样别的机器也可以访问
 network.host: 0.0.0.0
# 默认的端口号
 http.port: 9200
 discovery.zen.ping.unicast.hosts: ["172.18.5.111", "172.18.5.112"]
# discovery.zen.minimum_master_nodes: 3
# enable cors,保证_site类的插件可以访问es
 http.cors.enabled: true
 http.cors.allow-origin: "*"
# Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。
 bootstrap.memory_lock: false
 bootstrap.system_call_filter: false

3.修改系统的资源参数

这一步主要是为了确保有足够资原启动ES
这里提供两种方法进行设置,一个是脚本直接设置,一种是一项一项的去修改。
(1)直接命令添加

echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 131072" >> /etc/security/limits.conf
echo "* soft nproc 65536" >> /etc/security/limits.conf
echo "* hard nproc 131072">> /etc/security/limits.conf
echo "vm.max_map_count = 655360" >>/etc/sysctl.conf 

设置用户资源参数

vi /etc/security/limits.d/20-nproc.conf

设置elk用户参数

elasticsearch    soft    nproc     65536

注意:命令是添加命令,不要重复地跑,也可以选择vi进入到文件中进行修改

4. 添加启动用户,设置权限

启动ElasticSearch要非root用户,需要新建一个用户来启动elasticsearch

useradd elasticsearch         #创建用户elk
groupadd elasticsearch        #创建组elk
useradd elasticsearch -g elasticsearch  #将用户添加到组

mkdir  -pv  /data/elk/{data,logs} # 创建数据和日志目录

# 修改文件所有者
chown -R elasticsearch:elasticsearch /data/elk/
chown -R elasticsearch:elasticsearch /opt/elk/elasticsearch-6.2.2/

5.启动ES

使用elasticsearch 用户启动elasticsearch服务
切换至elasticsearch 用户

[aaa@qq.com elasticsearch-6.2.2]# su elasticsearch 
[aaa@qq.com elasticsearch-6.2.2]# ./bin/elasticsearch       #后面加上-d,后台运行

6.测试

[aaa@qq.com elasticsearch-6.2.2]# curl http://10.25.0.165:9200/
{
  "name" : "skynet_es_cluster_dev1",
  "cluster_name" : "skynet_es_cluster",
  "cluster_uuid" : "pTYGn8IfQi6B7YKZ_sYBdQ",
  "version" : {
    "number" : "6.2.2",
    "build_hash" : "10b1edd",
    "build_date" : "2018-02-16T19:01:30.685723Z",
    "build_snapshot" : false,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}
[aaa@qq.com elasticsearch-6.2.2]# 

有返回,能导通就说明通过了。

二、安装 Logstash

1.解压

同样的,压缩包被传到/opt/elk/目录下
解压到当前目录

[aaa@qq.com elasticsearch-6.2.2]# cd /opt/elk/
[aaa@qq.com elk]# tar -xvf logstash-6.2.2.tar.gz

2.测试

测试一、快速启动,标准输入输出作为input和output,没有filter

[aaa@qq.com elk]# cd /opt/elk/logstash-6.2.2/
[aaa@qq.com logstash-6.2.2]# ./bin/logstash -e 'input { stdin {} } output { stdout {} }'
Sending Logstash's logs to /usr/local/logstash/logstash-5.4.1/logs which is now configured via log4j2.properties
[2017-06-17T13:37:13,449][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.queue", :path=>"/usr/local/logstash/logstash-5.4.1/data/queue"}
[2017-06-17T13:37:13,467][INFO ][logstash.agent           ] No persistent UUID file found. Generating new UUID {:uuid=>"dcfdb85f-9728-46b2-91ca-78a0d6245fba", :path=>"/usr/local/logstash/logstash-5.4.1/data/uuid"}
[2017-06-17T13:37:13,579][INFO ][logstash.pipeline        ] Starting pipeline {"id"=>"main", "pipeline.workers"=>2, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>250}
[2017-06-17T13:37:13,612][INFO ][logstash.pipeline        ] Pipeline main started
The stdin plugin is now waiting for input:
[2017-06-17T13:37:13,650][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

此时命令窗口停留在等待输入状态,键盘键入任意字符

hello world

下方是Logstash输出到效果

2017-06-17T05:37:29.401Z chenlei.master hello world

测试二、在测试一堆基础上加上codec进行格式化输出

[aaa@qq.com logstash-6.2.2]#  ./bin/logstash -e 'input{stdin{}} output{stdout{codec=>rubydebug}}'
Sending Logstash's logs to /usr/local/logstash/logstash-5.4.1/logs which is now configured via log4j2.properties
[2017-06-17T14:01:50,325][INFO ][logstash.pipeline        ] Starting pipeline {"id"=>"main", "pipeline.workers"=>2, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>250}
[2017-06-17T14:01:50,356][INFO ][logstash.pipeline        ] Pipeline main started
The stdin plugin is now waiting for input:
[2017-06-17T14:01:50,406][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

此时命令窗口停留在等待输入状态,键盘键入任意字符

hello world

下方是Logstash输出到效果

{
"@timestamp" => 2017-06-17T06:02:19.189Z,
"@version" => "1",
"host" => "chenlei.master",
"message" => "hello world"
}

3.测试Elasticsearch 和 Logstash 来收集日志数据

前提要保证elasticsearch和logstash都正常启动(需要先启动elasticsearch,再启动logstash)

[aaa@qq.com logstash-6.2.2]# cat config/logstash-test.conf
input { stdin { } }
output {
    elasticsearch {hosts => "10.25.0.165:9200" } #elasticsearch服务地址
    stdout { codec=> rubydebug }
}
[aaa@qq.com logstash-6.2.2]# 

开启服务,执行如下命令:

[aaa@qq.com logstash-6.2.2]#  ./bin/logstash  -f ./config/logstash-test.conf 

我们可以使用 curl 命令发送请求来查看 ES 是否接收到了数据:

[aaa@qq.com logstash-6.2.2]# curl 'http://10.25.0.165:9200/_search?pretty'
{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 0,
    "successful" : 0,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : 0.0,
    "hits" : [ ]
  }
}
[aaa@qq.com logstash-6.2.2]# 

至此,你已经成功利用 Elasticsearch 和 Logstash 来收集日志数据了。

三、kibana的安装

1.解压

同样的,压缩包被传到/opt/elk/目录下
解压到当前目录

[aaa@qq.com elasticsearch-6.2.2]# cd /opt/elk/
[aaa@qq.com elk]# tar -xvf kibana-6.2.2-linux-x86_64.tar.gz

2.配置kibana

编辑kibana.yml配置文件

[aaa@qq.com kibana-6.2.2-linux-x86_64]#  vim ./config/kibana.yml 

修改以下参数:

server.port: 5601           #开启默认端口5601
server.host: 10.25.0.165   #站点地址
elasticsearch.url: http://10.25.0.165 :9200   #指向elasticsearch服务的ip地址
kibana.index: “.kibana”

3.启动

启动命令

[aaa@qq.com kibana-6.2.2-linux-x86_64]# ./bin/kibana

4.测试

访问:http://10.25.0.165:5601
如下图所示,则说明安装成功了

 

CentOS7安装ELK

image.png