elk -10-
<!--more-->
承前基础Logstash配置再战message一个不确定的方案总结
本日状态:
800次的尝试...
回答昨天的问题.
之前贴的Zookeeper和Kafka和配置文件都没有映射磁盘, 所以重启容器会掉配置, 比如Kafka的topic.
做个不恰当的比喻, 使用容器就像在别人公司里做外包, 要时刻警惕自己和别人不一样. 虽然基于端口和磁盘的映射, 使得很多操作都和本地应用相同. 但本质还是在不同的服务器中的.
想明白这一点, 对处理复杂的容器间网络问题特别有帮助.
Logstash 的配置在整个ELK项目中都算比较难的. 这里先放一个比较简单的配置, 再增加配置演示效果.
修改 config/logstash/pipeline/logstash.conf 文件
input
kafka
type =>"nglog"
topics =>"nglog"
bootstrap_servers=> "kafka:9092"
group_id =>"nglog1"
auto_offset_reset=> latest
codec =>"json"
# 输入
filter
if "nglog" type ==
grok
match => "message" => "%{COMBINEDAPACHELOG}"
remove_field =>"message"
# 过滤
output
if 'nglog' type ==
elasticsearch
hosts =>"es01:9200"
index =>"logstash-nglog-%{+YYYY.MM.dd}"
stdout codec =>rubydebug
# 输出
内容主要分三部分, 输入, 过滤和输出. 输入和输出之前都聊过了, 这次我们主要讲过滤.
这次的配置很简单, 输入部分定义了一种日志类型 nglog, 过滤部分设置如果匹配到 nglog 类型就开始工作. 然后输出部分, 如果匹配到 nglog 类型就发送给ES, 同时指定了ES里的索引名称.
重点是中间过滤部分, grok 是一个插件, 把非结构数据(日志)转化为结构化数据. 我们在ELK上看到的多个纬度筛选日志, 都是基于这一点出来的.
上面配置中, grok 模块的功能是. 如果日志匹配 APACHE日志的组合类型, 就删除原有字符串, 只保留过滤后的字段.
不过因为我们信息不是一手的, 夹杂了Filebeat的字段, 所以这个变量其实是不生效的, 坑之一.
上一节因为源头不纯, 导致信息过滤失败了, 这次我们重新设定一下.
filter {
if [type] == "nglog"{
grok {
match => {"message" => "%{COMBINEDAPACHELOG}" }
remove_field =>"message"
}
date {
match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
target => "@timestamp"
remove_field => ["timestamp", "offset", "message"]
}
}
}
这里增加了 date 模块, 关于date模块的导入其实还有另一个原因. ELK里默认的时间戳是输入时间戳.
注意 例如你之前有很多旧的日志, 一起被导入ELK中, 它们的时间戳就会变成一样的, 都指向导入ELK的时间. 所以一般都会自行重新解析时间戳.
不过我们本节的主题不是这个, 请注意最后一条语句, 删除时间戳, 偏移和 原始信息. 下面演示一下效果:
这是未删除之前的字段, 注意最长的那个.
这是加入 remove_field 命令后的结果, 一目了然了吧.
说Logstash 的配置比较难, 不光是指过滤规则难, 最要命的是规则有问题这东西就会 down 掉. 然后修改配置后, 启动实在是太慢慢慢了...
基于这一点, 有人提供了一个解决方案, 但我没有实验成功. 也可能是因为我用的容器, 有其他状况影响. logstash 修改配置不重启的方法:
# 修改好 .yml配置后
ps -ef | grep logstash # 找到pid号
kill -1 <pid> # 据说,logstash 会重新加载配置
有环境的同学可以自己实验一下, 如果成功了,千万要告诉我, 重启这玩意太烦了.
明天的章节会解析 grok 的工作原理, 再后面的章节会带领大家制作各种图表, 然后拼接出自己的 Dashboards 页面. 敬请参与.
今天有一个重大的改变, 本公众号的排版换掉了. 陪伴诸君 80 期的小恐龙终于被换下了, 感觉蛮怀念它的.
如果您觉得这个新排版不错, 请一定要推荐给您的好友. 用户的关注是我坚持输出的动力, 谢谢.
继续发起一个持续一周投票, 请帮忙确认一下下个系列的主题.
劳烦各位看官老爷动动手指, 感激不尽 ^_^
很多朋友说 「你文章这么短, 我看完感觉很有道理, 但似乎又没学到太多东西.」
抱歉, 现在每天 1000 字对 yann 来说已经是很重的负担, 前三周也有两三天通宵的经历. 所有内容都经过亲自验证, 哪怕只学到了一个点, 也是经验.
之前 yann 注意到自己收藏了很多万字的干货文章. 手机上看不完, 记不住. 存下来就这么一年两年过去了... 所以那怕学会一点也是进步, 想到就去做!
专题系列文章分享ing.
系列 程序员学点xx ELK
[" 黄金广告位不租! "]
获取代码
点亮花花, 让我多坚持一天