ELK之路第四步——整合!打通任督二脉
前言
在开始本篇之前,你需要用到如下知识和技术点:
ELK之路第一步——Elasticsearch集群的搭建以及踩坑记录
ELK之路第二步——可视化界面Kibana
ELK之路第三步——日志收集筛选logstash和filebeat
还是由于时间问题,本篇内容后面会作补充,例子都是引用的官方示例。
1.架构
在说架构之前,我们先回忆一下我们现在有什么
- 三台es集群,一主两从
- 主服务器上部署了Kibana
- 主服务器上部署了logstash
- 主服务器上部署了filebeat
这里简单说一下,为什么有了logstash的时候,还要引入filebeat,引入filebeat为何还要保留logstash:
logstash是运行在jvm上的,它非常庞大和笨重,而filebeat是作者用go开发的轻量级的替代品,删除了部分功能。所以我们引入filebeat来代替logstash的收集读取功能,但是logstash有非常强大的日志筛选功能,我们需要用到它。
综上所述,我们的架构图如下:
通过filebeat读取各种文件的类容,传输到logstash,logstash作了解析和筛选之后再发送到ES上面,然后通过Kibana可视化管理ES的数据。
2.下载资源
要引用官方的示例,我们需要两个资源:第一个是模拟日志数据weblog-sample.log,第二个是数据模版apache_template.json
第一个官网下载地址:https://github.com/liu-xiao-guo/beats-getstarted
第二个官网下载地址:https://github.com/elastic/examples/blob/master/Common%20Data%20Formats/apache_logs/logstash/apache_template.json
当然,不想搭梯子的也可以去我的资源中,免费下载,我已经上传。
3.整合开始
1.分别启动三个es
cd到es的解压目录
bin/elasticsearch -d
2.启动kibana
cd到kibana的解压目录
nohup ./bin/kibana &
3.新建filebeat_logstash.yml配置文件
里面的path,填上我们实际的weblog-sample.log文件所在的path,注意这里要用绝对路径,不要用相对路径
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/logstash/logstash-7.3.0/weblog-sample.log
output.logstash:
hosts: ["localhost:9900"]
4.修改logstash的启动配置文件
相较于前面文章,修改的点如下:
- 修改logstash的input为beats
- 修改useragent 里面的source为user_agent
- 修改output,新增index,并且指定模板为前面下载的apache_template.json
input {
beats {
port => "9900"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
mutate {
convert => {
"bytes" => "integer"
}
}
geoip {
source => "clientip"
}
useragent {
source => "user_agent"
target => "useragent"
}
date {
match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
}
}
output {
stdout {
codec => dots {}
}
elasticsearch {
hosts => ["localhost:9200"]
user => "elastic"
password => "elastic"
index => "apache_elastic_example"
template => "/usr/local/filebeat/filebeat-7.3.0-linux-x86_64/apache_template.json"
template_name => "apache_elastic_example"
template_overwrite => true
}
}
5.启动logstash
bin/logstash -f logstash.conf
6.启动filebeat
bin/filebeat -e -c filebeat_logstash.yml
启动filebeat后,就可以看到控制台打印,已经开始读取数据了
7.Kibana查看
输入如下命令,查看索引
GET _cat/indices
可以看到,es中已经收集了weblog-sample.log中模拟的30万条数据。
4.结语
elk这系列的文章是比较潦草和急的,因为时间有限被中断了,我只能介绍出大致的用法,但是没有详细深入,后面有时间一定会把内容补上。