在 grok %{QS:message} 中寻找关键字
Looking for keywords within a grok %{QS:message}
我上下搜索了一下,想知道这是否是 Grok 中可能的一个选项。所以我的日志文件过滤得很好。除了 %{QS:message} 是包含我的错误、警告、POST、获取等的内容。我希望能够查询 Kibana 中的那些但没有将它们作为选项。我能做些什么来使这些从 logstash 返回到 kibana 的关键字可用
如果你一步步分析这个,这可能是最简单的。将以下内容添加到输出部分 stdout { codec => rubydebug }
在处理日志消息时,它会详细说明在处理日志消息期间由 logstash 创建的所有字段及其值。只要您没有在 elasticsearch 输出中指定任何花哨的内容,这些字段就会存储在 elasticsearch 中(连同它们未分析的 .raw 对应项)。如果这看起来没问题,那么您可以使用其其余界面以交互方式(使用 curl)或通过安装 elasticsearch kopf 插件(或类似的插件)来查看 elastisearch 方面的内容,以检查实际存储在 elasticsearch 中的内容。
编辑:关于您最后的评论。
假设您的日志数据如下所示"POST: Form submitted from shoppingcart.php"
您可以使用带有正则表达式的 if 语句来简单地检查您的消息是否包含给定的字符序列(如 POST),然后使用 mutate 过滤器向您的事件添加字段或标签,例如所以:
if [logmessage] =~ /POST/ {
mutate { add_tag => ["POST"] }
# or you could also do something like:
mutate { add_field => ["method","POST"]}
}
除了 if 语句,您还可以使用 grok 过滤器来进一步解析您的消息,如下所示:
grok {
match => ["logmessage", "(?<method>POST)"]
tag_on_failure => []
}
根据你的日志条目的结构和你想要提取的内容的复杂性,最好使用方法a。或者 b。如果您的日志非常结构化,您可以简单地构建一个处理所有变体的 grok 过滤器。假设您的所有行都像这样:
方法|returnCode|messageText
你可以做一个简单的 grok 过滤器,比如
%{DATA:method}|%{DATA:returnCode}|{GREEDYDATA:messageText}
它会处理您的所有线路并将您的日志解析为字段以供 kibana 分析。
但是,如果您的日志非常非结构化并且您只想查找少量关键字,您也可以使用 if regexp 风格...
我上下搜索了一下,想知道这是否是 Grok 中可能的一个选项。所以我的日志文件过滤得很好。除了 %{QS:message} 是包含我的错误、警告、POST、获取等的内容。我希望能够查询 Kibana 中的那些但没有将它们作为选项。我能做些什么来使这些从 logstash 返回到 kibana 的关键字可用
如果你一步步分析这个,这可能是最简单的。将以下内容添加到输出部分 stdout { codec => rubydebug }
在处理日志消息时,它会详细说明在处理日志消息期间由 logstash 创建的所有字段及其值。只要您没有在 elasticsearch 输出中指定任何花哨的内容,这些字段就会存储在 elasticsearch 中(连同它们未分析的 .raw 对应项)。如果这看起来没问题,那么您可以使用其其余界面以交互方式(使用 curl)或通过安装 elasticsearch kopf 插件(或类似的插件)来查看 elastisearch 方面的内容,以检查实际存储在 elasticsearch 中的内容。
编辑:关于您最后的评论。
假设您的日志数据如下所示"POST: Form submitted from shoppingcart.php"
您可以使用带有正则表达式的 if 语句来简单地检查您的消息是否包含给定的字符序列(如 POST),然后使用 mutate 过滤器向您的事件添加字段或标签,例如所以:
if [logmessage] =~ /POST/ {
mutate { add_tag => ["POST"] }
# or you could also do something like:
mutate { add_field => ["method","POST"]}
}
除了 if 语句,您还可以使用 grok 过滤器来进一步解析您的消息,如下所示:
grok {
match => ["logmessage", "(?<method>POST)"]
tag_on_failure => []
}
根据你的日志条目的结构和你想要提取的内容的复杂性,最好使用方法a。或者 b。如果您的日志非常结构化,您可以简单地构建一个处理所有变体的 grok 过滤器。假设您的所有行都像这样:
方法|returnCode|messageText
你可以做一个简单的 grok 过滤器,比如
%{DATA:method}|%{DATA:returnCode}|{GREEDYDATA:messageText}
它会处理您的所有线路并将您的日志解析为字段以供 kibana 分析。
但是,如果您的日志非常非结构化并且您只想查找少量关键字,您也可以使用 if regexp 风格...