Отслеживание изменений объекта конфигурации хоста в Metricbeat - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь посмотреть изменения в поле "host", вызванные metricbeat. Я хотел бы запускать процесс каждый день, чтобы увидеть, изменилось ли это поле "хост" для какой-либо конкретной c системы. Типичная запись metricbeat, которая содержит требуемое поле хоста, выглядит примерно так:

{
  "_index": "metricbeat-7.3.1-2019.09.10-000001",
  "_type": "_doc",
  ...
},
...
},
"host": {
  "name": "(servername)",
  "containerized": false,
  "hostname": "(hostname)",
  "architecture": "x86_64",
  "os": {
    "kernel": "3.10.0-954.10.1.dl7.x86_64",
    "codename": "Core",
    "platform": "centos",
    "version": "7 (Core)",
    "family": "redhat",
    "name": "CentOS Linux"
  },
  "id": "211d31bcdb1fdfdereffer5664fsdfhjjs"
},
...
}

До сих пор я пытался:

  1. Захватить все записи для день и сравните эти поля хоста как словари. Проблема с этим заключается в том, что metricbeat генерирует несколько тысяч записей, каждая из которых должна быть найдена. Это действительно неэффективно, когда у нас очень большие индексы, а код зависит от обработки данных, которые упорядочены по времени. См .: https://discuss.elastic.co/t/get-oldest-newest-document-in-beat/212229/5

  2. Я попытался написать агрегацию, чтобы получить весь хост-объект, а затем поместить данные в ячейки «имя_сервера». Я не мог заставить это работать. См .: Агрегация объекта "хост" JSON объекта из метрического удара на Elasticsearch

  3. Я установил Elastalert и пытался заставить его оповещать на хосте меняется. Это не сработало до сих пор. Примеры, поставляемые с пакетом Elastalert, работают для действительно простых вещей, но это все, что я могу сделать.

Когда я запускаю запрос, я хотел бы видеть что-то подобное output:

"host_configurations":
  {
    server_id: "server1",
    "host": {
          "os.name": "Linux xxx",
          "kernel.version":  u893,
          ....
  },
  {
    server_id: "server1",
    "host": {
          "os.name": "Linux xxx",
          "kernel.version":  u895,
          ....
  },
  ...

Это говорит о том, что когда-нибудь в этот день kernel.version изменился с u893 на u895. Или я мог видеть, добавил ли кто-нибудь RAM или больше дискового пространства. Вот и все. Оттуда остальная часть кода проста. Мне все равно, во сколько это случилось и сколько раз. Мне просто нужно знать, что когда-то в тот день произошло изменение конфигурации хоста.

Кажется, это должно быть "относительно" простым делом, но я не могу заставить что-либо работать. Буду признателен за любые предложения, которые есть у кого-либо.

Спасибо!

...