单行匹配测试
cat > filebeat.yml << EOF
# 采集配置
filebeat.inputs: #收集日志
- type: log #类型
enabled: true #始终收集
paths:
- /tmp/test.log
# 匹配行,后接一个正则表达式列表,默认无,如果启用,则filebeat只输出匹配行,如果同时指定了多行匹配,仍会按照include_lines做过滤
include_lines: ['ERROR', '[DEBUG]']
# 输出配置
output.console:
pretty: true
EOF
cat > /tmp/test.log <<EOF
2017/06/22 12:05:10 [DEBUG] --------DEBUG---------------
2017/06/22 12:05:10 [INFO] ---------INFO---------------
2017/06/22 12:05:10 [ERROR] --------ERROR---------------
EOF
./filebeat -e -c filebeat.yml
"message": "2017/06/22 12:05:10 [ERROR] --------ERROR---------------",
"message": "2017/06/22 12:05:10 [DEBUG] --------DEBUG---------------",
多行匹配测试
cat > filebeat.yml <<EOF
# 采集配置
filebeat.inputs: #收集日志
- type: log #类型
enabled: true #始终收集
paths:
- /tmp/*.log
# 匹配行,后接一个正则表达式列表,默认无,如果启用,则filebeat只输出匹配行,如果同时指定了多行匹配,仍会按照include_lines做过滤
include_lines: ['\[ERROR\]','\[DEBUG\]']
multiline:
# 一个表示可以匹配多种模式使用or 命令也就是 '^<|^-|.{3}|^Cau'
pattern: '^\s'
# 默认是false,匹配pattern的行合并到上一行;true,不匹配pattern的行合并到上一行
negate: false
# 合并到上一行的末尾或开头
match: after
# 最多合并500行
max_lines: 500
# 5s无响应则取消合并
timeout: 5s
# 输出配置
output.console:
pretty: true
EOF
cat > /tmp/test.log <<EOF
2017/06/22 12:05:10 [DEBUG] --------DEBUG---------------
2017/06/22 12:05:10 [INFO] ---------INFO---------------
2017/06/22 12:05:10 [ERROR] --------ERROR---------------
at org.elasticsearch.index
at org.elasticsearch.index
at org.elasticsearch.index
at org.elasticsearch.index
2017/06/22 12:05:10 [INFO] ---------INFO---------------
EOF
./filebeat -e -c filebeat.yml
"message": "2017/06/22 12:05:10 [DEBUG] --------DEBUG---------------",
"message": "2017/06/22 12:05:10 [ERROR] --------ERROR---------------\n at org.elasticsearch.index\n at org.elasticsearch.index\n at org.elasticsearch.index\n at org.elasticsearch.index"