簡體   English   中英

如果語句不適用於 grok 過濾器 logstash

[英]If statement not working on grok filter logstash

問題

我正在嘗試使用條件語句學習 logstash 和解析 grok。 日志在 if 語句外部成功解析,但在語句內部沒有解析任何內容。 似乎 grok 沒有閱讀表達式。

目標

[2020-01-09 08:32:46] VERBOSE[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 過濾器,它運行良好。 是否有一些需要導入的東西,以便我可以使用條件表達式?

嘗試改變條件,如:

if "Executing" in [action] { logic }

嘗試將條件更改為

 if [action] =~ "Executing" and [dialplan_priority] =~"1"{ logic }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM