-
语法:
http://doc.yonyoucloud.com/doc/logstash-best-practice-cn/filter/grok.html
-
文本:
NOTICE: 2021-04-28 12:44:44 /root/gopath/pkg/mod/icode.baidu.com/baidu/gdp/gdp@v1.1.1-0.20190530102336-689961a086a1/weblogware.go:43 logid[4290488817] err[0] api[game_page_card_list] status[200] appkey[] req_app[] appname[ms-game] cost[740.273] errno[0] errmsg[success] protocol[http] idc[test] client_ip[172.22.196.90] local_ip[10.12.75.61] pid[8305] method[get] uri[/game/page/card_list?card_ids=1089] host[10.12.75.61:8500] refer[] optime[1619585083738] cookie[] tipmsg[]
-
正则:
(?<level>\S+): (?<time>(?<date>\d+-\d+-\d+) \d+:\d+:\d+).*logid\[(?<logid>\d+)\].*err\[(?<err>\d+)\].*api\[(?<api>\w+)\].*status\[(?<status>\w+)\].*appname\[(?<appname>.*?)\].*cost\[(?<cost>.*?)\].*errno\[(?<errno>\d+)\].*idc\[(?<idc>\w+)\].*client_ip\[(?<client_ip>.*?)\].*local_ip\[(?<local_ip>.*?)\].*method\[(?<method>\w+)\].*uri\[(?<uri>.*\?(?<param>.*))\].*host\[(?<host>.*?)\].*
-
input:控制台输入。
-
filter:正则提取及类型转换。
-
output:输出到Es和控制台。
-
配置文件:
input {stdin{}}
filter {
grok {
match => {
"message" => "(?<level>\S+): (?<time>(?<date>\d+-\d+-\d+) \d+:\d+:\d+).*logid\[(?<logid>\d+)\].*err\[(?<err>\d+)\].*api\[(?<api>\w+)\].*status\[(?<status>\w+)\].*appname\[(?<appname>.*?)\].*cost\[(?<cost>.*?)\].*errno\[(?<errno>\d+)\].*idc\[(?<idc>\w+)\].*client_ip\[(?<client_ip>.*?)\].*local_ip\[(?<local_ip>.*?)\].*method\[(?<method>\w+)\].*uri\[(?<uri>.*\?(?<param>.*))\].*host\[(?<host_addr>.*?)\].*"
}
}
mutate {
convert => ["err", "integer"]
convert => ["errno", "integer"]
convert => ["status", "integer"]
convert => ["cost", "float"]
remove_field => ["path", "host","@timestamp","message"]
}
}
output {
elasticsearch {
hosts => "http://10.12.75.61:8920"
index => "logxxx"
document_id => "%{id}"
}
stdout {}
}