在微服务架构下,服务的数量以及服务集群等,日志散落在各个服务器里,这样不管是运维还是查找问题,都是一件非常困难的事情,这时候日志的统一管理就显得非常重要,ELK 就是为了解决日志管理的问题,ELK 被称为日志分析系统,是三款开源软件的简称,分别是 Elasticsearch+Logstash+Kibana,本篇文章还会用到一个叫 FileBeat 的软件,用来负责收集日志的,下面是 ELK 的部署图:
简单介绍一下各个软件的功能:
Elasticsearch:是基于 Lucene 的开源全文搜索引擎,在这里充当日志存储的角色
Logstash:日志搜集、过滤的软件,在这里接收 FileBeat 传过来的日志,充当过滤日志角色
Kibana:是一个开源的分析和可视化平台,从 Elasticsearch 里把日志查询展现出来。
FileBeat:负责日志收集,传输到 Logstash 进行过滤处理后,再录入到 Elasticsearch。
Logstash 就具备日志收集功能,为何还需要 FileBeat 呢?因为 FileBeat 相比 Logstash 更加轻量级和易部署,对系统资源开销更小,Filebeat 适合部署在收集的最前端,Logstash 相比 Filebeat 功能更强,可以在 Filebeat 收集之后,由 Logstash 进一步做日志的解析,所以这里就是使用 FileBeat 来进行收集日志,然后交给 Logstash 来进行过滤分析等。
下面开始安装,环境是 Centos7,ELK 版本都是 6.4.2,JDK1.8。
下载:
JDK8:https://www.oracle.com/technetwork/java/javase/downloads/index.html
Elasticsearch:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.2.tar.gz
下载 Logstash:https://artifacts.elastic.co/downloads/logstash/logstash-6.4.2.zip
下载 Filebeat:https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.4.2-linux-x86_64.tar.gz
下载 Kibana:https://artifacts.elastic.co/downloads/kibana/kibana-6.4.2-linux-x86_64.tar.gz
以上软件下载统一放到/usr/local/elk 目录,分别解压所有软件,目录如下:
配置 JDK 环境变量:
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
安装 Elasticsearch
由于 Elasticsearch 不能用 root 用户启动,所以创建一个叫 es 的用户,命令如下:
adduser es
修改密码:
passwd es
回车后输入 es 的密码。
更改目录权限:
sudo chmod 777 -R /usr/local/elk
更改文件:
vi /etc/security/limits.conf
* hard nofile 65536
* soft nofile 65536
vi /etc/sysctl.conf
vm.max_map_count=655360
更新完上面两个文件后执行:
sysctl -p
修改 Elasticsearch 的配置文件:
vi elasticsearch-6.4.2/config/elasticsearch.yml
network.host: 10.211.55.9
http.port: 9200
切换到 es 用户,cd 到 Elasticsearch 的 bin 目录下,启动 Elasticsearch:
./elasticsearch -d
在浏览器访问:http://ip:9200/
出现 Elasticsearch 相关信息就说明 Elasticsearch 已经正确启动了。
安装 Kibana
编辑 kibana 配置文件:
vi kibana-6.4.2/config/kibana.yml
server.port: 5601
server.host: "10.211.55.9"
elasticsearch.url: "http://10.211.55.9:9200"
上面是配置 kibana 的端口为 5601,host 是 10.211.55.9,以及连接 Elasticsearch 的信息。
启动 kibana:
kibana-6.4.2/bin/kibana &
访问:http://10.211.55.9:5601
出现 kibana 的界面说明 kibana 已经成功启动。
安装 Logstash
在 logstash-6.4.2/config 目录下,把 logstash-sample.conf 重命名为 logstash.conf,然后更改里面的内容:
vi logstash-6.4.2/config/logstash.conf
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["http://10.211.55.9:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
port=>5044:这个是 Logstash 监听的端口,filebeat 到时发送的日志就是发送到 Logstash 的 5044 端口
host:意思是 Logstash 把日志发送到这个 host 的 Elasticsearch 上。
index:发送到 Elasticsearch 的时候创建的 index 命名规则
user 和 password:Elasticsearch 有设置相关的用户名密码,这里不用,注释掉。
启动 Logstash:
./logstash -f ../config/logstash.conf &
安装 FileBeat
FileBeat 是安装到需要收集日志的服务器上,收集当前服务器的日志发给 Logstash。
更改配置文件:
vi filebeat-6.4.2/filebeat.yml
- type: log
enabled: true
paths:
- /usr/local/log/*.log
multiline.pattern: ^\d{4}
multiline.negate: true
multiline.match: after
scan_frequency: 60
output.logstash:
hosts: ["10.211.55.9:5044"]
paths:
- usr/local/log/*.log#收集该目录下的以.log 后缀结尾的文件
hosts:这个就是 Logstash 的 host 和端口。
启动 FileBeat:
filebeat-6.4.2/filebeat -e -c filebeat.yml &
访问 Kibana:http://10.211.55.9:5601
在 FileBeat 能扫描到日志后,可以在 Kibana 里可以看到日志传输到 Elasticsearch 里了。
整个 ELK 的搭建步骤已完成。
扫一扫有惊喜: [![imagepng](http://itechor.top/solo/upload/bb791a58c3a84193b7f643b6849482c5_image.png) ](http://ym0214.com)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于