LogStash filter介绍(九)

时间:2023-03-08 16:27:32

LogStash plugins-filters-grok介绍

官方文档:https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html

常用于对日志的拆分,如apache日志

grok利用正则表达式进行匹配,拆分日志。它提供一些常用的预定义的正则表达式名称,用于直接匹配。

预定义文件路径 /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-2.0.5/patterns

grok-patterns文件包含apache预定义。

logstash所有预定义的可以通过 如下地址查看

https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns

自己写的规则可以通过如下地址,做debug测试

http://grokdebug.herokuapp.com/

grok插件使用

1)标准输入、标准输出

input {
stdin {}
} filter {
grok {
match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
}
} output{
stdout{
codec => rubydebug
}
}

启动/opt/logstash/bin/logstash -f /etc/logstash/conf.d/grok.conf

输入测试数据 55.3.244.1 GET /index.html 15824 0.043

LogStash filter介绍(九)

apache日志收集

本示例为收集默认的apache日志,如果自定义apache日志格式,需要编写自定义的正则表达式,通过grok进行匹配

1、标准输出

input {
file {
path => "/etc/httpd/logs/access_log"
start_position => "beginning"
}
} filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
} output{
stdout{
codec => rubydebug
}
}

启动/opt/logstash/bin/logstash -f /etc/logstash/conf.d/grok_apache.conf

LogStash filter介绍(九)

2、elasticsearch插件输出

input {
file {
path => "/etc/httpd/logs/access_log"
start_position => "beginning"
}
} filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
} output{
elasticsearch {
hosts => ["192.168.137.11:9200"]
index => "apache-accesslog-%{+YYYY.MM.dd}"
}
}

启动/opt/logstash/bin/logstash -f /etc/logstash/conf.d/grok_apache.conf

LogStash filter介绍(九)