elk笔记5.2--logstash使用
1 介绍
logstash 资源充足的情况下,每个logstash示例采集|消费指定的日志,然后写入到特定索引中即可。
logstash 不充足的情况下,可能需要在一个logstash 中处理多个日志,并写入到多个索引中。本文介绍两种处理方式,方式一为通过type字段处理多种日志,方法二为使用多个pipeline处理日志。
2 使用案例
2.1 通过type隔离多个索引
正常情况下logstash 读取了多个配置后,如果不加type进行分类隔离,那么其写入可能会比较混乱,因此实际中每个配置最好把索引前缀作为其type。
-
在 /home/xg/soft/bigdata/elk6.8.8/pipeline/configs 目录新建 dmsg.conf elastic.conf syslog.conf 等3个配置文件,具体内容如下:
vim dmsg.con input{ file{ path => "/var/log/dmesg" type => "dmesg" start_position => "beginning" } } filter{ } output{ if [type] == "dmesg" { elasticsearch { hosts => ["127.0.0.01:9200"] index => "dmesg-%{+YYYY.MM.dd}" } } } vim elastic.conf input{ file{ path => "/home/xg/soft/bigdata/log/testlog/elastic.log" type => "elastic_log" start_position => "beginning" } } filter{ if [type] == "elastic_log" { grok { match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" } } } } output{ if [type] == "elastic_log" { #stdout{} elasticsearch { hosts => ["127.0.0.01:9200"] index => "elastic_log-%{+YYYY.MM.dd}" } } } vim syslog.conf input{ file{ path => "/var/log/syslog" type => "syslog" start_position => "beginning" } } filter{ } output{ if [type] == "syslog" { elasticsearch { hosts => ["127.0.0.01:9200"] index => "syslog-%{+YYYY.MM.dd}" } } }
-
通过-f configs 目录来加载logstash配置文件
$ bin/logstash -f /home/xg/soft/bigdata/elk6.8.8/pipeline/configs
logstash 正常启动后会加载上述3个配置文件,采集日志并上传到es中。
如下图所示,日志正常采集到3个索引中:
2.2 通过pipeline隔离多个索引
to add
3 注意事项
- 使用-f configs 的方式加载多个配置时,需要设置type,否则解析的日志和写入的索引可能会变得混乱,即dmsg 日志可能写到syslog索引中,反之亦然。
- logstash 执行后stdout输出很多解析信息
默认情况下logstash 容器中有个 logstash.conf ,其会输出 stdout信息,因此需要删除该文件,或者覆盖掉该文件。vim Dockerfile FROM docker.elastic.co/logstash/logstash:7.10.2 RUN rm /usr/share/logstash/pipeline/logstash.conf COPY ./dtp_quarantine_k8s_log.conf /usr/share/logstash/pipeline/dtp_quarantine_k8s_log.conf
- 多pipeline 注意事项
to add
4 说明
测试elk版本: elk 6.8.8
1. logstash配置文件详解
2. guide/en/logstash/current/index.html