Filter 日志隐藏过滤器

Filter 日志隐藏过滤器,filter,logstash,kibana,grok,Filter,Logstash,Kibana,Grok,我需要一个帮助来编写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 sca

我需要一个帮助来编写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']}
Mar 14 15:11:11 localhost 192.168.235.136{'status':'True','endpoint':'/search/basic/','parameters','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键

我无法编写过滤器以从日志中获取参数。 我还尝试生成过滤器。 它给我的模式,我不知道如何使用它

{%{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}}
{QS:'status}:%%{QS},%%{QS}:%%{QS},%%{QS}:,%%{QS}:u%%{QS},%%{QS}:%%{SYSLOG5424SD},%%{QS}:11,%%{QS}:2L,%%QS}:u'','matched report id':%%{SYSLOG5424SD}
对于日志输入:

三月14日15:11:11本地主机192.168.235.136{'status':'True','endpoint':'/search/basic/'}

格罗克模式是

%{CISCOTIMESTAMP:JsonTimestamp} localhost %{IP:JsonIP} {'status': '%{WORD:JsonStatus}', 'endpoint': '%{UNIXPATH:JsonPath}'}
对于其余字段,请遵循类似的模式方法。您可以在以下网址找到参考资料:

请公布您在应用grok模式时感到困难的领域,以及以下详细信息:

i) 哪些字段是变化的,哪些是常数

在上面的示例中,JsonTimestamp、JsonIP、JsonStatus和JsonPath将被索引

请在下面找到上述示例的完整工作模式:

%{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}
{QS},{{QS}{{码>{码>{码>{码>{码>{码>{{码>{码>{码>{码>{{码>{{码>{码>{码>{{码>{{码准准准准金属金属警察警察}}{{码>{{码}},{{QS QS},{QS}}},,{码},{{{码}},,{{码}}},,{{码},,{{码}}}{{码}}},,,{{码}}}{{{码}}}}},,{{码}},,{{码}},{{{码}}码}},{{{码}}}}}}}}码码码码码码码码}}}}SD:匹配的\u报告\u id}
修改的更改为%{NUMBER:request_id}、%%{NUMBER:user_id}L、%%{WORD:user}、%%{SYSLOG5424SD:matched_report_id}由于11和2L不在引号中,它们表示数字,我们使用数字来标识数字标记,用户表示为WORD标记

感谢您的回复Murthy。我设法以您提到的类似方式解析数据。但我仍然无法解析完整的数据。当我尝试解析完整的消息时,我遇到了错误。.filter{if[status]='True'{grok{add_tag=>[status,end_point,params_name,params,company,matched_threat_scape,request_id,user_id,syslog_message]type=>“my_audit”match=>[“message”,“%{CISCOTIMESTAMP}localhost%{IP}{QS}:%{QS},%{QS},%{QS}{SYSLOG5424SD:matched_-threat_-scape},%%{QS}:%%{QS:request_-id},%%{QS}:%%{QS:user_-id},%%{GREEDYDATA:syslog_-message}}}}请在上述编辑的回答的最后几行中找到工作完整的grok模式。它仍然不包括最后两个解析的值,用户:u','matched report-id':[u'Intel-732102']请查找更新的grok图案。您可以在以下位置找到图案参考: