Logstash语法

1、 区段
{}定义区域
2、 数据类型
1) 希尔值 bool debug=>true
2) 字符串 string host=>”hostname”
3) 数值 number port=>514
4) 数组 array match=>[“datetime”,”linux”,”2020”] 数组支持倒序下标
5) 哈希 hash
options => {
key1 => “value1”
Key2 => “value2”
}
3、 字段引用
字段是Logstash:Event 对象的属性。
如:从geoip里获取longitude的值 [geoip][longitude][0]
Logstash支持变量内插,在字符串里使用引用 如:“dkdj%{[geoip][location][0]}”
4、 条件判断
If “_grokparsefailure” not in [tags] { }

Logstash命令行参数
1、-e 执行
2、–config或-f 配置
3、–configtest 或 –t 测试
4、–log或-l 设置存储日志路径
5、–filterworkers 或 –w 设置运行线程数
6、–pluginpath或-p 加载自己写的插件
7、–verbose 输出一定的调试日志 bin/logstash -v
8、–debug 输出更多的调试日志 bin/logstash –vv
Logstash插件
Bin/plugin list
Logstash后台启动
1、 nohup & 方式
2、 supervisord方式

Logstash插件配置
Discover_interval:Logstash每隔多久去检查一次被监听的path下是否有新文件,默认15秒
Exclude:不想被监听的文件可以排除出去
Sincedb_path:不想用默认的sincedb,可通过这个属性定义sincedb文件
Sincedb_write_interval:每隔多久写一次sincedb文件,15秒
Stat_interval:每隔多久检查一次被监听文件状态
Start_position:Logstash从什么位置开始读取文件数据,默认结束位置,类似tail –f,如果配置为“beginning”,则类似cat。此命令仅在该文件从未被监听过得时候起作用
Syslog输入
Collectd输入

Logstash过滤器
1、date时间处理 转换日志记录的时间字符串转存到@timestamp字段里
配置实例:logstash-filter-date插件支持五种时间格式
1)ISO8601 类似 “2011-04-19T03:44:01.103Z”
2)UNIX
3)UNIX_MS 从1970年始毫秒数
4)Joda-Time
2、grok 正则捕获
Patterns_dir选项指明路径
Remove_field用来删除掉message字段
Overwrite重写默认的message字段
3、高级用法
1)正则的多行匹配 在表达式开始位置加(?m)标记
2)多项选择,可用正则的数组
4、geoip地址查询
5、json编解码

Filter{ json{ source=>”message” target=>”jsoncontent”}}
6、 key-value切分
logstash-filter-kv插件
Logstash语法_第1张图片
Logstash语法_第2张图片

7、 metrics数值统计
logstash-filter-metrics插件
1) meter(速率阀值检测)
Logstash语法_第3张图片
2) timer示例

Logstash语法_第4张图片
8、 mutate数据修改
logstash-filter-mutate插件
1) 类型转换 可设置的转换类型有:integer、float、string
Filter{mutate{convert => [“request_time”,”float”]}}
2)字符串处理
Gsub:仅对字符串类型字段有效 gsub => [“urlparams”,”[\?#]”,”_”]
Split:分割字符串,filter{mutate{split => [“message”,”|”]}}
Join:仅对数组类型字段有效
Merge:合并两个数组或哈希字段
Strip:去除字段内容前后的空格
Lowercase:转小写
Uppercase:转大写
3) 字段处理
Rename:重命名某个字段
Update:更新某个字段的内容,字段不存在,不会新建
Replace:作用和update类似,字段不存在时,会自动添加新的字段
9、 ruby处理
Logstash语法_第5张图片
10、 split拆分事件
filter{split{field=>”message” terminator=>”#”}}
split插件中使用yield功能,会使split出来的新事件结束其在filter阶段的历程,split后面的其他filter插件不起作用,进入到output阶段
11、 elapsed (transaction)可以在错乱的多行日志中,根据connected字段、maxspan窗口、startswith/endwidth标签等信息计算出事件的duration和count结果。

Logstash语法_第6张图片

扩展方案
1、 通过redis队列扩展
1) 读取redis数据
Input{
Redis{
Data_type => “pattern_channel”
Key => “logstash-*”
Host => “192.168.0.2”
Port => 6379
Threads => 5
}
}
在这里插入图片描述
在这里插入图片描述
List类型
Logstash语法_第7张图片
同时在两个终端运行logstash-f redis-input-list.conf进程,在第三个终端启动redis-cli命令交互:RPUSH logstash-list “hello world”
修改batch_count的值可以实现批量推送RPUSH logstash-list “hello world” “hello world” “hello world” “hello world” “hello world” “hello world”
2)输出redis
Input{stdin{}}
Output{
Redis{
Data_type => “channel”
Key => “logstash-chan-%{+yyyy.MM.dd}”
}
}
在redis-cli命令行终端输入订阅 SUBSCRIBE logstash-chan-2014.08.08
在logstash终端输入hello world,切回redis终端可以看到信息

你可能感兴趣的:(logstash)