En este documento se describe cómo configurar Google Cloud Managed Service para Prometheus con la recogida autodesplegada. Se implementa una aplicación de ejemplo en un clúster de Kubernetes y la monitoriza un servidor de Prometheus que almacena las métricas recogidas en Monarch.
En este documento se explica cómo hacer lo siguiente:
- Configura tu entorno y tus herramientas de línea de comandos.
- Configura una cuenta de servicio para la federación de identidades de cargas de trabajo en clústeres habilitados para GKE.
- Ejecuta el archivo binario de Prometheus en Kubernetes.
- Controlar qué métricas se ingieren en Managed Service para Prometheus.
- Integra Managed Service para Prometheus con configuraciones de prometheus-operator.
- Compila y ejecuta manualmente el archivo binario de Prometheus.
Con la recogida de datos autodesplegada, gestionas tu instalación de Prometheus como siempre. La única diferencia es que ejecutas el binario de sustitución directa de Managed Service para Prometheus, gke.gcr.io/prometheus-engine/prometheus:v2.53.4-gmp.0-gke.1
, en lugar del binario de Prometheus upstream.
El archivo binario de inserción proporciona opciones de configuración adicionales con las marcas --export.*
. Para obtener más información, consulta el resultado de la opción --help
. En este documento se indican las opciones más importantes.
Managed Service for Prometheus no admite la exportación de métricas desde un servidor de federación ni desde un servidor utilizado como receptor de escritura remota. Puede replicar todas las funciones del servidor de federación, como reducir el volumen de ingesta agregando datos antes de enviarlos a Monarch, mediante filtros y agregaciones locales.
El streaming de datos a Managed Service para Prometheus consume recursos adicionales. Si vas a desplegar los colectores por tu cuenta, te recomendamos que multipliques por 5 los límites de CPU y memoria, y que los ajustes en función del uso real.
Para obtener más información sobre la recogida de datos gestionada y autodesplegada, consulta el artículo Recogida de datos con Managed Service para Prometheus.
Antes de empezar
En esta sección se describe la configuración necesaria para las tareas que se indican en este documento.
Configurar proyectos y herramientas
Para usar Google Cloud Managed Service para Prometheus, necesitas los siguientes recursos:
Un Google Cloud proyecto con la API de Cloud Monitoring habilitada.
Si no tienes ningún Google Cloud proyecto, haz lo siguiente:
En la Google Cloud consola, ve a Nuevo proyecto:
En el campo Nombre del proyecto, escribe el nombre que quieras darle al proyecto y, a continuación, haz clic en Crear.
Ve a Facturación:
Selecciona el proyecto que acabas de crear si aún no está seleccionado en la parte superior de la página.
Se te pedirá que elijas un perfil de pagos o que crees uno.
La API Monitoring está habilitada de forma predeterminada en los proyectos nuevos.
Si ya tienes un Google Cloud proyecto, asegúrate de que la API Monitoring esté habilitada:
Vaya a APIs y servicios:
Selecciona el proyecto.
Haz clic en Habilitar APIs y servicios.
Busca "Monitorización".
En los resultados de búsqueda, haz clic en "API Cloud Monitoring".
Si no se muestra "API habilitada", haz clic en el botón Habilitar.
Un clúster de Kubernetes. Si no tienes un clúster de Kubernetes, sigue las instrucciones de la guía de inicio rápido de GKE.
También necesitas las siguientes herramientas de línea de comandos:
gcloud
kubectl
Las herramientas gcloud
y kubectl
forman parte de Google Cloud CLI. Para obtener información sobre cómo instalarlos, consulta Gestionar componentes de Google Cloud CLI. Para ver los componentes de la CLI de gcloud que tienes instalados, ejecuta el siguiente comando:
gcloud components list
Configurar el entorno
Para no tener que introducir repetidamente el ID del proyecto o el nombre del clúster, haz la siguiente configuración:
Configura las herramientas de línea de comandos de la siguiente manera:
Configura gcloud CLI para que haga referencia al ID de tu proyectoGoogle Cloud :
gcloud config set project PROJECT_ID
Configura la CLI de
kubectl
para que use tu clúster:kubectl config set-cluster CLUSTER_NAME
Para obtener más información sobre estas herramientas, consulta los siguientes artículos:
- Información general sobre la CLI de gcloud
- Comandos de
kubectl
Configurar un espacio de nombres
Crea el espacio de nombres de Kubernetes NAMESPACE_NAME
para los recursos que crees
como parte de la aplicación de ejemplo:
kubectl create ns NAMESPACE_NAME
Verificar las credenciales de la cuenta de servicio
Si tu clúster de Kubernetes tiene habilitada la federación de identidades de carga de trabajo para GKE, puedes saltarte esta sección.
Cuando se ejecuta en GKE, Managed Service para Prometheus obtiene automáticamente las credenciales del entorno en función de la cuenta de servicio predeterminada de Compute Engine. La cuenta de servicio predeterminada tiene los permisos necesarios, monitoring.metricWriter
y monitoring.viewer
, de forma predeterminada. Si no usas Workload Identity Federation para GKE y has quitado alguno de esos roles de la cuenta de servicio de nodo predeterminada, tendrás que volver a añadir los permisos que faltan antes de continuar.
Configurar una cuenta de servicio para Workload Identity Federation for GKE
Si tu clúster de Kubernetes no tiene habilitada la federación de identidades de carga de trabajo para GKE, puedes saltarte esta sección.
Managed Service para Prometheus captura datos de métricas mediante la API de Cloud Monitoring. Si tu clúster usa la federación de Workload Identity para GKE, debes conceder permiso a tu cuenta de servicio de Kubernetes para usar la API Monitoring. En esta sección se describe lo siguiente:
- Crear una Google Cloud cuenta de servicio
gmp-test-sa
. - Asociar la cuenta de servicio Google Cloud a la cuenta de servicio de Kubernetes predeterminada en un espacio de nombres de prueba.
NAMESPACE_NAME
- Conceder el permiso necesario a la cuenta de servicio Google Cloud .
Crear y vincular la cuenta de servicio
Este paso aparece en varios lugares de la documentación de Managed Service para Prometheus. Si ya has completado este paso en una tarea anterior, no tienes que repetirlo. Vaya a la sección Autorizar la cuenta de servicio.
La siguiente secuencia de comandos crea la cuenta de servicio gmp-test-sa
y la vincula a la cuenta de servicio predeterminada de Kubernetes en el espacio de nombres NAMESPACE_NAME
:
gcloud config set project PROJECT_ID \ && gcloud iam service-accounts create gmp-test-sa \ && gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:PROJECT_ID.svc.id.goog[NAMESPACE_NAME/default]" \ gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ && kubectl annotate serviceaccount \ --namespace NAMESPACE_NAME \ default \ iam.gke.io/gcp-service-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com
Si usas un espacio de nombres o una cuenta de servicio de GKE diferentes, ajusta los comandos según corresponda.
Autorizar la cuenta de servicio
Los grupos de permisos relacionados se recogen en roles, y tú asignas los roles a una entidad principal, en este ejemplo, la Google Cloudcuenta de servicio. Para obtener más información sobre los roles de Monitoring, consulta Control de acceso.
El siguiente comando concede a la cuenta de servicio Google Cloud ,
gmp-test-sa
, los roles de la API Monitoring que necesita para
escribir
datos de métricas.
Si ya has concedido un rol específico a la Google Cloud cuenta de servicio como parte de una tarea anterior, no es necesario que lo hagas de nuevo.
gcloud projects add-iam-policy-binding PROJECT_ID\ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter
Depurar la configuración de Workload Identity Federation para GKE
Si tienes problemas para que funcione Workload Identity Federation para GKE, consulta la documentación sobre cómo verificar la configuración de Workload Identity Federation para GKE y la guía para solucionar problemas de Workload Identity Federation para GKE.
Como las erratas y las acciones de copiar y pegar parciales son las fuentes de errores más habituales al configurar la federación de identidades de carga de trabajo para GKE, te recomendamos encarecidamente que uses las variables editables y los iconos de copiar y pegar en los que se puede hacer clic que se incluyen en los ejemplos de código de estas instrucciones.
Workload Identity Federation para GKE en entornos de producción
En el ejemplo que se describe en este documento, se vincula la Google Cloud cuenta de servicio Google Clouda la cuenta de servicio predeterminada de Kubernetes y se le otorgan todos los permisos necesarios para usar la API Monitoring.
En un entorno de producción, puede que quieras usar un enfoque más detallado, con una cuenta de servicio para cada componente, cada una con permisos mínimos. Para obtener más información sobre cómo configurar cuentas de servicio para la gestión de identidades de cargas de trabajo, consulta Usar Workload Identity Federation para GKE.
Configurar la recogida con despliegue automático
En esta sección se describe cómo configurar y ejecutar una aplicación de ejemplo que usa la recogida autodesplegada.
Desplegar la aplicación de ejemplo
La aplicación de ejemplo emite la métrica de contador example_requests_total
y la métrica de histograma example_random_numbers
(entre otras) en su puerto metrics
. El archivo de manifiesto de la aplicación define tres réplicas.
Para desplegar la aplicación de ejemplo, ejecuta el siguiente comando:
kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.15.3/examples/example-app.yaml
Ejecuta el binario de Prometheus de sustitución
Para ingerir los datos de métricas emitidos por la aplicación de ejemplo, debes desplegar la versión bifurcada de Google del servidor de Prometheus, que está configurada para recoger las métricas de la carga de trabajo, así como su propio endpoint de métricas.
Para desplegar el servidor bifurcado, ejecuta el siguiente comando:
kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.15.3/examples/prometheus.yaml
El servidor de Prometheus desplegado es una bifurcación ligera del binario de Prometheus upstream. Se comporta como un servidor de Prometheus estándar, pero también ingiere datos en Managed Service para Prometheus.
El manifiesto anterior proporciona un ejemplo básico que envía datos al almacén de datos global, Monarch. No almacena de forma persistente una copia local de los datos. Para obtener información sobre cómo funciona esta configuración predefinida y cómo ampliarla, consulta la documentación de configuración de Prometheus de código abierto.
La imagen precompilada solo funciona en nodos Linux. Para raspar los destinos que se ejecutan en nodos de Windows, puedes desplegar el servidor en un nodo de Linux y configurarlo para que raspe los endpoints de los nodos de Windows o compilar el archivo binario para Windows.
Verifica que los pods del servidor de Prometheus y de la aplicación de ejemplo se hayan desplegado correctamente:
kubectl -n NAMESPACE_NAME get pod
Si el despliegue se ha realizado correctamente, verás un resultado similar al siguiente:
NAME READY STATUS RESTARTS AGE prom-example-84c6f547f5-fglbr 1/1 Running 0 5m prom-example-84c6f547f5-jnjp4 1/1 Running 0 5m prom-example-84c6f547f5-sqdww 1/1 Running 0 5m prometheus-test-0 2/2 Running 1 3m
Si utilizas GKE, puedes hacer lo siguiente:
- Para consultar las métricas insertadas por la aplicación de ejemplo, consulta Consultar con Cloud Monitoring o Consultar con Grafana.
- Para obtener información sobre cómo usar prometheus-operator y kube-prometheus con la recopilación autodesplegada, y para ver cómo compilar y ejecutar el archivo binario del servicio gestionado, consulta Temas adicionales sobre la recopilación autodesplegada.
Si no usas GKE, debes crear una cuenta de servicio y autorizarla para que escriba tus datos de métricas, tal como se describe en la siguiente sección.
Proporcionar credenciales explícitamente
Cuando se ejecuta en GKE, el servidor de Prometheus que recoge datos obtiene automáticamente las credenciales del entorno en función de la cuenta de servicio del nodo o de la configuración de Workload Identity Federation para GKE.
En los clústeres de Kubernetes que no son de GKE, las credenciales se deben proporcionar explícitamente al servidor de Prometheus que recoge los datos mediante marcas o la variable de entorno GOOGLE_APPLICATION_CREDENTIALS
.
Define el contexto de tu proyecto de destino:
gcloud config set project PROJECT_ID
Crea una cuenta de servicio:
gcloud iam service-accounts create gmp-test-sa
En este paso se crea la cuenta de servicio que puede que ya hayas creado en las instrucciones de Workload Identity Federation para GKE.
Concede los permisos necesarios a la cuenta de servicio:
gcloud projects add-iam-policy-binding PROJECT_ID\ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter
Crea y descarga una clave para la cuenta de servicio:
gcloud iam service-accounts keys create gmp-test-sa-key.json \ --iam-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com
Añade el archivo de claves como secreto a tu clúster que no sea de GKE:
kubectl -n NAMESPACE_NAME create secret generic gmp-test-sa \ --from-file=key.json=gmp-test-sa-key.json
Abre el recurso StatefulSet de Prometheus para editarlo:
kubectl -n NAMESPACE_NAME edit statefulset prometheus-test
Añade el texto que se muestra en negrita al recurso:
apiVersion: apps/v1 kind: StatefulSet metadata: namespace: NAMESPACE_NAME name: example spec: template containers: - name: prometheus args: - --export.credentials-file=/gmp/key.json ... volumeMounts: - name: gmp-sa mountPath: /gmp readOnly: true ... volumes: - name: gmp-sa secret: secretName: gmp-test-sa ...
Guarda el archivo y cierra el editor. Una vez aplicado el cambio, los pods se vuelven a crear y empiezan a autenticarse en el backend de métricas con la cuenta de servicio proporcionada.
GOOGLE_APPLICATION_CREDENTIALS
en lugar de usar las marcas definidas en este ejemplo.Temas adicionales sobre la recogida con despliegue automático
En esta sección se describe cómo hacer lo siguiente:
- Filtra los datos que exportas al servicio gestionado.
- Convierte tus configuraciones de implementación.
- Ejecuta el archivo binario de Prometheus en modo de alta disponibilidad.
- Compila y ejecuta el binario de Prometheus de sustitución.
- Ejecuta Managed Service para Prometheus fuera de Google Cloud.
Filtrar métricas exportadas
Si recoges muchos datos, puede que quieras evitar que se envíen algunas series temporales a Managed Service para Prometheus para reducir los costes.
Puedes usar configuraciones de reetiquetado de métricas normales en tu configuración de extracción de Prometheus. Con las configuraciones de reetiquetado, puedes eliminar métricas en función de las coincidencias de etiquetas en el momento de la ingestión.
En ocasiones, puede que quieras ingerir datos de forma local, pero no exportarlos a Managed Service para Prometheus. Para filtrar las métricas exportadas, puede usar la marca
--export.match
.La marca especifica uno o varios selectores de series de PromQL y se puede usar varias veces. Una serie temporal se exporta a Managed Service para Prometheus si cumple todos los selectores de al menos una de las marcas. Es decir, a la hora de determinar si cumple los requisitos, las condiciones de una misma marca se combinan con el operador lógico AND, mientras que las condiciones de marcas diferentes se combinan con el operador lógico OR. En el siguiente ejemplo se usan dos instancias de la marca:
./prometheus \ --export.match='{job="prometheus"}' \ --export.match='{__name__=~"job:.+"}' \ ...
Con este cambio, solo se exportarán las métricas del trabajo "prometheus", así como las métricas producidas por las reglas de registro que se agregan a nivel de trabajo (si se siguen las prácticas recomendadas de nomenclatura). Se excluyen las muestras de todas las demás series. De forma predeterminada, no se especifica ningún selector y se exportan todas las series temporales.
La marca
--export.match
tiene la misma semántica que el parámetromatch[]
en la federación de Prometheus. Por lo tanto, puedes migrar configuraciones de federación a Managed Service para Prometheus usando los selectores de tu servidor de federación directamente como marcas en los servidores de Prometheus recogidos por tu servidor de federación de Prometheus. No se admite la exportación de métricas de un servidor de federación al servicio gestionado.Para incluir métricas de tipo
histogram
en un filtro, debe especificar las métricas_count
,_sum
y_bucket
. También puedes hacerlo con un buscador de comodines, como el selector{__name__=~"histogram_metric_.+"}
.Si usas la biblioteca
prometheus-operator
, define las marcas--export.match
con la variable de entornoEXTRA_ARGS
del contenedor. Para obtener más información, consulta Usar con prometheus-operator.Puedes combinar marcas de filtro con reglas de registro ejecutadas localmente para agregar datos antes de enviarlos a Monarch, lo que reduce la cardinalidad y los costes. Para obtener más información, consulta Controles de costes y atribución.
La página Gestión de métricas de Cloud Monitoring proporciona información que puede ayudarte a controlar el importe que gastas en métricas facturables sin que esto afecte a la observabilidad. En la página Gestión de métricas se muestra la siguiente información:
- Volúmenes de ingesta para la facturación basada en bytes y en muestras, en todos los dominios de métricas y para métricas concretas.
- Datos sobre las etiquetas y la cardinalidad de las métricas.
- Número de lecturas de cada métrica.
- Uso de métricas en políticas de alertas y paneles de control personalizados.
- Tasa de errores de escritura de métricas.
También puede usar la página Gestión de métricas para excluir las métricas que no necesite y, de esta forma, no incurrir en los costes de ingesta. Para obtener más información sobre la página Gestión de métricas, consulta el artículo Ver y gestionar el uso de métricas.
Usar con prometheus-operator
El binario de Prometheus de Managed Service para Prometheus también se puede usar con un despliegue de Prometheus de GKE gestionado por prometheus-operator.
Para usar el archivo binario del servicio gestionado, sustituye la especificación de la imagen en el recurso de Prometheus:
apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: NAMESPACE_NAME namespace: gmp-system spec: image: gke.gcr.io/prometheus-engine/prometheus:v2.53.4-gmp.0-gke.1 ... replicas: 1 serviceAccountName: default version: v2.35.0 ...
Si estás en un clúster de Workload Identity Federation para GKE y el espacio de nombres o la cuenta de servicio de tu recurso son diferentes, repite las instrucciones de Workload Identity Federation para GKE para el espacio de nombres y la cuenta de servicio de Kubernetes adicionales.
Si se ejecuta en un clúster de Kubernetes que no sea de GKE, debes proporcionar las credenciales manualmente. Para proporcionar las credenciales, sigue estos pasos:
Añade un archivo de clave de cuenta de servicio adecuado como secreto, tal como se describe en Proporcionar credenciales explícitamente.
Modifica el recurso de Prometheus para añadir el texto que se muestra en negrita:
apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: namespace: NAMESPACE_NAME name: example spec: ... secrets: - gmp-test-sa containers: - name: prometheus env: - name: GOOGLE_APPLICATION_CREDENTIALS value: /gmp/key.json volumeMounts: - name: secret-gmp-test-sa mountPath: /gmp readOnly: true
Puede definir la variable de entorno
EXTRA_ARGS
del contenedor para añadir marcas adicionales, como las marcas de filtrado de métricas. Esto se hace a través de una variable de entorno porque la secciónargs
de la especificación del contenedor la gestiona Prometheus Operator.Usar con kube-prometheus
Puedes configurar las implementaciones creadas con la popular biblioteca kube-prometheus para que usen Managed Service para Prometheus.
Kube-prometheus tiene algunas dependencias internas estrictas en sus espacios de nombres y cuentas de servicio predeterminados, por lo que te recomendamos que solo cambies el número mínimo de campos necesario para enviar datos a Managed Service para Prometheus.
En
manifests/prometheus-prometheus.yaml
, sustituye la especificación de la imagen y desactiva la recogida de alta disponibilidad reduciendoreplicas
a 1:apiVersion: monitoring.coreos.com/v1 kind: Prometheus ... spec: image: gke.gcr.io/prometheus-engine/prometheus:v2.53.4-gmp.0-gke.1 ... replicas: 1 version: v2.35.0 ...
Si se ejecuta en GKE y no ha modificado la cuenta de servicio predeterminada del nodo, al aplicar los manifiestos modificados, se debería empezar a enviar datos a Managed Service para Prometheus inmediatamente. De lo contrario, es posible que tengas que configurar y aplicar una cuenta de servicio. Cuando se ejecuta en GKE y se usa Workload Identity, es posible que tengas que crear y autorizar la cuenta de servicio
prometheus-k8s
en el espacio de nombresmonitoring
. Si se ejecuta en un clúster de Kubernetes que no sea de GKE, siga las instrucciones de la sección prometheus-operator.Ten en cuenta que kube-prometheus recoge muchas métricas de forma predeterminada, la mayoría de las cuales no suelen ser necesarias en un entorno de Kubernetes gestionado como GKE. Para ahorrar costes de ingesta, puedes personalizar kube-prometheus para que solo recoja las métricas que te interesen y filtre las métricas exportadas de forma agresiva.
Para ver más sugerencias, consulta Controles de costes y atribución.
Implementación de alta disponibilidad
El binario de Prometheus de sustitución incluye compatibilidad integrada con la recopilación de alta disponibilidad mediante la elección de líder. Los servidores de Prometheus replicados en modo de alta disponibilidad recogen métricas y evalúan reglas como de costumbre, pero solo uno de ellos envía datos a Google Cloud Managed Service para Prometheus.
Las réplicas del mismo servidor de Prometheus siempre deben tener configuraciones idénticas, incluido el mismo
external_labels
. Este requisito es diferente al de otros sistemas, que se basan en una etiqueta externa especial, como__replica__
, para que las réplicas sean explícitamente diferentes.El servidor de la API de Kubernetes es un backend de elección de líder compatible y se puede habilitar configurando las siguientes marcas:
./prometheus ... --export.ha.backend=kube \ --export.ha.kube.namespace=LEASE_NAMESPACE \ --export.ha.kube.name=LEASE_NAME
Los valores LEASE_NAMESPACE y LEASE_NAME identifican el recurso de concesión a través del cual se lleva a cabo la elección del líder. Todos los servidores de Prometheus que apuntan al mismo recurso pertenecen al mismo conjunto de réplicas. La cuenta de servicio de Kubernetes de la implementación de Prometheus necesita permiso para leer y escribir el recurso Lease correspondiente. Si ejecutas el servidor de Prometheus fuera de un clúster de Kubernetes, puedes proporcionar una configuración explícita mediante la marca
--export.ha.kube.config
.Después de hacerlo, puedes aumentar el valor de
replicas
a 2 o más.Etiquetas reservadas
Managed Service para Prometheus usa seis etiquetas reservadas para identificar de forma única un recurso en Monarch:
project_id
: identificador del Google Cloud proyecto asociado a tu métrica. Obligatorio.location
: la ubicación física (Google Cloud región) donde se almacenan los datos. Este valor suele ser la región de tu clúster de GKE. Si los datos se recogen de una implementación de AWS o local, el valor puede ser la región de Google Cloud más cercana. Obligatorio.cluster
: nombre del clúster de Kubernetes asociado a la métrica. Si no se ejecuta en Kubernetes, se puede usar como un nivel de jerarquía arbitrario, como un grupo de instancias. Es opcional, pero muy recomendable.namespace
: nombre del espacio de nombres de Kubernetes asociado a la métrica. Si no se ejecuta en Kubernetes, se puede usar como un nivel de jerarquía arbitrario, como un subgrupo de instancias. Es opcional, pero muy recomendable.job
: la etiqueta de trabajo del destino de Prometheus, si se conoce. Puede estar vacía en los resultados de la evaluación de reglas. Obligatorio y, por lo general, añadido automáticamente por Prometheus.instance
: etiqueta de instancia del destino de Prometheus, si se conoce. Puede estar vacía en los resultados de la evaluación de reglas. Obligatorio y, por lo general, añadido automáticamente por Prometheus. Si se definen o se vuelven a etiquetar manualmente, no uses valores codificados, comolocalhost
, ya que esto provoca colisiones de series temporales.
Cuando se ejecuta en Google Cloud, las etiquetas
project_id
,location
ycluster
se añaden automáticamente a todas las métricas.Aunque no se recomienda cuando se ejecuta en Google Cloud, puedes anular las etiquetas
project_id
,location
,cluster
ynamespace
mediante la secciónglobal.external_labels
de tu configuración de Prometheus. Para obtener más información, consulta Ejecutar la recogida autodesplegada fuera deGoogle Cloud.Si usa alguna etiqueta reservada como etiqueta de métrica, la recogida autodesplegada usará la etiqueta de métrica como valor de la etiqueta reservada. Esto puede ofrecer cierta flexibilidad, pero también puede provocar errores si, por ejemplo, usas la etiqueta
location
para hacer referencia a algo que no sea unaGoogle Cloud región.Configurar statsd_exporter y otros exportadores que registren métricas de forma centralizada
Si usas statsd_exporter para Prometheus, Envoy para Istio, SNMP exporter, Prometheus Pushgateway o kube-state-metrics, o bien tienes otro exportador similar que intermedia y registra métricas en nombre de otros recursos que se ejecutan en tu entorno, debes hacer algunos cambios pequeños para que tu exportador funcione con Managed Service para Prometheus.
Para obtener instrucciones sobre cómo configurar estos exportadores, consulta esta nota de la sección Solución de problemas.
Implementaciones binarias
Si quieres ejecutarlo en un entorno no contenedorizado, puedes compilar el archivo binario de Prometheus de sustitución directamente.
Compilar el código fuente
Si ya tienes un proceso para compilar Prometheus, puedes sustituir de forma transparente nuestro repositorio de GitHub en tu proceso. Managed Service para Prometheus tiene su propia extensión de etiqueta de versión para distinguir sus lanzamientos de los lanzamientos de la versión upstream.
Para compilar el archivo binario sin formato, se deben instalar en el equipo la cadena de herramientas de Go y versiones recientes de NPM o Yarn. Para obtener más información, consulta las instrucciones de compilación upstream.
Clona el repositorio:
git clone https://github.com/GoogleCloudPlatform/prometheus && cd prometheus
Elige la etiqueta de la versión que te interesa:
git checkout v2.53.4-gmp.0
Para crear un archivo tar de Managed Service para Prometheus, ejecuta los siguientes comandos:
make build && make tarball
El archivo tar.gz y los archivos binarios resultantes son totalmente compatibles con sus variantes upstream en cuanto a estructura de directorios y funcionalidad.
Límites para crear y actualizar métricas y etiquetas
Managed Service para Prometheus aplica un límite de frecuencia por minuto a la hora de crear métricas y de añadir etiquetas de métricas a métricas ya creadas. Este límite de frecuencia solo se suele alcanzar cuando se integra por primera vez con Managed Service para Prometheus, por ejemplo, cuando migras una implementación de Prometheus antigua a la recogida autodesplegada. No se trata de un límite de frecuencia para ingerir puntos de datos. Este límite de frecuencia solo se aplica cuando se crean métricas que no se han visto nunca o cuando se añaden etiquetas nuevas a métricas ya creadas.
Esta cuota es fija, pero los problemas deberían resolverse automáticamente a medida que se creen nuevas métricas y etiquetas de métricas hasta alcanzar el límite por minuto.
Para obtener más información, consulta Solución de problemas.
Ejecutar la recogida autodesplegada fuera de Google Cloud
En entornos de Compute Engine, entornos de GKE o en una máquina en la que hayas ejecutado
gcloud login
con una cuenta suficientemente autorizada, puedes ejecutar la recogida autodesplegada sin necesidad de realizar más configuraciones. Fuera de Google Cloud, debes proporcionar explícitamente credenciales, unproject_id
que contenga tus métricas y unlocation
(regiónGoogle Cloud ) para almacenar tus métricas. También debes definir las etiquetascluster
ynamespace
, aunque se ejecute en un entorno que no sea de Kubernetes.Puedes proporcionar una clave de cuenta de servicio mediante la marca
--export.credentials-file
o la variable de entornoGOOGLE_APPLICATION_CREDENTIALS
, tal como se describe en la sección Proporcionar credenciales explícitamente.Te recomendamos que elijas
project_id
en función del modelo de tenencia que tengas previsto para las lecturas. Elige un proyecto en el que almacenar las métricas en función de cómo quieras organizar las lecturas más adelante con los ámbitos de métricas. Si no te importa, puedes ponerlo todo en un proyecto.En el caso de
location
, te recomendamos que elijas la región Google Cloud más cercana a tu implementación. Cuanto más lejos esté la región elegida de tu implementación, mayor será la latencia de escritura y más te afectarán los posibles problemas de red. Google Cloud Puede consultar esta lista de regiones de varias nubes. Si no te importa, puedes ponerlo todo en una Google Cloud región. No puedes usarglobal
como tu ubicación.Si se ejecuta en un entorno de Kubernetes, define los valores
cluster
ynamespace
en el clúster y el espacio de nombres locales. Si se ejecuta fuera de Kubernetes, asígnales valores que tengan sentido jerárquicamente. Por ejemplo, en un entorno basado en máquinas virtuales que se ejecute en AWS, defina el valor decluster
en__aws__
y el valor denamespace
en el ID de la instancia. Puedes rellenar dinámicamente el ID de instancia mediante una regla de reetiquetado que llame al servidor de metadatos local.Para ver un ejemplo de funcionamiento mínimo, puedes ejecutar un archivo binario de Prometheus local y de automonitorización con el siguiente comando:
./prometheus \ --config.file=documentation/examples/prometheus.yaml \ --export.label.project-id=PROJECT_ID \ --export.label.location=REGION \ --export.label.cluster=CLUSTER_NAME \
En este ejemplo, se presupone que ha asignado a la variable
REGION
un valor comous-central1
.Sin embargo, te recomendamos que definas las etiquetas de destino
export
del servicio gestionado en la secciónglobal.external_labels
de tu configuración de Prometheus. Por ejemplo, en entornos de Kubernetes, puedes usar la siguiente configuración:global: external_labels: project_id: PROJECT_ID location: REGION cluster: CLUSTER_NAME namespace: local-testing scrape_configs: ...
Si ejecutas el servicio gestionado de Prometheus fuera de Google Cloud , se te cobrarán tarifas por transferencia de datos. Se aplican tarifas por transferir datos a Google Cloud, y es posible que se te cobren tarifas por transferir datos desde otra nube. Puedes minimizar este coste habilitando la compresión con la marca
--export.compression=gzip
.Siguientes pasos
- Usa PromQL en Cloud Monitoring para consultar métricas de Prometheus.
- Usa Grafana para consultar métricas de Prometheus.
- Usa alertas de PromQL en Cloud Monitoring.
- Configura la evaluación de reglas gestionadas.
- Configura la evaluación de reglas desplegadas automáticamente.
- Reduce la cardinalidad y el coste configurando agregaciones locales.