Преобразования данных в аналитике контейнеров
В этой статье описывается, как реализовать преобразования данных в аналитике контейнеров. Преобразования в 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"
}
]
}
}
Следующие шаги
- Дополнительные сведения о преобразованиях и правилах сбора данных см. в Azure Monitor.