【发布时间】:2018-10-31 05:15:55
【问题描述】:
我想启动 ELK 堆栈,用于从我的所有网络设备(Cisco、F5、华为、CheckPoint 等)收集 syslog。在试验 Logstash 的同时,编写 grok 模式。
以下是来自 Cisco ASR 的消息示例:
10 月 30 日 16:30:10 evlogd:[local-60sec10.950] [cli 30000 调试] [8/0/30501 cliparse.c:367] [上下文:本地,上下文 ID:1] [软件internal system syslog] CLI command [user root, mode [local]ASR5K]: show ims-authorization policy-control statistics\u0000
10 月 30 日 16:30:10 evlogd:[local-60sec10.959] [cli 30005 info] [8/0/30501 _commands_cli.c:1792] [software internal system syslog] CLI 会话已结束,用于安全性设备 /dev/pts/7\u0000 上的管理员 root
10 月 30 日 16:30:10 evlogd: [local-60sec10.981] [snmp 22002 info] [8/0/4550 trap_api.c:930] [软件内部系统 syslog] 内部陷阱通知 53 ( CLISessEnd) 用户 root 权限级别 安全管理员 ttyname /dev/pts/7\u0000
10 月 30 日 16:30:12 evlogd:[local-60sec12.639] [cli 30004 info] [8/0/30575 cli_sess.c:127] [software internal system syslog] CLI 会话已为安全性启动来自 192.168.1.1\u0000 的设备 /dev/pts/7 上的管理员 root
10 月 30 日 16:30:12 evlogd: [local-60sec12.640] [snmp 22002 info] [8/0/30575 trap_api.c:930] [软件内部系统 syslog] 内部陷阱通知 52 ( CLISessStart) 用户 root 权限级别 安全管理员 ttyname /dev/pts/7\u0000
<%{POSINT:syslog_pri}>%{DATA:month} %{DATA:monthday} %{TIME:time} %{WORD:device}: \[%{WORD:facility}\-%{HOSTNAME}\] \[%{WORD:service} %{POSINT} %{WORD:priority}\] \[%{DATA}\] ?(\[context: %{DATA:context}, %{DATA}\])?%{SPACE}?(\[%{DATA}\] )%{GREEDYDATA:message}\\u0000
但我简单的logstash 配置返回标签_grokparsefailure(或_grokparsefailure_sysloginput,如果我在syslog 输入插件中使用GROK),并且不解析我的日志。
使用 GROK 过滤器配置
input { udp {
port => 5140
type => syslog } }
filter {
if [type] == "syslog" {
grok {
match => ["message", "<%{POSINT:syslog_pri}>%{DATA:month} %{DATA:monthday} %{TIME:time} %{WORD:device}: \[%{WORD:facility}\-%{HOSTNAME}\] \[%{WORD:service} %{POSINT} %{WORD:priority}\] \
[%{DATA}\] ?(\[context: %{DATA:context}, %{DATA}\])?%{SPACE}?(\[%{DATA}\] )%{GREEDYDATA:response}\\u0000"]
}
}
}
output { stdout { codec => rubydebug } }
输出:
{
"@version" => "1",
"host" => "172.17.0.1",
"@timestamp" => 2018-10-31T09:46:51.121Z,
"message" => "<190>Oct 31 15:46:51 evlogd: [local-60sec51.119] [snmp 22002 info] [8/0/4550 <sitmain:80> trap_api.c:930] [software internal system syslog] Internal trap notification 53 (CLISessEnd) user kiwi privilege level Security Administrator ttyname /dev/pts/7\u0000",
"type" => "syslog",
"tags" => [
[0] "_grokparsefailure"
]
}
配置 syslog-input-plugin:
input {
syslog {
port => 5140
grok_pattern => "<%{POSINT:syslog_pri}>%{DATA:month} %{DATA:monthday} %{TIME:time} %{WORD:device}: \[%{WORD:facility}\-%{HOSTNAME}\] \[%{WORD:service} %{POSINT} %{WORD:priority}\] \[%{DATA
}\] ?(\[context: %{DATA:context}, %{DATA}\])?%{SPACE}?(\[%{DATA}\] )%{GREEDYDATA:response}\\u0000"
}
}
output {
stdout { codec => rubydebug }
}
输出:
{
"severity" => 0,
"@timestamp" => 2018-10-31T09:54:56.871Z,
"@version" => "1",
"host" => "172.17.0.1",
"message" => "<191>Oct 31 15:54:56 evlogd: [local-60sec56.870] [cli 30000 debug] [8/0/22400 <cli:8022400> cliparse.c:367] [context: local, contextID: 1] [software internal system syslog] CLI command [user kiwi, mode [local]ALA3_ASR5K]: show subscribers ggsn-only sum apn osmp\u0000",
"tags" => [
[0] "_grokparsefailure_sysloginput"
],
}
我做错了什么?有人可以帮忙解决吗?
PS 在 logstash 2.4.1 和 5 上测试
【问题讨论】:
-
顺便说一句,无法在线看到这些模式。