Share via


Transformaciones de datos en Container Insights

En este artículo se describe cómo implementar transformaciones de datos en Container Insights. Las transformaciones en Azure Monitor le permiten modificar o filtrar datos antes de ingerirlos en el área de trabajo de Log Analytics. Permiten realizar acciones como filtrar los datos recopilados del clúster para ahorrar costes o procesar datos entrantes para ayudar en las consultas de datos.

Reglas de recopilación de datos (DCR)

Las transformaciones se implementan en reglas de recopilación de datos (DCR) que se usan para configurar la recopilación de datos en Azure Monitor. Al incorporar Container Insights en un clúster, se crea una DCR para él con el nombre MSCI-<cluster-region>-<\cluster-name>. Puede ver esta DCR en reglas de recopilación de datos en el menú Monitor en Azure Portal. Para crear una transformación, debe modificar esta DCR o incorporar el clúster con una DCR personalizado que incluya la transformación.

En la tabla siguiente se describen los distintos métodos para editar la DCR, mientras que el resto de este artículo proporciona detalles de las modificaciones que debe realizar para transformar los datos de Container Insights.

Method Descripción
Nuevo clúster Use una plantilla de ARM existente para incorporar un clúster de AKS a Container Insights. Modifique la sección dataFlows de la DCR de esa plantilla para incluir una transformación, similar a una de las muestras siguientes.
DCR existente Después de incorporar un clúster a Container Insights, edite su DCR para incluir una transformación mediante el proceso en Editar reglas de recopilación de datos.

Orígenes de datos

La sección dataSources de la DCR define los distintos tipos de datos entrantes que procesará la DCR. Para Container Insights, esto incluye la extensión ContainerInsights, que incluye una o más streams predefinidas que comienzan con el prefijo Microsoft-.

La lista de flujos de Container Insights en la DCR depende del Valor preestablecido de coste seleccionado para el clúster. Si recopila todas las tablas, la DCR usará el flujo Microsoft-ContainerInsights-Group-Default, que es un flujo de grupo que incluye todos los flujos enumerados en Valores de flujo. Debe cambiar esto a flujos individuales si va a usar una transformación. Cualquier otra configuración preestablecida de coste ya usará flujos individuales.

El fragmento de código siguiente muestra el flujo Microsoft-ContainerInsights-Group-Default. Consulte las DCR de ejemplo para obtener un ejemplo de flujos individuales.

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

Flujos de datos

La sección dataFlows de la DCR coincide con flujos con destinos. Los flujos que no requieren una transformación se pueden agrupar en una sola entrada que incluya solo el destino del área de trabajo. Cree una entrada independiente para flujos que requieran una transformación que incluya el destino del área de trabajo y la propiedad transformKql.

En el fragmento de código siguiente se muestra la sección dataFlows de un solo flujo con una transformación. Consulte las DCR de ejemplo para varios flujos de datos en una única DCR.

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

DCR de ejemplo

En los ejemplos siguientes se muestran DCR para Container Insights mediante transformaciones. Use estos ejemplos como punto inicial y personalícelos según sea necesario para satisfacer sus requisitos concretos.

Filtrar para un espacio de nombres determinado

En este ejemplo se usa la consulta de registro source | where PodNamespace == 'kube-system' para recopilar datos de un único espacio de nombres en ContainerLogsV2. Puede reemplazar kube-system en esta consulta por otro espacio de nombres o reemplazar la cláusula where por otro filtro para que coincida con los datos concretos que desea recopilar. Los demás flujos se agrupan en un flujo de datos independiente y no se aplica ninguna transformación.

{
    "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'"
            }
        ] 
    }
}

Agregar una columna a una tabla

En este ejemplo se usa la consulta de registro source | extend new_CF = ContainerName para enviar datos a una columna personalizada agregada a la tabla ContainerLogV2. Esta transformación requiere que agregue la columna personalizada a la tabla mediante el proceso descrito en Agregar o eliminar una columna personalizada. Los demás flujos se agrupan en un flujo de datos independiente y no se aplica ninguna transformación.

{
    "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"
            }
        ]
    }
}

Pasos siguientes