Descripción de los costos de supervisión de Container Insights

En este artículo se proporcionan una guía de precios de Container Insights, que le ayuda a entender cómo:

  • Medir los costos después de habilitar Container Insights en uno o varios contenedores.
  • Controlar la recopilación de datos y realizar reducciones de costos.

Sugerencia

Para descubrir estrategias que le ayudarán a reducir los costes de Azure Monitor, consulte Optimización de costes y Azure Monitor.

El modelo de precios de Azure Monitor se basa principalmente en la cantidad de datos ingeridos en gigabytes por día en el área de trabajo de Log Analytics. Los costos de un área de trabajo de Log Analytics no se basan solo en el volumen de datos recopilados, sino que también dependen del plan seleccionado y de cuánto tiempo se decida almacenar los datos generados a partir de los clústeres.

Nota:

Consulte Estimación de los costos de Azure Monitor para calcular los costos de Container Insights antes de habilitarlos.

Los siguientes tipos de datos que se recopilan de un clúster de Kubernetes con Container Insights influyen en el costo y se pueden personalizar en función del uso:

  • Perf, Inventory, InsightsMetrics y KubeEvents se pueden controlar mediante valores de optimización de costos
  • Registros de contenedor de stdout y stderr de cada contenedor supervisado en cada espacio de nombres de Kubernetes del clúster mediante el agente ConfigMap
  • Variables de entorno de contenedor de cada contenedor supervisado en el clúster
  • Trabajos y pods de Kubernetes completados en el clúster que no requieren supervisión
  • Extracción activa de métricas de Prometheus
  • Recopilación de registros de recursos del nodo principal de Kubernetes en el clúster de Azure Kubernetes Service (AKS) para analizar los datos de registro generados por los componentes principales, como kube-apiserver y kube-controller-manager.

Control de la ingesta para reducir los costos

Considere la posibilidad de un escenario en el que las distintas unidades de negocio de su organización compartan la infraestructura de Kubernetes y un área de trabajo de Log Analytics. Cada unidad de negocio está separada por un espacio de nombres de Kubernetes. Puede visualizar la cantidad de datos que se ingieren en cada área de trabajo con el runbook Uso de datos. El runbook está disponible en la pestaña Informes.

Screenshot that shows the View Workbooks dropdown list.

Este libro le ayuda a visualizar el origen de los datos sin tener que crear su propia biblioteca de consultas desde lo que compartimos nuestra documentación. En este libro, puede ver gráficos que presentan datos facturables, como los siguientes:

  • Datos facturables totales ingeridos en GB por solución.
  • Datos facturables ingeridos por registros de contenedor (registros de aplicación).
  • Datos de registros de contenedores facturables ingeridos por espacio de nombres de Kubernetes.
  • Datos de registros de contenedores facturables ingeridos segregados por nombre de clúster.
  • Datos de registros de contenedores facturables ingeridos por entrada de origen de registro.
  • Datos de diagnóstico facturables ingeridos por registros de nodo principal de diagnóstico.

Screenshot that shows the Data Usage workbook.

Para más información sobre cómo administrar derechos y permisos en el libro, consulte Control de acceso.

Determinar la causa principal de la ingesta de datos

Los datos de Container Insights se componen principalmente de contadores de métricas (Perf, Inventory, InsightsMetrics y métricas personalizadas) y registros (ContainerLog). En función del tamaño y el uso del clúster, es posible que tenga requisitos y necesidades de supervisión diferentes.

Si va a la sección Por tabla del libro Uso de datos, puede ver el desglose de los tamaños de tabla de Container Insights.

Screenshot that shows the By Table breakdown in Data Usage workbook.

Si la mayoría de los datos proceden de una de estas tablas siguientes:

  • Perf
  • InsightsMetrics
  • ContainerInventory
  • ContainerNodeInventory
  • KubeNodeInventory
  • KubePodInventory
  • KubePVInventory
  • KubeServices
  • KubeEvents

Puede ajustar la ingesta mediante los valores de optimización de costos o la migración al complemento de métricas Prometheus

De lo contrario, la mayoría de los datos pertenecen a la tabla ContainerLog. y puede llevar a cabo los pasos siguientes para reducir los costos de ContainerLog.

Reducir los costos de ContainerLog

Después de completar el análisis para determinar qué origen u orígenes están generando los datos que están superando sus requisitos, puede volver a configurar la recopilación de datos. Para más información sobre cómo configurar la recopilación de stdout, stderr y variables de entorno, consulte Configuración de las opciones de recopilación de datos del agente.

