如何使用 logstash 解析系统日志消息
How to parse syslog message using logstash
嗨,我有一个由两个事件组成的系统日志
Jul 6 13:24:27 NODE1 zeus.eventd[14176]: pools/POOL nodes/IP:3000 nodefail Node NODE2 has failed - A monitor has detected a failure
Jul 6 13:24:34 NODE1 zeus.eventd[14176]: pools/POOL nodes/IP:3000 nodeworking Node NODE2 is working again
我想从系统日志中提取 NODE2 并将其添加为索引中的字段以及 nodefail/nodeworking
目前我的input/grok是
syslog {
grok_pattern => "%{SYSLOGLINE}"
}
没有过滤器,但是我需要的所有信息都填充在“消息”字段中,所以我无法在弹性中使用它
我知道我想要在 syslog 行中的位置我只需要将其拉出并将其添加为一个字段
有人能告诉我实现此目标所需的 input/filter 配置吗?
谢谢,
TheCube
编辑:消息字段如下所示:
zeus.eventd 14176 - - SERIOUS pools/POOL nodes/IP:3000 nodefail Node NODENAME has failed - A monitor has detected a failure
zeus.eventd 14176 - - INFO pools/POOL nodes/IP:3000 nodeworking Node NODENAME is working again
您可以在使用 %{SYSLOGLINE}
解析时创建的消息字段上使用 dissect filter plugin:
dissect {
mapping => {
"message" => "%{} %{} %{status} %{} %{node_name} %{}"
}
}
或第二个 grok 过滤器,应用于使用 %{SYSLOGLINE}
解析时创建的消息字段,具有以下模式:
^pools/POOL nodes/IP:\d+ %{WORD:status} Node %{WORD:node_name}
在这两种情况下,根据您问题中给出的日志,您会得到这些结果:
"status":"nodefail"
"node_name":"NODE2"
"status":"nodeworking"
"node_name":"OFSVDBM101"
嗨,我有一个由两个事件组成的系统日志
Jul 6 13:24:27 NODE1 zeus.eventd[14176]: pools/POOL nodes/IP:3000 nodefail Node NODE2 has failed - A monitor has detected a failure
Jul 6 13:24:34 NODE1 zeus.eventd[14176]: pools/POOL nodes/IP:3000 nodeworking Node NODE2 is working again
我想从系统日志中提取 NODE2 并将其添加为索引中的字段以及 nodefail/nodeworking
目前我的input/grok是
syslog {
grok_pattern => "%{SYSLOGLINE}"
}
没有过滤器,但是我需要的所有信息都填充在“消息”字段中,所以我无法在弹性中使用它
我知道我想要在 syslog 行中的位置我只需要将其拉出并将其添加为一个字段
有人能告诉我实现此目标所需的 input/filter 配置吗?
谢谢,
TheCube
编辑:消息字段如下所示:
zeus.eventd 14176 - - SERIOUS pools/POOL nodes/IP:3000 nodefail Node NODENAME has failed - A monitor has detected a failure
zeus.eventd 14176 - - INFO pools/POOL nodes/IP:3000 nodeworking Node NODENAME is working again
您可以在使用 %{SYSLOGLINE}
解析时创建的消息字段上使用 dissect filter plugin:
dissect {
mapping => {
"message" => "%{} %{} %{status} %{} %{node_name} %{}"
}
}
或第二个 grok 过滤器,应用于使用 %{SYSLOGLINE}
解析时创建的消息字段,具有以下模式:
^pools/POOL nodes/IP:\d+ %{WORD:status} Node %{WORD:node_name}
在这两种情况下,根据您问题中给出的日志,您会得到这些结果:
"status":"nodefail"
"node_name":"NODE2"
"status":"nodeworking"
"node_name":"OFSVDBM101"