如果语句不适用于grok过滤器logstash

问题描述 投票:0回答:1

问题

我正在尝试学习logstash并使用条件语句来解析grok。日志在if语句外部成功解析,但在该语句内部未解析任何内容。好像grok没看懂表情。

目标

[2020-01-09 08:32:46]详细信息[18962] [C-0000ceae] pbx.c:执行[s @ macro-dialout-trunk:26] NoOp(“ PJSIP / 3513-0001108e”,“由于新堆栈中的DIALSTATUS = BUSY和HANGUPCAUSE = 19“),拨号由于某种原因失败

filter
{
    grok
    {
        match =>
        {
            "message" => "\[%{TIMESTAMP_ISO8601:log_timestamp}\] +(?<log_level>(?i)(?:debug|notice|warning|error|verbose|dtmf|fax|security)(?-i))\[%{INT:thread_id}\](?:\[%{DATA:call_thread_id}\])? %{DATA:module_name}\: %{WORD:action}\s\[%{DATA:TARGET}@%{DATA:dialplan_context}:%{DATA:dialplan_priority}\]\s%{GREEDYDATA:log_message}"
        }
        add_field => ["receiver_timestamp", "%{@timestamp}"]
        add_field => ["process_name","asterisk_failed"]
    }
    if [action] == "Executing" and [dialplan_priority]=="1"{
        grok
        {
            match =>
            {
                "log_message"=>"%{DATA:asterisk_app}\(\"%{DATA:protocol}\/%{DATA:EXT}\-%{DATA:channel}\"\,\s\"%{DATA:problem1}\-\s%{DATA:problem2}\"\)\s%{GREEDYDATA:all}"
            }
        }
    }
    if [action] == "Executing" and [dialplan_priority]=="26"{
        grok
        {
            match =>
            {
                "log_message"=>"%{DATA:asterisk_app}\(\"%{DATA:protocol}\/%{DATA:EXT}\-%{DATA:channel}\"\,\s\"%{DATA:problem1}\sand\s%{DATA:problem2}\"\)\s%{GREEDYDATA:all}"
            }
        }
    }
}

我已经(自己)测试了我的grok过滤器,并且效果很好。是否需要导入一些东西以便我可以使用条件表达式?

elasticsearch logstash logstash-grok
1个回答
0
投票

尝试更改条件,例如:

if "Executing" in [action] { logic }

© www.soinside.com 2019 - 2024. All rights reserved.