Оповещение ELK Watcher, основанное на проценте от 2 запросов во временном диапазоне - PullRequest
0 голосов
/ 24 октября 2018

Мы переключаемся с splunk на elk, и в splunk мы создали оповещения, основанные на процентах, полученных по результатам 2 запросов.

Предположим, что наша регистрация выводит «завершенное» сообщение каждый раз, когдапроцесс завершен, и он также выводит сообщение об ошибке при возникновении ошибки.Я хочу запросить эти два сообщения за определенный промежуток времени, и если ошибки превышают X%, создайте оповещение.

Я уже некоторое время гуглял по этому поводу, но ничего не нашел.Любая помощь будет отличной!

спасибо!

1 Ответ

0 голосов
/ 12 ноября 2018

Идея этого состоит в том, чтобы создать один запрос и разбить результат на отдельные сегменты, в которых вы можете использовать статистический анализ результата, используя безболезненно.

{
  "trigger": ...,
   "input": {
    "search": {
       "request": {
         "search_type": "query_then_fetch",
         "indices": [
          ...
        ],
        "types": [],
         "body": {
          "query": {
            "bool": {
              "should": [
                {
                  "query_string": {
                    "query": "Successful",
                    "default_field": "message"
                  }
                },
                {
                  "query_string": {
                    "query": "Failed",
                    "default_field": "message"
                  }
                }
              ]
            }
          },
          "aggs": {
            "messages": {
              "filters": {
                "other_bucket_key": "successful_requests",
                "filters": {
                  "failed_requests": {
                    "bool": {
                      "must": [
                        {
                          "query": {
                            "query_message": "Failed",
                            "default_field:"message"
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "condition": {
    "script": {
      "source": "return ctx.payload.aggregations.messages.buckets.failed_request.doc_count/ctx.payload.aggregations.messages.buckets.successful_request.doc_count > ctx.metadata.thresholdPercent",
      "lang": "painless"
    }
  },
  "actions": ...
  },
  "metadata": {
    "thresholdPercent": 0.5
  }
}

В этом примере вынайдите «Не удалось или успешно», затем разбейте этот результат на 2 сегмента.Одно из этих сегментов неявно, в то время как блок "failed_request" получает все результаты, соответствующие запросу "Failed".В этом условии вы можете использовать безболезненно и определить, превышает ли количество документов для успешных запросов установленный порог.Документацию по агрегатам ковшей фильтров можно найти: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filters-aggregation.html

...