Преобразования данных в аналитике контейнеров

В этой статье описывается, как реализовать преобразования данных в аналитике контейнеров. Преобразования в Azure Monitor позволяют изменять или фильтровать данные перед приемом в рабочей области Log Analytics. Они позволяют выполнять такие действия, как фильтрация данных, собранных из кластера, для экономии затрат или обработки входящих данных для помощи в запросах данных.

Правила сбора данных (DCR)

Преобразования реализуются в правилах сбора данных (DCR), которые используются для настройки сбора данных в Azure Monitor. При подключении аналитики контейнеров для кластера для него создается DCR с именем MSCI-cluster-region><-<\cluster-name>. Этот DCR можно просмотреть из правил сбора данных в меню "Монитор" в портал Azure. Чтобы создать преобразование, необходимо изменить этот DCR или подключить кластер с помощью пользовательского DCR, который включает преобразование.

В следующей таблице описаны различные методы изменения DCR, а в остальной части этой статьи приведены сведения об изменениях, которые необходимо выполнить для преобразования данных аналитики контейнеров.

Метод Description
Новый кластер Используйте существующий шаблон ARM для подключения кластера AKS к аналитике контейнеров. Измените dataFlows раздел DCR в этом шаблоне, чтобы включить преобразование, аналогичное одному из приведенных ниже примеров.
Существующий DCR После подключения кластера к аналитике контейнеров измените его DCR, чтобы включить преобразование с помощью процесса в правилах редактирования сбора данных.

Источники данных

Раздел dataSources DCR определяет различные типы входящих данных, которые будет обрабатывать DCR . Для аналитики контейнеров это расширение включает в себя ContainerInsights одно или несколько предопределенныхstreams, начиная с префикса Майкрософт.

Список потоков аналитики контейнеров в DCR зависит от предустановки затрат, выбранной для кластера. При сборе всех таблиц DCR будет использовать Microsoft-ContainerInsights-Group-Default поток, который является групповым потоком, который включает все потоки, перечисленные в значениях stream. Если вы собираетесь использовать преобразование, это необходимо изменить на отдельные потоки. Любые другие параметры предустановки затрат уже будут использовать отдельные потоки.

В приведенном ниже фрагменте Microsoft-ContainerInsights-Group-Default показан поток. Примеры контроллеров домена см. в примере отдельных потоков.

"dataSources": {
    "extensions": [
        {
            "name": "ContainerInsightsExtension",
            "extensionName": "ContainerInsights",
            "extensionSettings": { },
            "streams": [
                "Microsoft-ContainerInsights-Group-Default"
            ]
        }
    ]
}

Потоки данных

Раздел dataFlows DCR сопоставляет потоки с назначениями. Потоки, которые не требуют преобразования, можно сгруппировать в одну запись, которая включает только назначение рабочей области. Создайте отдельную запись для потоков, для которых требуется преобразование, включающее назначение рабочей области и transformKql свойство.

В приведенном ниже фрагменте показан dataFlows раздел для одного потока с преобразованием. Ознакомьтесь с примерами контроллеров домена для нескольких потоков данных в одном DCR.

"dataFlows": [
    {
        "streams": [
            "Microsoft-ContainerLogV2"
        ],
        "destinations": [
            "ciworkspace"
        ],
        "transformKql": "source | where PodNamespace == 'kube-system'"
    }
]

Примеры контроллеров домена

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

Фильтрация для определенного пространства имен

В этом примере используется запрос source | where PodNamespace == 'kube-system' журнала для сбора данных для одного пространства имен.ContainerLogsV2 Вы можете заменить kube-system в этом запросе другим пространством имен или заменить where предложение другим фильтром, чтобы соответствовать определенным данным, которые требуется собрать. Другие потоки группируются в отдельный поток данных и не применяются.

