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插件
在这里插入图片描述
在这里插入图片描述

7、 metrics数值统计
logstash-filter-metrics插件
1) meter(速率阀值检测)
在这里插入图片描述
2) timer示例

在这里插入图片描述
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处理
在这里插入图片描述
10、 split拆分事件
filter{split{field=>”message” terminator=>”#”}}
split插件中使用yield功能,会使split出来的新事件结束其在filter阶段的历程,split后面的其他filter插件不起作用,进入到output阶段
11、 elapsed (transaction)可以在错乱的多行日志中,根据connected字段、maxspan窗口、startswith/endwidth标签等信息计算出事件的duration和count结果。

在这里插入图片描述

扩展方案
1、 通过redis队列扩展
1) 读取redis数据
Input{
Redis{
Data_type => “pattern_channel”
Key => “logstash-*”
Host => “192.168.0.2”
Port => 6379
Threads => 5
}
}
在这里插入图片描述
在这里插入图片描述
List类型
在这里插入图片描述
同时在两个终端运行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终端可以看到信息

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Logstash是一个开源的数据收集引擎,用于实时处理和转发日志和其他事件数据。它使用简单的配置文件来定义数据流的输入、过滤和输出。以下是Logstash的基本语法组成: 1. 输入插件(Input):用于从不同来源收集数据。常见的输入插件包括file(读取文件)、stdin(读取标准输入)、tcp(接收TCP数据)等。 2. 编码插件(Codec):用于解析和编码数据。它可以将数据从一种格式转换为另一种格式,例如将JSON数据解析为结构化数据。常见的编码插件包括json(解析JSON数据)、plain(纯文本编码)等。 3. 过滤器插件(Filter):用于对数据进行处理和转换。它可以根据条件过滤数据、添加字段、修改字段值等。常见的过滤器插件包括grok(通过正则表达式解析日志数据)、mutate(修改字段值)、date(解析日期字段)等。 4. 输出插件(Output):用于将处理后的数据发送到不同的目的地。常见的输出插件包括elasticsearch(发送数据到Elasticsearch)、stdout(输出到标准输出)、file(写入文件)等。 以下是一个示例配置文件,演示了Logstash的基本语法: ```shell input { file { path => "/var/log/nginx/access.log" start_position => "beginning" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } } output { elasticsearch { hosts => ["localhost:9200"] index => "nginx-access-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } } ``` 上述配置文件的含义是:从指定路径的文件中读取日志数据,使用grok插件解析日志数据,然后将处理后的数据发送到Elasticsearch,并在标准输出中打印调试信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值