Если заявление не работает на Грок фильтр logstash - PullRequest
0 голосов
/ 21 января 2020

Задача

Я пытаюсь узнать logsta sh и разбираю grok с условным оператором. Журналы успешно проанализированы вне оператора if, но внутри оператора ничего не проанализировано. Похоже, Грок не читает выражение.

target

[2020-01-09 08:32:46] VERBOSE [18962] [C -0000ceae] pbx. c: Выполнение [s@macro-dialout-trunk : 26] N oOp ("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}"
            }
        }
    }
}

У меня есть проверил (сам) мой фильтр Грок и он работает хорошо. Есть ли какие-то вещи, которые нужно было импортировать, чтобы я мог использовать условное выражение?

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Попробуйте изменить условия на

 if [action] =~ "Executing" and [dialplan_priority] =~"1"{ logic }
0 голосов
/ 21 января 2020

Попытка изменить условия как:

if "Executing" in [action] { logic }

...