Los siguientes ejemplos muestran los cambios que se pueden aplicar al clúster mediante la modificación del archivo ConfigMap, que ayudan a controlar los costos.

  1. Deshabilite los registros stdout en todos los espacios de nombres del clúster modificando el código siguiente en el archivo ConfigMap para el servicio Azure Container Insights que extrae las métricas:

    [log_collection_settings]       
       [log_collection_settings.stdout]          
          enabled = false
    
  2. Deshabilite la recopilación de registros stderr del espacio de nombres de desarrollo. Un ejemplo es dev-test. Siga recopilando registros stderr de otros espacios de nombres, como prod y default, modificando el código siguiente en el archivo ConfigMap:

    Nota

    La recopilación de registros de kube-system está deshabilitada de forma predeterminada. La configuración predeterminada se conserva. La adición del espacio de nombres dev-test a la lista de espacios de nombres de exclusión se aplica a la recopilación de registros de stderr.

    [log_collection_settings.stderr]          
       enabled = true          
          exclude_namespaces = ["kube-system", "dev-test"]
    
  3. Deshabilite la recopilación de variables de entorno en el clúster; para ello, modifique el código siguiente en el archivo ConfigMap. Esta modificación se aplica a todos los contenedores de cada espacio de nombres de Kubernetes.

    [log_collection_settings.env_var]
        enabled = false
    
  4. Para limpiar los trabajos que están terminados, especifique la directiva de limpieza en su definición de trabajo yaml. A continuación se muestra un ejemplo de definición de trabajo con la directiva de limpieza. Para saber más, consulte la documentación de Kubernetes.

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: pi-with-ttl
    spec:
      ttlSecondsAfterFinished: 100
    

Después de aplicar uno o varios de estos cambios a ConfigMaps, aplíquelo al clúster con el comando kubectl apply -f <config3. map_yaml_file.yaml>. Por ejemplo, ejecute el comando kubectl apply -f container-azm-ms-agentconfig.yaml para abrir el archivo en el editor predeterminado y modificarlo y, después, guárdelo.

Configuración de registros básicos

Puede ahorrar en los costos de ingesta de datos de su área de trabajo de Log Analytics que utiliza principalmente para la depuración, solución de problemas y auditoría como registros básicos. Para más información, incluidas las limitaciones de los registros básicos, consulte Configuración de registros básicos en Azure Monitor. ContainerLogV2 es la versión configurada de los registros básicos que usa Container Insights. ContainerLogV2 Incluye registros detallados basados en texto.

Debe estar en el esquema ContainerLogV2 para configurar los registros básicos. Para más información, consulte Habilitar el esquema ContainerLogV2 (versión preliminar).

Recopilación de métricas de Prometheus

Si recopila métricas de Prometheus en el área de trabajo de Log Analytics, asegúrese de limitar el número de métricas que recopila del clúster:

  • Asegúrese de que la frecuencia de extracción esté configurada de forma óptima. El valor predeterminado es 60 segundos. Puede aumentar la frecuencia a 15 segundos, pero debe asegurarse de que las métricas que se van a extraer se publiquen con esa frecuencia. De lo contrario, se extraerán muchas métricas y se enviarán a su área de trabajo de Log Analytics a intervalos, lo que aumentará los costos de ingesta de datos y de retención, pero con menos valor.
  • Container Insights admite listas de inclusión y exclusión por nombres de métrica. Por ejemplo, si va a extraer métricas de kubedns en el clúster, es posible que se extraigan cientos de ellas de forma predeterminada. Pero lo más probable es que solo le interese un subconjunto de las métricas. Confirme que ha especificado una lista de métricas para extraer o excluya otras, excepto unas pocas, para guardarlas en el volumen de ingesta de datos. Es fácil habilitar la extracción y no usar muchas de esas métricas, lo que solo añadirá costos adicionales en la factura de Log Analytics.
  • Al extraer mediante anotaciones de pod, asegúrese de filtrar por espacio de nombres para excluir la extracción de las métricas de pod de los espacios de nombres que no utiliza. Un ejemplo es el espacio de nombres dev-test.

Datos recopilados de los clústeres de Kubernetes

Datos métricos

Container Insights incluye un conjunto predefinido de métricas y elementos de inventario recopilados que se escriben como datos de registro en el área de trabajo de Log Analytics. Todas las métricas de la tabla siguiente se recopilan cada minuto.

Tipo Métricas
Métricas de nodo cpuUsageNanoCores
cpuCapacityNanoCores
cpuAllocatableNanoCores
memoryRssBytes
memoryWorkingSetBytes
memoryCapacityBytes
memoryAllocatableBytes
restartTimeEpoch
used (disco)
free (disco)
used_percent (disco)
io_time (E/S de disco)
writes (E/S de disco)
reads (E/S de disco)
write_bytes (E/S de disco)
write_time (E/S de disco)
iops_in_progress (E/S de disco)
read_bytes (E/S de disco)
read_time (E/S de disco)
err_in (red)
err_out (red)
bytes_recv (red)
bytes_sent (red)
Kubelet_docker_operations (kubelet)
Métricas de contenedor cpuUsageNanoCores
cpuRequestNanoCores
cpuLimitNanoCores
memoryRssBytes
memoryWorkingSetBytes
memoryRequestBytes
memoryLimitBytes
restartTimeEpoch

Inventario de clústeres

En la siguiente lista se incluyen los datos de inventario de clústeres recopilados de forma predeterminada:

  • KubePodInventory: 1 por pod y minuto
  • KubeNodeInventory: 1 por nodo y minuto
  • KubeServices: 1 por servicio y minuto
  • ContainerInventory: 1 por contenedor y minuto

Pasos siguientes

Para ayudarle a comprender cuáles son los probables costos en base a los patrones de uso recientes de los datos recopilados con Container Insights, vea Análisis del uso en un área de trabajo de Log Analytics.