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

解压后的目录结构如图所示:

ELK 选型 elk 7_ELK 选型

四、部署Elasticsearch

1.修改elasticsearch.yml

# 修改elasticsearch.yml文件
vi /home/elk/elasticsearch-6.5.4/config/elasticsearch.yml

ELK 选型 elk 7_ELK 选型_02

2.修改jvm.options

vi /home/elk/elasticsearch-6.5.4/config/jvm.options

ELK 选型 elk 7_linux_03

3.启动elasticsearch

# 启动elasticsearch
sh /home/elk/elasticsearch-6.5.4/bin/elasticsearch

会发现报错,启动失败;失败原因就是系统配置文件配置的max file和 max virtual memory大小不够。

ELK 选型 elk 7_elasticsearch_04


接下来需要修改系统配置文件:

# 切换为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

ELK 选型 elk 7_ELK 选型_05


sysctl.conf

ELK 选型 elk 7_elasticsearch_06


注:不能使用root用户启动elasticsearch,否则会报错

ELK 选型 elk 7_elasticsearch_07


如图所示,说明elasticsearch已经启动成功了。

ELK 选型 elk 7_linux_08


在浏览器上访问(若可以成功访问,则说明es已经启动成了;不能访问的话检查防火墙和SElinux是否已经关闭了):

ELK 选型 elk 7_linux_09

五、部署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已经启动成功

ELK 选型 elk 7_运维_10

六、部署kibana

1.修改kibana配置文件

# 修改kibana配置文件
vi /home/elk/kibana-6.5.4-linux-x86_64/config/kibana.yml

ELK 选型 elk 7_elasticsearch_11

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

ELK 选型 elk 7_运维_12

七、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.创建索引

ELK 选型 elk 7_elasticsearch_13


填写索引名:

ELK 选型 elk 7_运维_14


ELK 选型 elk 7_ELK 选型_15

2.搜索日志

这是我路径为/home/elk/test/*.txt的文本,里边分别写入两句话:

ELK 选型 elk 7_elasticsearch_16


在搜索栏中搜索"hello " 能匹配到我们刚才添加的那条hello world

ELK 选型 elk 7_ELK 选型_17

如何关闭kibana,其他的都可以通过ps -ef | grep xxx 找到pid,然后通过kill -9 pid关闭

但是kibana却找不到启动进程,可以通过命令 : ps -ef | grep node,找到 :

ELK 选型 elk 7_运维_18


然后kill -9 pid 杀掉这个进程即可。