Logstash: анализировать журналы концентратора событий Azure - PullRequest
0 голосов
/ 17 октября 2019

Образец message из подключаемого модуля logstash концентратора событий Azure: https://pastebin.com/b8WnQHug

Я хотел бы получить вывод:

{
    "operationName": "Microsoft.ContainerService/managedClusters/diagnosticLogs/Read",
    "category": "kube-apiserver",
    "ccpNamespace": "5d764286d7481f0001d4b054",
    "resourceId": "/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/MY-RG/PROVIDERS/MICROSOFT.CONTAINERSERVICE/MANAGEDCLUSTERS/MY-AKS",
    "properties": {
        "log": "First line from record\n Second line from another record\n  Third line from another record \n etc from another recors",
        "stream": "stderr",
        "pod": "kube-apiserver-8b5b9cd44-khjfk",
        "containerID": "4c2ddb8ba9639ae9c88f728d850d550473eb36f4eb3e1d99c3f052b87cff9357"
    },
    "time": "2019-10-16T13:44:16.0000000Z",
    "Cloud": "Public",
    "Environment": "prod"
}

Основные поля:

  • time (как отметка времени)
  • pod (имя поля pod)
  • stream (поле типа события)
  • log (наихудшая часть, поле журнала должно быть объединено с другими message.records[] с теми же полями time и containerID)

Elasticsearch имеет экспериментальный модуль Azure, вот исходный код / ​​фильтр для logstash:

https://github.com/elastic/logstash/blob/master/x-pack/modules/azure/configuration/logstash/azure.conf.erb

Мне не нужна такая сложность.

Думаю, мне нужно:

  • разделить фильтр для новых полей
  • фильтр даты для message.records []. Timestamp
  • "что-то", чтобы найти все message.records с одинаковыми message.records[].time и message.records[].properties.containerID полями и объединить message.records[].properties.log поле

Кто-нибудь может помочь?

Спасибо

РЕДАКТИРОВАТЬ: Я думаю, что мне придется рассмотреть также это: https://www.elastic.co/guide/en/logstash/current/plugins-filters-aggregate.html, хотя, вероятно, будет в 90% всех многострочных журналов в одном событии, может бытьвероятность того, что он будет разбит на несколько событий. Другая проблема заключается в том, что агрегат не работает в масштабе (плагин концентратора событий Azure), поэтому агрегат будет узким местом.

...