【问题标题】:How To Account For Nulls When Pattern matching using Grok?使用 Grok 进行模式匹配时如何考虑空值?
【发布时间】:2019-07-17 15:35:16
【问题描述】:

我正在尝试使用grok 读取Apache NiFi 中的日志数据,但无法获取所需的输出。这是我的示例数据:

[2019-07-16 22:20:16] local.INFO: news.index {"mobile":"959404576540","message":Mozilla/5.0 (Linux; Android 8.0.0; ATU-L42 Build/HUAWEIATU-L42; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 Mobile Safari/537.36 a/2.7.0}

我尝试了以下表达式,但对我不起作用。

%{SYSLOG5424SD}%{JAVACLASS}: %{JAVACLASS} {%{QS}:%{QS},%{QS}:%{QS}} 

如何从上述数据中提取2019-07-16 22:20:16959404576540Mozilla/5.0 (Linux; Android 8.0.0; ATU-L42 Build/HUAWEIATU-L42; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 Mobile Safari/537.36 a/2.7.0

编辑:

@Emma 您的答案有效,但如果我的数据包含任何空值,则它不起作用。例如:

[2019-07-16 22:20:16] local.INFO: news.index {"mobile":"8765453673","message":null}

【问题讨论】:

    标签: regex apache-nifi logstash-grok


    【解决方案1】:

    这个表达式,

    \[([^]]+?)\](.*?)"mobile":"\s*(\d+)\s*"\s*,\s*"message"\s*:\s*([^}]*?)\s*\}
    

    例如,可能是提取这些数据的开始。


    表达式在this demo 的右上方面板中进行了解释,如果您想探索/简化/修改它。

    【讨论】:

    • 它运作良好,但如果我的数据包含任何 null 它不起作用..我正在更新我的问题。请看一看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多