Controles de costos y atribución

Google Cloud Managed Service para Prometheus cobra por la cantidad de muestras transferidas a Cloud Monitoring y por las solicitudes de lectura a la API de Monitoring. El número de muestras transferidas es el factor principal del costo.

En este documento, se describe cómo puedes controlar los costos asociados con la transferencia de métricas y cómo identificar las fuentes de las transferencias de alto volumen.

Si deseas obtener más información sobre los precios de Managed Service para Prometheus, consulta el resumen de precios de Managed Service para Prometheus.

Visualiza tu factura

Para ver tu factura de Google Cloud, haz lo siguiente:

  1. En Google Cloud Console, ve a la página Facturación.

    Ir a Facturación

  2. Si tienes más de una cuenta de facturación, selecciona Ir a la cuenta de facturación vinculada para ver la cuenta de facturación del proyecto actual. Para ubicar otra cuenta de facturación, selecciona Administrar cuentas de facturación y elige la cuenta de la que deseas obtener informes de uso.

  3. Selecciona Informes.

  4. En el menú Servicios, selecciona la opción Stackdriver Monitoring.

  5. En el menú SKU, selecciona las siguientes opciones:

    • Muestras transferidas de Managed Service para Prometheus
    • Solicitudes a la API de Monitoring

En la siguiente captura de pantalla, se muestra el informe de facturación de Managed Service para Prometheus de un proyecto:

En el informe de facturación de Managed Service para Prometheus, se muestra el uso actual y proyectado.

Reduce los costos

A fin de reducir los costos asociados con el uso de Managed Service para Prometheus, puedes hacer lo siguiente:

  • Filtra los datos de métricas que generas para reducir la cantidad de series temporales que envías al servicio administrado.
  • Cambia el intervalo de scraping para reducir la cantidad de muestras que recopilas.
  • Limita la cantidad de muestras de métricas con alta cardinalidad que puedan estar mal configuradas.

Reduce la cantidad de series temporales

La documentación de Prometheus de código abierto rara vez recomienda filtrar el volumen de métricas, que es razonable cuando los costos están delimitados por costos de máquina. Pero cuando se paga a un proveedor de servicios administrados por unidad, el envío de datos ilimitados puede generar facturas innecesariamente altas.

Los exportadores incluidos en el proyecto kube-prometheus (en particular, el servicio kube-state-metrics) pueden emitir muchos datos de métricas. Por ejemplo, el servicio kube-state-metrics emite cientos de métricas, muchas de las cuales pueden no tener ningún valor para ti como consumidor. Un clúster nuevo de tres nodos que usa el proyecto kube-prometheus envía alrededor de 900 muestras por segundo al servicio administrado para Prometheus. Filtrar estas métricas innecesarias puede ser suficiente para que tu factura se reduzca a un nivel aceptable.

Para reducir la cantidad de métricas, puedes hacer lo siguiente:

Por ejemplo, si usas el servicio kube-state-metrics, te recomendamos comenzar con un filtro keep en tu configuración de recopilación y, luego, ajustarlo. Por ejemplo, si usas el siguiente filtro en un clúster de tres nodos nuevo, se reduce el volumen de muestra en aproximadamente 125 muestras por segundo:

kube_(daemonset|deployment|pod|namespace|node|statefulset).+

A veces, puede que un exportador completo no sea importante. Por ejemplo, el paquete kube-prometheus instala los siguientes monitores de servicio de forma predeterminada, muchos de los cuales son innecesarios en un entorno administrado:

  • alertmanager
  • coredns
  • grafana
  • kube-apiserver
  • kube-controller-manager
  • kube-scheduler
  • kube-state-metrics
  • kubelet
  • node-exporter
  • prometheus
  • prometheus-adapter
  • prometheus-operator

Para reducir la cantidad de métricas que exportas, puedes borrar, inhabilitar o detener el scraping de los monitores de servicios que no necesitas. Por ejemplo, inhabilitar el monitor de servicios kube-apiserver en un clúster de tres nodos nuevo reduce el volumen de muestras en aproximadamente 200 muestras por segundo.

Reduce la cantidad de muestras recopiladas

Managed Service para Prometheus cobra por muestra. Puedes reducir la cantidad de muestras transferidas si aumentas la duración del período de scraping. Por ejemplo:

  • Cambiar un período de scraping de 10 segundos a 30 segundos puede reducir tu volumen de muestras en un 66%, sin perder mucha información.
  • Cambiar un período de muestreo de 10 segundos a 60 segundos puede reducir el volumen de muestras en un 83%.

Para obtener información sobre cómo se cuentan las muestras y cómo el período de muestreo afecta la cantidad de muestras, consulta Ejemplos de precios basados en muestras transferidas.

