作者:邹昕明 | 来源:互联网 | 2023-05-17 14:37
Logstash插件开发介绍
本次文档一共分为3部分,分别为下面3个部分,并且会附上不同的参考文档
- Logstash输入插件介绍
- Filter插件开发详解
- 开发过程遇到一些问题总结
logstash介绍
Logstash 是一款强大的数据处理工具,它可以实现数据传输,格式处理,格式化输出,还有强大的插件功能,常用于日志处理。其工作流程如下:
它处理数据有3个阶段
input 数据输入端,可以接收来自任何地方的源数据
Filter 数据中转层,主要进行格式处理,数据类型转换、数据过滤、字段添加,修改等,常用的过滤器如下
output 是logstash工作的最后一个阶段,负责将数据输出到指定位置,兼容大多数应用
安装下载参考文档:http://blog.csdn.net/u010246789/article/details/52086799
注意:在window中,用bin/logstash.agent -f logstash 命令来启动logstash
Logstash插件介绍
FileInput插件是经常用到的输入插件,主要从文本中提取数据,然后经过一系列的Filter插件过滤和处理后,把数据再传递到Output插件,然后对数据进行输出,这主要介绍FilterInput插件的配置参数,可以参照官网。
配置参数 |
示例 |
详解 |
path |
path => [“/var/log/nginx/access.log”],path => “/var/log/nginx/*.log” |
文件源,可以检测若干文件,String或者数组类型 |
codec |
codec=>plain{charset=>”UTF-8”} |
codec插件,默认是plain,可以设置编码格式 |
discover_interval |
discover_interval=>20 |
检查一次被监听的path下是否有新文件,默认值是15秒 |
exclude |
exclude=>”Message.log”,exclude=>[1.log,*.txt] |
排除不需要监测的文件,string或者数组类型 |
sincedb_path |
sincedb_path=>”/home/hadoop/1.txt” |
记录处理文件的位置,默认为$HOME/.sincedb,如果设置为:/dev/null,则代表忽略检测位置 |
stat_interval |
stat_interval=>10 |
隔多久检查一次被监听文件状态,默认1秒 |
start_position |
start_position=>”beginning”,start_position=>”end” |
logstash从什么位置开始读取文件数据,配置为[beginning,end]中的一个,默认是结束位置 |
tags |
tags=>”logstash” |
标记,一个字段 |
close_order |
close_order=>3600 |
文件输入会关闭上一次读取指定时间间隔的文件。 这取决于文件是否被拖尾或读取,具有不同的含义。 如果拖尾,并且输入数据中存在大的时间间隔,则可以关闭文件(允许打开其他文件),但在检测到新数据时将排队等待重新打开。 如果读取,文件将在从最后一个字节读取后的closed_older秒后关闭。 默认值为1小时 |
delimiter |
delimiter=>”\n” |
读取事件的分割,默认是’\n’,也就是以一行为一个事件 |
sincedb_write_interval |
sincedb_write_interval=>10 |
多久写一次读取位置的文件,就是是sincedb_path,默认15秒 |
这个是FileInput插件读取的详细参数
下面来介绍几个常用到的Filter插件
KV插件
KV插件设置一定的格式,来读取字段中的键值对
其中有两个比较重要的参数,如下:
field_split为两个键值对间的分隔符,而value_split则是两个key,value之间的分隔符
若要切割的字段如下:
message=”messagid=123&name=logstash”
kv的配置如下:
kv{
source=>”message”
field_split =>”&”
value_split =>”=”
}
则message会把切割成
messageid=”123”
name=”logstash”
multiline插件
mutile插件的主要作用是根据正则表达式,把多条事件合并或者切割成一条,详细了解请点击:mutiline插件详解:http://www.cnblogs.com/liuning8023/archive/2016/06/01/5549366.html
mutate插件
mutate插件可以把一些字符串替换成别的字符串,通过gsub来实现。或者通过split来切割不同的字符串
mutate {
gsub=>[“message”, “\n”, “$”]
split=>[“message”,”keyword”]
}
这样配置,message会把message字段中的\n替换成$,并且根据keyword把messageqi切割字符串,通过[message][0],[message][1]来获取字段。
Output插件WebHDFS介绍
webhdfs插件主要是把日志上传到HDFS文件系统中,其格式为:
webhdfs{
host => “127.0.0.1”
port => 50070
user => “hadoop”
path => “/logstash/data”
codec => plain
{
charset=>”UTF-8”
format=>”%{message}”
}
}
下一篇将介绍插件的详细开发步骤