CentOS7 环境下ELK部署
- 前言
- 一、什么是ELK?
- 二、环境准备
- 三、ELK用户创建,解压文件
- 四、部署Elasticsearch
- 1.修改elasticsearch.yml
- 2.修改jvm.options
- 3.启动elasticsearch
- 五、部署logstash
- 六、部署kibana
- 1.修改kibana配置文件
- 2.kibana汉化
- 七、filebeat部署
- 八、在kibana查看日志内容
- 1.创建索引
- 2.搜索日志
前言
开发过程中需要使用ELK来查询日志和图表展示,因为从前没用过,所以在学习过程遇到了很多问题,在查阅了很多资料之后,有了一些心得,特此记录一下,希望对各位小伙伴有帮助!
一、什么是ELK?
ELK或者是ELFK,按我个人的理解,可以把他当做一个日志收集的一套工具,用于查找日志,分析图表,监控系统状态等;当然这是很片面的,ELK功能十分强大,我了解的只有这么多,今后还待继续学习。
ELK 中的 E 指的是 elasticsearch,和上篇文章学习的solr类似,是一个功能强大的搜索引擎,都是基于Lucene,可以用来存储搜索索引信息;L是指logstash,从 logstash 的名字就能看出,它主要负责跟日志相关的各类操作, 简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端,与此同时这根管道还可以让你根据自己的需求在中间加上滤网;K则指的是kibana,用于可视化展示es中的数据。
此外,可能还会用到的另一个中间件,filebeat,是一个文件采集工具,在filebeat的配置文件中指定文件路径,当文件内容发送变化时,会将变化的内容发送给指定ip:port。
日志收集的流程:
filebeat 部署在客户端,采集日志->>消息队列(kafka、MQ、Redis)或者 Nginx->logstash 进行过滤->存储到 es 中->kibana 进行页面展示、管理。
(以上内容均为个人理解,如有错误,欢迎指正)
二、环境准备
linux:CentOS 7+
jdk: jdk1.8+
filebeat:6.5.4
elasticsearch:6.5.4
logstash:6.5.4
kibana:6.5.4
kibana_Hanization-master(kibana汉化工具)
(jdk环境安装参考上一篇solr部署; 如需要在外网连接,也需要关闭SElinux和防火墙)
三、ELK用户创建,解压文件
# 创建elk用户
useradd elk
#修改密码(建议密码也设置成elk,方便记忆;输入两次elk即可)
passwd elk
# 切换elk用户
su - elk
# 使用ftp工具把文件上传到elk用户下,解压缩
tar -zxvf elasticsearch-6.5.41.tar.gz
tar -zxvf logstash-6.5.4.tar.gz
tar -zxvf kibana-6.5.4-linux-x86_64.tar.gz
tar -zxvf filebeat-6.5.4-linux-x86_64.tar.gz
unzip Kibana_Hanization-master.zip
解压后的目录结构如图所示:
四、部署Elasticsearch
1.修改elasticsearch.yml
# 修改elasticsearch.yml文件
vi /home/elk/elasticsearch-6.5.4/config/elasticsearch.yml
2.修改jvm.options
vi /home/elk/elasticsearch-6.5.4/config/jvm.options
3.启动elasticsearch
# 启动elasticsearch
sh /home/elk/elasticsearch-6.5.4/bin/elasticsearch
会发现报错,启动失败;失败原因就是系统配置文件配置的max file和 max virtual memory大小不够。
接下来需要修改系统配置文件:
# 切换为root用户
exit
#修改limits.conf
vi /etc/security/limits.conf
# 在最下边加上
* hard nofile 65536
* soft nofile 65536
* hard nproc 4096
* soft nproc 4096
elk hard nofile 65536
elk soft nofile 65536
elk hard nproc 4096
elk soft nproc 4096
# 使修改生效
source /etc/security/limits.conf
# 修改sysctl.conf
vi /etc/sysctl.conf
# 在最下边加入
vm.max_map_count=655360
fs.file-max=655360
# 使修改生效
sysctl -p
# 切换回elk用户,并启动elasticsearch
su - elk
# sh /home/elk/elasticsearch-6.5.4/bin/elasticsearch
# 由于es需要常驻,我们采用nohup启动
cd /home/elk/elasticsearch-6.5.4/bin/
nohup ./elasticsearch &
# 查看启动日志
tail -f /home/elk/elasticsearch-6.5.4/bin/nohup.out
limits.conf
sysctl.conf
注:不能使用root用户启动elasticsearch,否则会报错
如图所示,说明elasticsearch已经启动成功了。
在浏览器上访问(若可以成功访问,则说明es已经启动成了;不能访问的话检查防火墙和SElinux是否已经关闭了):
五、部署logstash
# 修改logstash配置文件
vi /home/elk/logstash-6.5.4/config/logstash-test.conf
修改logstash配置文件,大家根据自己需求去修改,增加滤网:
# 输入
input {
beats {
port => 10515
}
}
# 输出
output {
elasticsearch {
hosts => ["192.168.25.11:9200"]
index => "elk-test-%{+YYYY.MM.dd}"
}
}
# 启动logstash
cd /home/elk/logstash-6.5.4/
nohup ./bin/logstash -f ./config/logstash-test.conf &
# 查看启动日志
tail -f /home/elk/logstash-6.5.4/nohup.out
若启动日志如图所示,说明logstash已经启动成功
六、部署kibana
1.修改kibana配置文件
# 修改kibana配置文件
vi /home/elk/kibana-6.5.4-linux-x86_64/config/kibana.yml
2.kibana汉化
# 执行汉化
cd /home/elk/Kibana_Hanization-master/old/
python main.py "/home/elk/kibana-6.5.4-linux-x86_64/"
# 启动kibana
cd /home/elk/kibana-6.5.4-linux-x86_64/bin/
nohup ./kibana &
# 查看kibana启动日志
tail -f nohup.out
访问http://ip:5601 即可访问kibana
七、filebeat部署
上文说过filebeat的作用是监听文件内容,我们做测试,先创建一个被监听的文本文件(实际操作时填写)。
# 修改filebeat的配置文件
vi /home/elk/filebeat-6.5.4-linux-x86_64/filebeat-test.yml
filebeat-test.yml
其中path是文本的路径," * " 为通配符.
filebeat.inputs:
- input_type: log
encoding: UTF-8
paths:
- /home/elk/test/*.txt
document_type: "elk-log"
fields:
logtype: elk-log
output.logstash:
hosts: ["192.168.25.11:10515"]
enabled: true
# 启动filebeat
cd /home/elk/filebeat-6.5.4-linux-x86_64/
nohup ./filebeat -e -c filebeat-test.yml &
八、在kibana查看日志内容
1.创建索引
填写索引名:
2.搜索日志
这是我路径为/home/elk/test/*.txt的文本,里边分别写入两句话:
在搜索栏中搜索"hello " 能匹配到我们刚才添加的那条hello world
如何关闭kibana,其他的都可以通过ps -ef | grep xxx 找到pid,然后通过kill -9 pid关闭
但是kibana却找不到启动进程,可以通过命令 : ps -ef | grep node,找到 :
然后kill -9 pid 杀掉这个进程即可。