我需要帮助来编写logstash的过滤器。我的logstash配置为读取syslog。
日志消息如下,
Mar 14 15:11:11 localhost 192.168.235.136 {'status': 'True', 'endpoint': '/search/basic/', 'parameters': <QueryDict: {u'fileName': [u'Adware']}>, 'company': u'Global first', 'matched threat scape': [u'Enterprise IT Management and Investment'], 'request id': 11, 'user id': 2L, 'user': u' ', 'matched report id': [u'Intel-732102']}
我希望在kibana上有过滤器,基于我在消息中传递给logstash的json键。
我无法编写过滤器以从日志中获取参数。 我还尝试http://grokdebug.herokuapp.com/来生成过滤器。 它给了我一种模式,我不知道如何使用它。
{%{QS:'status'}: %{QS}, %{QS}: %{QS}, %{QS}: <QueryDict: {u%{QS}: %{SYSLOG5424SD}}>, %{QS}: u%{QS}, %{QS}: %{SYSLOG5424SD}, %{QS}: 11, %{QS}: 2L, %{QS}: u' ', 'matched report id': %{SYSLOG5424SD}}
答案 0 :(得分:1)
对于日志输入:
3月14日15:11:11 localhost 192.168.235.136 {&#39; status&#39;:&#39; True&#39;,&#39;端点&#39;:&#39; / search / basic /&#39;}
Grok Pattern是
%{CISCOTIMESTAMP:JsonTimestamp} localhost %{IP:JsonIP} {'status': '%{WORD:JsonStatus}', 'endpoint': '%{UNIXPATH:JsonPath}'}
请对其他字段采用类似的模式方法。您可以在以下网址找到参考资料:
https://github.com/elasticsearch/logstash/blob/master/patterns/grok-patterns
请发布您在申请grok模式时遇到困难的字段,以及以下详细信息:
i)哪些字段在变化,哪些是常数。
在上面的示例中,JsonTimestamp,JsonIP,JsonStatus和JsonPath将被编入索引。
请在下面的示例中找到以下工作完整的grok模式:
%{CISCOTIMESTAMP} localhost %{IP} {%{QS}: %{QS}, %{QS}: %{QS}, %{QS}: <QueryDict: {u%{QS}: %{SYSLOG5424SD}}>, %{QS}: u%{QS}, %{QS}: %{SYSLOG5424SD:matched_threat_scape}, %{QS}: %{NUMBER:request_id}, %{QS}: %{NUMBER:user_id}L, %{QS}: %{WORD:user}%{QS}, %{QS}: %{SYSLOG5424SD:matched_report_id}
修改后的更改为%{NUMBER:request_id},%{NUMBER:user_id} L,%{WORD:user},%{SYSLOG5424SD:matched_report_id},因为11和2L不在引号中而且它们代表数字,我们使用NUMBER为了识别数字标记,用户表示为WORD标记