Logstash:解析Azure事件中心日志

时间:2019-10-17 13:52:18

标签: azure elasticsearch logstash logstash-configuration

Azure Event Hubs logstash插件的示例messagehttps://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"
}

主要字段:

  • 时间(以时间戳记)
  • pod(“ pod”字段的名称)
  • 流(事件类型字段)
  • 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.recordsmessage.records[].time字段的所有message.records[].properties.containerID并串联message.records[].properties.log字段

有人可以帮忙吗?

谢谢

编辑:它认为我也必须考虑这一点:  https://www.elastic.co/guide/en/logstash/current/plugins-filters-aggregate.html ,尽管在单个事件中所有多行日志中可能有90%,但可能会将其拆分为多个事件。 另一个问题是聚合无法大规模使用(azure事件中心插件可以),因此聚合将成为瓶颈。

0 个答案:

没有答案