在 Watcher 字段中使用输入 ElasticSearch 文档字段
Use input ElasticSearch document fields in Watcher fields
我设置了以下手表,它在看到错误级别消息时触发。它触发正确,我的观看历史记录显示了这一点。这个想法是我们向我们的监控软件发送一条 SOAP 消息,该软件使用它来格式化电子邮件给正确的人。
问题是我假设我可以使用像 {{ctx.payload.hits.hits.0.fields.Environment}}
这样的 mustache 命令获取输入中第一条记录的信息,但是我使用它来获取文档字段的任何地方都是空白的。我可以查询有效负载以获取按预期找到的记录数,尽管这是奇怪的部分。
我的表如下:
{
"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@host</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>"
}
}
}
}
它的电子邮件 returns 看起来像这样:
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
我一直在 elastic 文档中搜索为什么这行不通,但我一头雾水。当这些字段肯定存在于我们的弹性文档中时,为什么这些字段对我来说是空白的任何线索?我希望这只是语法错误
伙计们干杯
在你的 Mustache 调用中使用这样的东西 ctx.payload.hits.hits.0._source.Environment
。基本上,每个 ctx.payload.hits.hits.0.fields.
都需要用 ctx.payload.hits.hits.0._source.
替换,除了 _id
和 _index
.
对于 _index
,您需要 ctx.payload.hits.hits.0._index
,对于 _id
,您需要 ctx.payload.hits.hits.0._id
。
我设置了以下手表,它在看到错误级别消息时触发。它触发正确,我的观看历史记录显示了这一点。这个想法是我们向我们的监控软件发送一条 SOAP 消息,该软件使用它来格式化电子邮件给正确的人。
问题是我假设我可以使用像 {{ctx.payload.hits.hits.0.fields.Environment}}
这样的 mustache 命令获取输入中第一条记录的信息,但是我使用它来获取文档字段的任何地方都是空白的。我可以查询有效负载以获取按预期找到的记录数,尽管这是奇怪的部分。
我的表如下:
{
"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@host</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>"
}
}
}
}
它的电子邮件 returns 看起来像这样:
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
我一直在 elastic 文档中搜索为什么这行不通,但我一头雾水。当这些字段肯定存在于我们的弹性文档中时,为什么这些字段对我来说是空白的任何线索?我希望这只是语法错误
伙计们干杯
在你的 Mustache 调用中使用这样的东西 ctx.payload.hits.hits.0._source.Environment
。基本上,每个 ctx.payload.hits.hits.0.fields.
都需要用 ctx.payload.hits.hits.0._source.
替换,除了 _id
和 _index
.
对于 _index
,您需要 ctx.payload.hits.hits.0._index
,对于 _id
,您需要 ctx.payload.hits.hits.0._id
。