首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在“监视”字段中使用输入ElasticSearch文档字段

在“监视”字段中使用输入ElasticSearch文档字段
EN

Stack Overflow用户
提问于 2016-05-18 08:36:43
回答 1查看 2.2K关注 0票数 1

我有下面的手表设置,当它看到错误级别的消息时触发。它的触发是正确的,我的手表历史显示了这一点。我们的想法是,我们发送SOAP消息到我们的监控软件,它使用它来格式化一封电子邮件给合适的人。

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

我的表如下:

代码语言:javascript
复制
{
  "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>"
            }
        }
    }
}

它返回的电子邮件如下所示:

代码语言:javascript
复制
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

我一直在翻阅弹性文档,知道为什么这会不起作用,但我却不知所措。如果这些字段确实存在于我们的弹性文档中,为什么这些字段对我来说是空白的呢?我希望这只是语法错误

干杯,伙计们

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-18 16:50:46

在你的胡子呼叫中使用类似于这个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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37294320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档