2016-05-18 69 views
1

我设置了以下手表,当它看到错误级别消息时触发。它触发正确,我的观看历史记录显示了这一点。我们的想法是,我们发送一条SOAP消息给我们的监控软件,该软件使用它将电子邮件格式化为正确的人。在Watcher字段中使用输入ElasticSearch文档字段

问题是,我认为我可以使用胡子命令(如{{ctx.payload.hits.hits.0.fields.Environment}})获取输入中第一条记录的信息,但我用它来获取文档字段的任何地方都是空白的。我可以查询有效载荷以获得按预期发现的记录数,但这是奇怪的部分。

我的表如下:

{ 
    "trigger": { 
    "schedule": { 
     "interval": "60s" 
    } 
    }, 
    "input": { 
    "search": { 
     "request": { 
     "indices": ["<logstash-{now/d{YYYY.MM.dd}}-cat>"], 
     "body": { 
      "query": { 
       "bool": { 
        "must": [ 
       { 
        "match": { 
        "Level": "Error" 
        } 
       }, 
       { 
        "range": { 
        "@timestamp": { 
         "gte": "now-60s", 
         "lt": "now" 
        } 
        } 
       } 
       ] 
       } 
      } 
     } 
     } 
    } 
    }, 
    "condition": { 
    "compare": { 
     "ctx.payload.hits.total": { 
     "gt": 0 
     } 
    } 
    }, 
    "throttle_period": "30m", 
    "actions": { 
     "log_error_patrol_webhook": { 
      "webhook": { 
       "method": "POST", 
       "host": "myhost", 
       "port": 9080, 
       "path": "/path/", 
       "headers": { 
        "Content-Type": "text/xml" 
       }, 
       "body": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:imap=\"http://blueprint.bmc.com/ImapiElems\" xmlns:bas=\"http://blueprint.bmc.com/BasicTypes\" xmlns:even=\"http://blueprint.bmc.com/Event\"><soapenv:Header/><soapenv:Body><imap:SendEvent><imap:connection>1111111</imap:connection><imap:message><!--Zero or more repetitions:--><bas:NameValue_element><bas:name>msg</bas:name><bas:value><bas:string_value>Environment {{ctx.payload.hits.hits.0.fields.Environment}}. Found {{ctx.payload.hits.total}} errors in the logs.</bas:string_value></bas:value></bas:NameValue_element><bas:NameValue_element><bas:name>mc_host</bas:name><bas:value><bas:string_value>{{ctx.payload.hits.hits.0.fields.HostName}}</bas:string_value></bas:value></bas:NameValue_element><bas:NameValue_element><bas:name>mc_host_class</bas:name><bas:value><bas:string_value>{{ctx.payload.hits.hits.0.fields.Environment}}</bas:string_value></bas:value></bas:NameValue_element><bas:NameValue_element><bas:name>mc_object_class</bas:name><bas:value><bas:string_value>App: {{ctx.payload.hits.hits.0.fields.appindex}}</bas:string_value></bas:value></bas:NameValue_element><bas:NameValue_element><bas:name>mc_object</bas:name><bas:value><bas:string_value>https://test.kibana.net/app/kibana#/doc/[logstash-]YYYY.MM.DD[-{{ctx.payload.hits.hits.0.fields.appindex}}]/{{ctx.payload.hits.hits.0.fields._index}}/http?id={{ctx.payload.hits.hits.0.fields._id}}</bas:string_value></bas:value></bas:NameValue_element><bas:NameValue_element><bas:name>severity</bas:name><bas:value><bas:string_value>CRITICAL</bas:string_value></bas:value></bas:NameValue_element><bas:NameValue_element><bas:name>bw_notification</bas:name><bas:value><bas:string_value>[email protected]</bas:string_value></bas:value></bas:NameValue_element><even:subject>Logstash</even:subject></imap:message><imap:timeout>3000</imap:timeout><imap:messageClass>LOGSTASH</imap:messageClass><imap:messageType>MSG_TYPE_NEW_EVENT</imap:messageType></imap:SendEvent></soapenv:Body></soapenv:Envelope>" 
      } 
     } 
    } 
} 

,并返回的电子邮件看起来是这样的:

Incident Time: Wednesday, 18 May 2016 16:06:14 +0800 
      Host: 
     Severity: CRITICAL 
    Object Class: 
     Object: https://test.kibana.bwainet.net/app/kibana#/doc/[logstash-]YYYY.MM.DD[-]//http?id= 
    Parameter: 
     Location: Unknown 
     Message: Environment . Found 4 errors in the logs 

我一直在爬弹性的文件,为什么这不会是工作,但我已经不知所措了。任何线索为什么当我们的弹性文档中存在字段时,这些字段对我来说是空白的?我希望它只是一个语法错误

干杯家伙

回答

1

在你的胡子通话使用这样的ctx.payload.hits.hits.0._source.Environment。基本上,每个ctx.payload.hits.hits.0.fields.需要用ctx.payload.hits.hits.0._source.代替,除了_id_index。您需要ctx.payload.hits.hits.0._index_id您需要ctx.payload.hits.hits.0._id

+0

哇,是的,完美的作品!太棒了 我可以问问有没有正确文件的来源? – Lyleator

+0

什么意思? –

+0

我只是想说当前我正在使用的监视器的弹性文档是不正确的,所以有其他地方确实有正确的语法。尽管我发现手表的观察者历史包含'命中'数组,所以我可以使用它来查找所有可以使用的字段,这一切都很好。 – Lyleator

相关问题