一. 什么是ELK
ELK是Elasticsearch, Logstash, Kibana三个开源软件的缩写。ELK提供了一套集成方案,配合FileBeat一起使用是目前比较主流的一种日志系统。
Elasticsearch是基于lucene的开源搜索引擎,是一个分布式的搜索分析系统,提供高拓展,高实时的搜索与数据分析。主要用于全文搜索,结构化数据分析,日志分析等场景。
Logstash是一个管理日志和事件的工具,用于日志的搜集和分析,由于是jvm跑的,资源消耗比较大,所以一般都用Filebeat进行日志收集,Logstash用来过滤分析
kibana是一个可视化日志和数据系统,为用户提供web端的可视化界面
Filebeat主要用于日志收集,相比于Logstash的日志收集功能,Filebeat更轻量,占用资源更少,但logstash具有filter功能,能分析过滤日志,所以一般结构都是用Filebeat采集日志,利用Logstash的filter功能过滤,然后存储到elasticsearch中
二. ELK架构
三. 搭建ELK
- 确保服务器安装了docker
- 拉取镜像:sudo docker pull sebp/elk
- 启动容器: sudo docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name my_elk sebp/elk
(1)5601为kibana端口
(2) 9200为elasticsearch端口
(3) 5044为logstash端口 - 注意事项:
(1).若与宿主机有端口冲突,根据实际情况修改宿主机端口。
(2).可将elk三个系统的配置文件映射到宿主机持久化,并方便修改。
三、搭建filebeat - 下载安装包:wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.5.1-linux-x86_64.tar.gz
- 解压:tar -zxvf filebeat-6.5.1-linux-x86_64.tar.gz && mv filebeat-6.5.1-linux-x86_64 filebeat
- 配置filebeat: cd filebeat && vim filebeat.yml
(1).输入配置
filebeat.inputs:
- type: log
enabled: true
paths:- /var/log/*.log #配合需要收集的日志路径
(2).输出配置
屏蔽output.elasticsearch, 开启output.logstash
output.logstash:
hosts: [“localhost:5044”] #配置logstash的ip/port
- /var/log/*.log #配合需要收集的日志路径
-
启动filebeat:
nohup ./filebeat -e -c filebeat.yml > /dev/null &
四、配置pipeline
1、数据流:Beats -> Logstash -> Elasticsearch
2、Logstash配置:
(1).配置路径:容器内/opt/logstash/config/pipelines.yml 与/opt/logstash/config/beats.conf
(2).【pipelines.yml】path.config: "/opt/logstash/config/beats.conf
(3).【beats.conf】:
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => [“http://234.34.43.34:9201”]
index => “mynginx-%{+YYYY.MM.dd}”
#user => “elastic”
#password => “changeme”
}
}
(4)重启elk: sudo docker restart my_elk
3、创建索引:
(1) 登录kibana,在Stack Managemetn创建索引,自动关联elasticsearch已有索引,例如上文中mynginx.(2).登录Kibana,在Discover页面即可查询数据