{
    "properties": {
        "dataSources": {
            "syslog": [],
            "extensions": [
                {
                    "name": "ContainerInsightsExtension",                    
                    "extensionName": "ContainerInsights",
                    "extensionSettings": { },
                    "streams": [
                        "Microsoft-ContainerLog",
                        "Microsoft-ContainerLogV2",
                        "Microsoft-KubeEvents",
                        "Microsoft-KubePodInventory",
                        "Microsoft-KubeNodeInventory",
                        "Microsoft-KubePVInventory",
                        "Microsoft-KubeServices",
                        "Microsoft-KubeMonAgentEvents",
                        "Microsoft-InsightsMetrics",
                        "Microsoft-ContainerInventory",
                        "Microsoft-ContainerNodeInventory",
                        "Microsoft-Perf"
                    ]
                }
            ]
        },
        "destinations": {
            "logAnalytics": [
                {
                    "workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group/providers/microsoft.operationalinsights/workspaces/my-workspace",
                    "name": "ciworkspace"
                }
            ]
        },
        "dataFlows": [
            {
                "streams": [
                    "Microsoft-ContainerLog",
                    "Microsoft-KubeEvents",
                    "Microsoft-KubePodInventory",
                    "Microsoft-KubeNodeInventory",
                    "Microsoft-KubePVInventory",
                    "Microsoft-KubeServices",
                    "Microsoft-KubeMonAgentEvents",
                    "Microsoft-InsightsMetrics",
                    "Microsoft-ContainerNodeInventory",
                    "Microsoft-Perf"
                ],
                "destinations": [
                    "ciworkspace"
                ]
            },
            {
                "streams": [
                    "Microsoft-ContainerLogV2"
                ],
                "destinations": [
                    "ciworkspace"
                ],
                "transformKql": "source | where PodNamespace == 'kube-system'"
            }
        ] 
    }
}

Добавление столбца в таблицу

В этом примере используется запрос source | extend new_CF = ContainerName журнала для отправки данных в пользовательский столбец, добавленный в таблицу ContainerLogV2 . Для этого преобразования требуется добавить настраиваемый столбец в таблицу с помощью процесса, описанного в разделе "Добавление или удаление настраиваемого столбца". Другие потоки группируются в отдельный поток данных и не применяются.

{
    "properties": {
        "dataSources": {
            "syslog": [],
            "extensions": [
                {
                    "extensionName": "ContainerInsights",
                    "extensionSettings": { },
                    "name": "ContainerInsightsExtension",
                    "streams": [
                        "Microsoft-ContainerLog",
                        "Microsoft-ContainerLogV2",
                        "Microsoft-KubeEvents",
                        "Microsoft-KubePodInventory",
                        "Microsoft-KubeNodeInventory",
                        "Microsoft-KubePVInventory",
                        "Microsoft-KubeServices",
                        "Microsoft-KubeMonAgentEvents",
                        "Microsoft-InsightsMetrics",
                        "Microsoft-ContainerInventory",
                        "Microsoft-ContainerNodeInventory",
                        "Microsoft-Perf"
                    ]
                }
            ]
        },
        "destinations": {
            "logAnalytics": [
                {
                    "workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group/providers/microsoft.operationalinsights/workspaces/my-workspace",
                "name": "ciworkspace"
                }
            ]
        },
        "dataFlows": [
            {
                "streams": [
                    "Microsoft-ContainerLog",
                    "Microsoft-KubeEvents",
                    "Microsoft-KubePodInventory",
                    "Microsoft-KubeNodeInventory",
                    "Microsoft-KubePVInventory",
                    "Microsoft-KubeServices",
                    "Microsoft-KubeMonAgentEvents",
                    "Microsoft-InsightsMetrics",
                    "Microsoft-ContainerNodeInventory",
                    "Microsoft-Perf"
                ],
                "destinations": [
                "ciworkspace"
                ]
            },
            {
                "streams": [
                    "Microsoft-ContainerLogV2"
                ],
                "destinations": [
                    "ciworkspace"
                ],
                "transformKql": "source\n | extend new_CF = ContainerName"
            }
        ]
    }
}

Следующие шаги