腾讯云 Elasticsearch 进阶篇(二十八)Logstash讲解与实战
原创本节我们接着上一节主题的来讲,在上面的章节中,我们将日志标准输入--标准输出后,发现日志,按照我们lostash配置文件的内容将Message日志分成了5个字段。那么我们来分析一下这个过滤输出结果:
输入 :日志内容 “192.168.1.111 [07/Feb/2019:16:24:19 +0800] \"GET / HTTP/1.1\" 403 5039”
输出结果如下:
那么我们分析一下这个字段内容,以及这段内容有没有什么问题??
1,我们发现这个字段内容里有message字段,而实际这个字段内容已经被分成了5个字段进行存储了,那么我们就不需要这个字段了。
2,从上面的输出内容中我们发现,还有一个问题,就是有两个时间戳问题。@timestamp 和 timestamp,这两个名词我们诠释一下: @timestamp表示logstash收集到这条信息的时间。就是说Logstash收集到日志后进行过滤开始的时间。而timestamp表示输入日志产生的时间,就是指这条日志产生的真实时间。那么,这两个时间我们需要哪条呢?显然,我们需要日志产生的时间。而不是收集日志的时间。但是我们在es上进行数据分析排序的时候,我们的字段是根据@timestamp来进行排序的。所以,我们要把timestamp里的时间字段的内容赋予给@timestamp时间字段。
所以,我们需要改一下配置文件 。如下
接下来,我们再次启动Logstash服务,输入日志,再次输出,看结果:
但是我们发现还有问题,就是@timestamp与timestamp时间现在相同了,所以,要去掉一个字段。怎么删除呢?还是需要改配置文件。如下:
那么这样,我们就将时间字段给删除了。我们看一下效果
那么以上,就是一个比较正确的结构化日志信息了。
二、时间插件(Date)
date插件是对于排序事件和回填旧数据尤其重要,它可以用来转换日志记录中的时间字段,变成LogStash::Timestamp对象,然后转存到 @timestamp 字段里,这在之前已经做过简单的介绍。我们的ELK系统中的时间信息是通过@timestamp来流转的。也就是说只有这个字段才是被认可的。
filter {
grok {
match => ["message", "%{HTTPDATE:timestamp}"]-------》将message字段的时间信息根据匹配模式分出时间为timestamp。
}
date {
match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]----》将timestamp字段经过右边的时间格式化后传给@timestamp字段
}
}
提供时间格式内容表 重点关注ZZ格式的意义
三、数据修改(Mutate)
(1)正则表达式替换匹配字段 关于mutate插件中gsub插件的示例
filter {
mutate {
gsub => ["filed_name_1", "/" , "_"]
}
}
这个示例表示将filed_name_1字段中所有"/"字符替换为"_"。
对message中的内容中的所有/下划线全部换成_.我们看一下结果:
(2)分隔符分割字符串为数组
split可以通过指定的分隔符分割字段中的字符串为数组,下面是一个关于mutate插件中split的示例(仅列出filter部分):
filter {
mutate {
split => ["filed_name_2", "|"]
}
}
这个示例表示将filed_name_2字段以"|"为区间分隔为数组。
好,看一下配置文件:
我们接下来输入这个日志: 192.168.1.111 |[07/Feb/2019:16:24:19 +0800]| \"GET| / HTTP/1.1\" |403 5039
看输出:
这就是分隔符的功能。对字段的内容进行分隔,形成数组。
(3)rename重命名
filter {
mutate {
rename => { "old_field" => "new_field" }
}
}
(4)删除字段
remove_field可以实现删除某个字段的功能,下面是一个关于mutate插件中remove_field的示例(仅列出filter部分):
filter {
mutate {
remove_field => ["timestamp"]
}
}
(5)GeoIP 地址查询归类
GeoIP是最常见的免费IP地址归类查询库,当然也有收费版可以使用。GeoIP库可以根据IP 地址提供对应的地域信息,包括国别,省市,经纬度等,此插件对于可视化地图和区域统计非常有用。
下面是一个关于GeoIP插件的简单示例(仅列出filter部分)::
filter {
geoip {
source => "ip_field"
}
}
其中,ip_field字段是输出IP地址的一个字段。
四、总结
那么本节我们讲了Logstash filter插件的 Date Mutate插件,包括前面的grok插件,我们已经讲完了3个最实际常用的插件。那么,希望大家多去动手实际操作一下,非常重要。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
社区
活动
资源
关于
腾讯云开发者
扫码关注腾讯云开发者
领取腾讯云代金券
热门产品
热门推荐
更多推荐
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287