Наблюдатель за Elastic APM в курсе групп

Недавно мы перешли от Opbeat к Elastic APM. К сожалению, у нас нет предыдущего опыта в Elastic Search или X-Pack. Мы пытались создать наблюдателя, который отправлял бы по электронной почте только в том случае, если за последние 6 часов не было сообщено ни о какой другой ошибке той же группы.

Я пытался сделать это, следуя одному примеру, который я нашел в Github, но кажется, что он не работает должным образом, поскольку я использую цепочечные запросы для сравнения одного и другого, и я получаю одинаковые результаты для обоих, даже когда, в теории оба работают для разных диапазонов:

{
  "trigger": {
    "schedule": {
      "interval": "2m"
    }
  },
  "input": {
    "chain": {
      "inputs": [
        {
          "raised_errors": {
            "search": {
              "request": {
                "indices": [
                  "<apm-6.3.0-error-*>"
                ],
                "body": {
                  "query": {
                    "bool": {
                      "must": {
                          "range": {
                            "@timestamp": {
                              "gte": "now-{{ctx.metadata.window_period}}"
                            }
                          }
                        }
                    }
                  },
                  "aggs": {
                    "grouping_key": {
                      "terms": {
                        "field": "error.grouping_key",
                        "size": 1000
                      }
                    }
                  },
                  "size": 0
                }
              }
            }
          }
        },
        {
          "history_raised_errors": {
            "search": {
              "request": {
                "indices": [
                  "<apm-6.3.0-error-*>"
                ],
                "body": {
                  "query": {
                    "bool": {
                      "must": [
                        {
                          "terms": {
                            "grouping_key": [
                              "{{#ctx.payload.raised_errors.aggregations.grouping_key.buckets}}{{key}}",
                              "{{/ctx.payload.raised_errors.aggregations.grouping_key.buckets}}"
                            ]
                          }
                        },
                        {
                          "range": {
                            "@timestamp": {
                              "lt": "now-{{ctx.metadata.window_period}}",
                              "gte": "now-{{ctx.metadata.window_period}}-{{ctx.metadata.window_period}}"
                            }
                          }
                        }
                      ]
                    }
                  },
                  "aggs": {
                    "grouping_key": {
                      "terms": {
                        "field": "error.grouping_key",
                        "size": 10
                      }
                    }
                  },
                  "size": 0
                }
              }
            }
          }
        }
      ]
    }
  },
  "condition": {
    "script": {
      "source": "return ctx.payload.raised_errors.aggregations.grouping_key.buckets.size() != ctx.payload.history_raised_errors.aggregations.grouping_key.buckets.size();",
      "lang": "painless"
    }
  },
  "metadata": {
    "window_period": "6h"
  },
  "transform": {
    "script": {
      "source": "def history=ctx.payload.history_raised_errors.aggregations.grouping_key.buckets.stream().map(p -> p.key).collect(Collectors.toList()); def new_starts=ctx.payload.raised_errors.aggregations.grouping_key.buckets.stream().map(e -> e.key).filter(p -> !history.contains(p)); return new_starts.map(p -> p.replace('-',' on server ')).collect(Collectors.toList());",
      "lang": "painless"
    }
  },
  "actions": {
    "log": {
      "logging": {
        "text": "Processes started:{{#ctx.payload._value}}{{.}}:{{/ctx.payload._value}}"
      }
    }
  }
}

Любой намек на то, что мы делаем неправильно, будет высоко оценен.

0 ответов

Другие вопросы по тегам