一、logstash 配置 grok
1、配置单个规则
这里的流程是直接用
logstash
分析input
源日志文件,然后处理日志数据fliter
,grok
,最后把数据输出input
到elasticsearch
中
匹配下面内容中的
client_ip
,method
,url
,duration
[2020-09-26 08:34:41] 127.0.0.1 GET local.test.com:8010/index/index/test?name=张三&id=9 0.412191
[ info ] 信息异常
grok
内容可以这么写:
input {
file {
...
}
}
filter {
grok {
match => {
"message"=>"[\s\S]*\]\s(?<client_ip>[0-9\.]+)\s(?<method>[A-Za-z]+)\s(?<url>[^\s]+)\s(?<duration>[0-9\.]+)[\s\S]*"
}
}
}
output {
...
}
2、配置多个规则
由于这里没做日志分割,所以写进es的记录是
每一行一条记录
,所以我们要匹配多种不同格式的日志。关于日志拆分,这个我用filebeat结合logstash来实现。
我们既要匹配 1 中的信息,又要匹配下面内容中的
sql
,sql_duration
[ SQL ] SHOW COLUMNS FROM `user` [ RunTime:0.074797s ]
grok
可以这么写
input {
file {
...
}
}
filter {
grok {
match => {
"message" => [
"[\s\S]*\]\s(?<client_ip>[0-9\.]+)\s(?<method>[A-Za-z]+)\s(?<url>[^\s]+)\s(?<duration>[0-9\.]+)[\s\S]*",
"\[\sSQL\s\]\s(?<sql>[\s\S]*)\[\sRunTime:(?<sql_duration>[0-9\.]+)"
]
}
}
}
output {
elasticsearch {
...
}
}
3、windows启动logstash
cd D:\ProgramFiles\ELK\logstash-7.2.0\bin
logstash.bat -f ../logstash_test.conf
- 配置文件
logstash_test.conf
写哪都可以,只要你能够正确指定。我的配置文件写在logstash-7.2.0 根目录
,也是bin 的同级目录
二、grok 在线调试
1、在线调试
[2020-09-26 08:34:41] 127.0.0.1 GET local.test.com:8010/index/index/test?name=张三&id=9 0.412191
[ info ] 信息异常
- 正则
[\s\S]*\]\s(?<client_ip>[0-9\.]+)\s(?<method>[A-Za-z]+)\s(?<url>[^\s]+)\s(?<duration>[0-9\.]+)[\s\S]*
- 结果
{
"client_ip": [
[
"127.0.0.1"
]
],
"method": [
[
"GET"
]
],
"url": [
[
"local.test.com:8010/index/index/test?name=张三&id=9"
]
],
"duration": [
[
"0.412191"
]
]
}
- 截图
2、kibana 中调试
如果你安装了 kibana
,也可以在 kibana
中调试
-
kibana首页
->Console
-
选择
Grok Debugger
三、相关文章
[ 文档 ]
[ 博客 ]