Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Además de los destinos de extracción predeterminados que el agente de Prometheus de Azure Monitor extrae de forma predeterminada, siga estos pasos para proporcionar una configuración de extracción adicional al agente mediante un ConfigMap. El agente de Prometheus de Azure Monitor no entiende ni el operador de procesos CRD para la configuración de la extracción, sino que usa la configuración nativa de Prometheus tal como se define en Configuración de Prometheus.
Los tres mapas de configuración que se pueden usar para la extracción de destinos personalizados son -
- ama-metrics-prometheus-config (recomendado): cuando se crea un ConfigMap con este nombre, los trabajos de extracción definidos en él se ejecutan desde el pod de réplica de métricas de Azure Monitor que se ejecuta en el clúster.
- ama-metrics-prometheus-config-node (avanzado): cuando se crea un ConfigMap con este nombre, los trabajos de extracción definidos en él se ejecutan desde cada pod de DaemonSet de Linux que se ejecuta en el clúster. Para obtener más información, consulte la Configuración avanzada.
- ama-metrics-prometheus-config-node-windows (avanzado): cuando se crea un ConfigMap con este nombre, los trabajos de extracción definidos en él se ejecutan desde cada DaemonSet de Windows. Para obtener más información, consulte la Configuración avanzada.
Creación de un archivo de configuración de Prometheus
Una manera más sencilla de crear trabajos de configuración de extracción de Prometheus:
- Paso 1: Use un archivo de configuración (yaml) para crear o definir trabajos de extracción
- Paso:2 Valide el archivo de configuración de extracción mediante una herramienta personalizada (como se especifica en este artículo) y, a continuación, convierta ese archivo configfile en configmap
- Paso 3: Implemente el archivo de configuración de extracción como configmap en los clústeres.
De este modo, es más fácil crear la configuración de yaml (que es extremadamente sensible al espacio) y no agregar espacios no deseados mediante la creación directa de la configuración de extracción dentro del configMap.
Cree un archivo de configuración de scrape de Prometheus denominado prometheus-config
. Para más información, consulte las sugerencias y ejemplos de configuración, que proporcionan más detalles sobre la creación de la configuración de extracción para Prometheus. También puede consultar Prometheus.io de configuración de extracción de referencia. El archivo de configuración muestra las configuraciones de extracción en la sección scrape_configs
y, como opción, puede usar la sección global para establecer el valor global scrape_interval
, scrape_timeout
y external_labels
.
Sugerencia
Los cambios en la sección global repercutirán en las configuraciones predeterminadas y la configuración personalizada.
Este es un archivo de configuración de ejemplo de Prometheus para extraer:
global:
scrape_interval: 30s
scrape_configs:
- job_name: my_static_config
scrape_interval: 60s
static_configs:
- targets: ['my-static-service.svc.cluster.local:1234']
- job_name: prometheus_example_app
scheme: http
kubernetes_sd_configs:
- role: service
relabel_configs:
- source_labels: [__meta_kubernetes_service_name]
action: keep
regex: "prometheus-example-service"
Validación del archivo de configuración de extracción
El agente usa una herramienta promconfigvalidator
personalizada para validar la configuración de Prometheus que se le ha dado mediante el archivo ConfigMap. Si la configuración no es válida, el agente de complemento rechaza la configuración personalizada especificada. Una vez que tenga el archivo de configuración de Prometheus, puede usar opcionalmente la herramienta promconfigvalidator
para validar la configuración antes de crear un archivo configmap que consuma el agente.
La herramienta promconfigvalidator
se incluye dentro de los pods del complemento de métricas de Azure Monitor. Puede usar cualquiera de los pods de ama-metrics-node-*
en kube-system
espacio de nombres del clúster para descargar la herramienta para la validación. Usa kubectl cp
para descargar la herramienta y su configuración:
for podname in $(kubectl get pods -l rsName=ama-metrics -n=kube-system -o json | jq -r '.items[].metadata.name'); do kubectl cp -n=kube-system "${podname}":/opt/promconfigvalidator ./promconfigvalidator; kubectl cp -n=kube-system "${podname}":/opt/microsoft/otelcollector/collector-config-template.yml ./collector-config-template.yml; chmod 500 promconfigvalidator; done
Después de copiar el archivo ejecutable y el yaml, busque la ruta de acceso del archivo de configuración de Prometheus que creó. Luego, reemplace <config path>
en el comando y ejecute el validador por el comando:
./promconfigvalidator/promconfigvalidator --config "<config path>" --otelTemplate "./promconfigvalidator/collector-config-template.yml"
Al ejecutar el validador, se genera el archivo de configuración combinado merged-otel-config.yaml
si no se proporciona ninguna ruta de acceso con el parámetro output
opcional. No use este archivo combinado generado automáticamente como configuración para el agente del recopilador de métricas, ya que solo se usa con fines de validación y depuración de herramientas.
Desplegar archivo de configuración como configmap
El archivo de configuración de Prometheus se consume como un campo denominado prometheus-config
dentro de los ConfigMap del complemento de métricas ama-metrics-prometheus-config
(o) ama-metrics-prometheus-config-node
(o) ama-metrics-prometheus-config-node-windows
en el espacio de nombres kube-system
. Puede crear un ConfigMap desde el archivo de configuración de extracción que ha creado anteriormente, cambiando el nombre del archivo de configuración de Prometheus a prometheus-config
(sin extensión de archivo) y ejecutando uno o varios de los siguientes comandos, en función de qué ConfigMap quiera crear para la configuración de los trabajos de extracción personalizados.
Ex;- para crear configmap que va a usar replicsset
kubectl create configmap ama-metrics-prometheus-config --from-file=prometheus-config -n kube-system
Esto crea un ConfigMap denominado ama-metrics-prometheus-config
en el espacio de nombres kube-system
. El pod de réplica de métricas de Azure Monitor se reinicia en 30 a 60 segundos para aplicar la nueva configuración. Para ver si hay algún problema con la validación, el procesamiento o la combinación de la configuración, puede examinar los ama-metrics
pods de réplica
Por ejemplo, para crear un ConfigMap que utilizará el DaemonSet de Linux
kubectl create configmap ama-metrics-prometheus-config-node --from-file=prometheus-config -n kube-system
Esto crea un ConfigMap denominado ama-metrics-prometheus-config-node
en el espacio de nombres kube-system
. Cada métrica de Azure Monitor DaemonSet pod de Linux se reinicia en 30-60 segundos para aplicar la nueva configuración. Para ver si hay algún problema con la validación, el procesamiento o la combinación de la configuración, puede consultar los ama-metrics-node
pods de deamonset de Linux
Por ejemplo, para crear un ConfigMap que utilizará el DaemonSet de Windows
kubectl create configmap ama-metrics-prometheus-config-node-windows --from-file=prometheus-config -n kube-system
Esto crea un ConfigMap denominado ama-metrics-prometheus-config-node-windows
en el espacio de nombres kube-system
. Cada métrica de Azure Monitor, el pod de Windows DaemonSet se reinicia en 30 a 60 segundos para aplicar la nueva configuración. Para ver si hay algún problema con la validación, el procesamiento o la combinación de la configuración, puede consultar los ama-metrics-win-node
pods de windows deamonset
Asegúrese de que el archivo de configuración de Prometheus se llame prometheus-config
antes de ejecutar el comando siguiente, ya que el nombre de archivo se usa como nombre de configuración del configmap.
Esto crea un ConfigMap denominado ama-metrics-prometheus-config
en el espacio de nombres kube-system
. El pod de métricas de Azure Monitor se reinicia para aplicar la nueva configuración. Para ver si hay algún problema con la validación, el procesamiento o la combinación de la configuración, puede examinar los ama-metrics
pods.
ama-metrics-prometheus-config
Aquí se muestra un ejemplo del archivo configmap .
Solución de problemas
Si creó correctamente el configmap (ama-metrics-prometheus-config o ama-metrics-prometheus-config-node) en el espacio de nombres kube-system y todavía no ve los destinos personalizados que se están eliminando, compruebe si hay errores en los registros de pod de réplica de ama-metrics-prometheus-config configmap o DaemonSet pod registros de ama-metrics-prometheus-config-node configmap) mediante kubectl registra y asegúrese de que no hay errores en la sección Iniciar a combinar la configuración predeterminada y personalizada de Prometheus con el prefijo prometheus-config-merger
Nota:
Configuración avanzada: Configuración de trabajos personalizados de extracción de Prometheus para DaemonSet
El pod de ama-metrics
Réplica consume la configuración personalizada de Prometheus y extrae los destinos especificados. Para un clúster con un gran número de nodos y pods y un volumen grande de métricas para extraer, algunos de los destinos de extracción personalizados aplicables se pueden descargar desde el pod de réplica único ama-metrics
al pod del DaemonSet ama-metrics
.
El configmap ama-metrics-prometheus-config-node es similar al configmap replica-set, y se puede crear para tener configuraciones de extracción estáticas en cada nodo. La configuración de extracción solo debe tener como destino un solo nodo y no debe usar anotaciones de pod o detección de servicios. De lo contrario, cada nodo intenta extraer todos los destinos y realiza muchas llamadas al servidor de API de Kubernetes.
Los objetivos de raspar personalizados pueden seguir el mismo formato usando static_configs
con objetivos, usando la variable de entorno $NODE_IP
y especificando el puerto para raspar. Cada pod del DaemonSet toma la configuración, extrae las métricas y las envía para ese nodo.
Ejemplo: la configuración node-exporter
que se muestra a continuación es uno de los destinos predeterminados para los pods del DaemonSet. Usa la variable de entorno $NODE_IP
, que ya está establecida para cada contenedor de complementos ama-metrics
para establecer como destino un puerto específico en el nodo.
- job_name: nodesample
scrape_interval: 30s
scheme: http
metrics_path: /metrics
relabel_configs:
- source_labels: [__metrics_path__]
regex: (.*)
target_label: metrics_path
- source_labels: [__address__]
replacement: '$NODE_NAME'
target_label: instance
static_configs:
- targets: ['$NODE_IP:9100']