ELK之Logstash配置文件详解
2024-09-04 21:40:27
Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力。它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地。它以插件的形式来组织功能,通过配置文件来描述需要插件做什么,配置文件主要由input、filter和output三部分组成。
一、input
负责从数据源提取数据,由于我提取的是日志文件,所以使用的是file插件,该插件常用的几个参数是:
- path:指定日志文件路径。
- type:指定一个自定义名称,设置type后,可以在后面的filter和output中对不同的type做不同的处理,适用于需要消费多个日志文件的场景。
- start_position:指定起始读取位置,“beginning”表示第一次启动从文件头开始读取,后面动态读取;“end”表示从文件尾开始(类似tail -f)。
- sincedb_path:sincedb_path 指定sincedb文件的路径。sincedb保存每个日志文件已经被读取到的位置,如果Logstash重启,对于同一个文件,会继续从上次记录的位置开始读取。如果想重新从头读取文件,需要删除sincedb文件。如果设置为“/dev/null”,即不保存位置信息。
二、 output
负责输出数据,改部分也有提供丰富的插件。 以es为例,需要指定es接收数据的地址和端口,以及日志存入的index 名称。
# 输出到es
output{
elasticsearch{
hosts => ["192.168.1.3:9200"]
index => "log-%{+YYYY.MM.dd}"
}
}
三、filter
负责通过配置插件来解析、处理日志数据。插件介绍
- grok:用于将非结构化的文本数据转化为结构化的数据,内部使用正则语法对文本数据进行匹配,为了降低使用复杂度,其提供了一组pattern,我们可以直接调用pattern而不需要自己写正则表达式,参考源码grok-patterns。也可以使用工具Grok Debugger可以对解析语法进行调试。
- kv:用于将某个字段的值进行分解,类似于编程语言中的字符串Split。在下面的配置中,我们将request_args字段值按照“&”进行分解,分解后的字段名称以“request_args_”作为前缀,并且丢弃重复的字段。
- geoip:用于根据IP信息生成地理位置信息,默认使用自带的一份GeoLiteCity database,也可以自己更换为最新的数据库,但是需要数据格式需要遵循Maxmind的格式(参考GeoLite),似乎目前只能支持legacy database,数据类型必须是.dat。下载GeoLiteCity.dat.gz后解压, 并将文件路径配置到source中即可。
- translate,用于检测某字段的值是否符合条件,如果符合条件则将其翻译成新的值,写入一个新的字段,匹配pattern可以通过YAML文件来配置。
最新文章
- [LeetCode] Delete Duplicate Emails 删除重复邮箱
- winform常用的属性(listview),常用容器(二者结合)
- (转,有改动)测试网页响应时间的shell脚本[需要curl支持]
- int,long,unsigned的值范围
- CAniamtion 基本使用
- 远程桌面连接不上|windows server 2003 sp2 termdd.sys(转载)
- JS基础语法
- ASP.NET MVC Model验证总结【转】
- activeMQ设置admin的用户名和密码
- IOS7 自定义UIBarButtonItem 的一些问题
- 用SQL脚本移除视图中存在的机器名
- 属性——AddComponentMenu
- Spring上传文件,图片,以及常见的问题
- MySql 使用规范推荐
- Microsoft SQL Server 双机热备份,实时同步
- 从零开始学习微信小程序
- 面试题:常用的http状态码
- Linux Shell自动交互/人机交互的三种方法
- 分布式系统session一致性的问题
- 003-hive安装