ELK日志采集系统构建实战(十七)

本文详细介绍ELK日志采集系统的构建过程,包括配置Logstash采集日志、使用grok插件解析日志并存储到Elasticsearch。通过具体步骤展示如何实现日志的结构化存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ELK日志采集系统构建实战讲解,让小伙伴更深入的理解ELK。
1、首先确保服务器已经运行了 ES 集群
 
 
2、确保服务器上已经安装部署了 logstash
 
 
3、在 Logstash 安装路径下的 config 目录中,新建一个 conf 文件,取名为 es_log.conf,并且填入以下内容:
 
 
input {
file {
path => "/home/elk/elk/teaching/elasticsearch-7.7.0/logs/my-elk.log"
start_position => "beginning"
codec => multiline {
pattern => "^\["
negate => truewhat => "previous"
    }
  }
}
output {
elasticsearch {
hosts => ["http://172.18.194.140:9200"]
index => "es-log-%{+YYYY.MM.dd}"
  }
stdout{}
}
4、进入 Logstash bin 目录执行 ./logstash -f ../config/es_log.conf
5、控制台会输出:
 
 
 
6、我们到浏览器查询:
 
 
发现 ES 中确实创建了一个索引 es-log-2020.07.08
7、在 ES 中查询这个索引的内容
 
8、仔细检查存入的日志内容,发现日志信息是作为整体存入 message 字 段的:
 
 
有没有办法存入的更细粒些呢?
9、仔细分析 es 的日志,呈现了一定的结构化特征:
 
总是: “[时间戳][日志级别][输出信息的类名][节点名]具体的日志信息 ”这种格式,所以我们完全可以考虑使用过滤器插件对文本进行分析后再存 入 es,怎么分析?可以用 grok 过滤器。
10、 在 Logstash 安装路径下的 config 目录中,新建一个 conf 文件,取名 为 log_grok.conf,并且填入以下内容:

input {
file {
path => "/home/elk/elk/teaching/elasticsearch-7.7.0/logs/my-elk.log"
start_position => "beginning"
codec => multiline {
pattern => "^\["
negate => true
what => "previous"
      }
   }
}
filter{
grok {
match => {message =>
"\[%{TIMESTAMP_ISO8601:time}\]\[%{LOGLEVEL:level}%{SPACE}\]\[%{NOT
SPACE:loggerclass}%{SPACE}\]%{SPACE}\[%{DATA:nodename}\]%{SPACE}
%{GREEDYDATA:msg}"
     }
  }
}
output {
stdout{}
}
11、如果担心自己写的 conf 有语法问题,可以执行 ./logstash -f xxxxxxx.conf -t 检查 conf,当然只能检查语法,不能检查诸如
正则表达式是否正确这类问题。

12、执行./logstash -f ../config/log_grok.conf,如果发现程序没有输出,有 可能是 elk 的日志文件已经被处理过,logstash 不会重复处理,这时可以到 logstash 的/data/plugins/inputs/file 目录下,删除.sincedb 文件(这个文件是个 隐藏文件),再执行。

 

 
可以看见,每条日志已经成功的被解析了。
13、现在考虑如何存入 es,按照原来的

 

定义好索引的 mapping(映射),注意要和我们对日志的分解一一对应。

14、创建一个新的 conf 文件,取名 es_log_grok.conf,内容如下:

input {
file {
path => "/home/elk/elk/teaching/elasticsearch-7.7.0/logs/my-elk.log"
start_position => "beginning"
codec => multiline {
pattern => "^\["
negate => true
what => "previous"
      }
   }
}
filter{
grok {
match => {
message =>
"\[%{TIMESTAMP_ISO8601:time}\]\[%{LOGLEVEL:level}%{SPACE}\]\[%{NOT
SPACE:loggerclass}%{SPACE}\]%{SPACE}\[%{DATA:nodename}\]%{SPACE}
%{GREEDYDATA:msg}"
       }
   }
}
output {
elasticsearch {
hosts => ["http://172.18.194.140:9200"]
index => "es-log-text-%{+YYYY.MM.dd}"
template_name => "es_template*"
template => "/home/elk/elk/teaching/logstash-7.7.0/config"
}
stdout{}
}
主要是在 elasticsearch 插件中增加了对刚才新增的 json 文件的读取。
15、执行./logstash -f ../config/es_log_grok.conf,会看到控制台的输出,同 时在浏览器中,也会看到解析后的日志:

ELK实战demo到此结束,下一篇我们分析es的性能优化策略,敬请期待。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寅灯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值