Por lo general, puedes establecer el intervalo de scraping por trabajo o por objetivo.

Para la recopilación administrada, configura el intervalo de scraping en el recurso PodMonitoring mediante el campo interval. Para la recopilación autoimplementada, debes establecer el intervalo de muestreo en tu configuración de scraping, por lo general, mediante la configuración de un campo interval o scrape_interval.

Limita las muestras de las métricas de cardinalidad alta

Puedes crear métricas de cardinalidad alta si agregas etiquetas que tengan una gran cantidad de valores potenciales, como un ID de usuario o una dirección IP. Estas métricas pueden generar una gran cantidad de muestras. El uso de etiquetas con una gran cantidad de valores suele ser una configuración incorrecta. Puedes protegerte contra las métricas de cardinalidad alta en los colectores implementados de forma automática si configuras un valor sample_limit en tu configuración de recopilación.

Si usas este límite, te recomendamos que lo establezcas en un valor muy alto, de modo que solo detecte métricas que estén mal configuradas. Cualquier muestra que supere el límite se descarta, y puede ser muy difícil diagnosticar los problemas causados por exceder el límite.

Usar un límite de muestra no es una buena forma de administrar la transferencia de muestras, pero el límite puede protegerte contra una configuración incorrecta accidental. Para obtener más información, consulta Usa sample_limit para evitar la sobrecarga.

Identifica y atribuye costos

Puedes usar Cloud Monitoring para identificar las métricas de Prometheus que escriben la mayor cantidad de muestras. Estas métricas son las que más contribuyen a los costos. Después de identificar las métricas más costosas, puedes modificar tus archivos de configuración de recopilación para filtrarlas de forma adecuada.

En las siguientes secciones, se describen formas de analizar la cantidad de muestras que envías a Managed Service para Prometheus y atribuir el gran volumen a métricas específicas, espacios de nombres de Kubernetes y regiones de Google Cloud.

Identifica métricas de gran volumen

Para identificar las métricas de Prometheus con los volúmenes de transferencia más grandes, haz lo siguiente:

  1. En Google Cloud Console, ve a la página Supervisión.

    Ir a Monitoring

  2. En el panel de navegación de Monitoring, haz clic en  Explorador de métricas.
  3. Selecciona la pestaña Configuración y, luego, usa la siguiente información para completar los campos:
    1. Para el Tipo de recurso, ingresa o selecciona Atribución de transferencia de métricas.
    2. En el campo Métrica, ingresa o selecciona Muestras escritas por ID de atribución.
    3. En el campo Agrupar por, selecciona metric_type.
    4. En el campo Agregador, selecciona suma.

    Ahora, el gráfico muestra los volúmenes de transferencia para cada tipo de métrica.

  4. Para identificar las métricas con los volúmenes de transferencia más grandes, haz clic en Valor en la leyenda del gráfico.

El gráfico resultante, que muestra tus 300 métricas principales por volumen clasificadas por media, se parece a la siguiente captura de pantalla:

En el gráfico configurado, se muestra el volumen de transferencia de métricas para cada métrica.

Identifica espacios de nombres de gran volumen

También puedes usar los tipos de métricas y recursos del ejemplo anterior para atribuir el volumen de transferencia a espacios de nombres específicos de Kubernetes y, luego, tomar las medidas adecuadas. Por ejemplo:

  • Para correlacionar el volumen de transferencia general con los espacios de nombres, selecciona las siguientes etiquetas en el campo Agrupar por:

    • attribution_dimension
    • attribution_id
  • A fin de correlacionar el volumen de transferencia de las métricas individuales con los espacios de nombres, selecciona las siguientes etiquetas para el campo Agrupar por:

    • attribution_dimension
    • attribution_id
    • metric_type
  • Para identificar los espacios de nombres responsables de una métrica específica de gran volumen, sigue estos pasos:

    1. Identifica el tipo de métrica para la métrica de gran volumen mediante uno de los otros ejemplos a fin de identificar los tipos de métricas de gran volumen. El tipo de métrica es la string en la leyenda del gráfico que comienza con prometheus.googleapis.com/.
    2. Para restringir los datos del gráfico a un tipo de métrica específico, agrega un filtro para el tipo de métrica en el campo Filtros. Por ejemplo:

      metric_type=prometheus.googleapis.com/container_tasks_state/gauge

    3. Selecciona las siguientes etiquetas para el campo Agrupar por:

      • attribution_dimension
      • attribution_id
  • Para ver la transferencia por región de Google Cloud, agrega la etiqueta location al campo Agrupar por.

  • Para ver la transferencia por proyecto de Cloud, agrega la etiqueta resource_container al campo Agrupar por.