Si está utilizando nuestra integración de escritura remota Prometheus en una configuración de alta disponibilidad (HA), debe asegurarse de que sus servidores Prometheus no envíen múltiples copias de la misma métrica a New Relic. Este documento describe cómo puedes configurar tu integración de escritura remota para que New Relic no mantenga métricas duplicadas.
Sugerencia
Esta página se aplica solo si ejecuta sus propios servidores Prometheus en una configuración de alta disponibilidad y reenvía métricas con escritura remota. Si aún no ejecuta Prometheus, el agente de Prometheus para Kubernetes es una alternativa totalmente administrada por New Relic que no requiere deduplicación de alta disponibilidad; consulte Enviar datos de métricas de Prometheus a New Relic para comparar sus opciones.
Referencia rápida
New Relic deduplica las réplicas de HA utilizando tres valores. Configure los tres en cada réplica de un clúster de alta disponibilidad:
Valores | Dónde lo configura | Valor en las réplicas del mismo clúster de HA | Ejemplo |
|---|---|---|---|
| Prometheus etiqueta externa | Igual para todas las réplicas |
|
| Prometheus etiqueta externa | Único por réplica |
|
|
| Igual para todas las réplicas |
|
Cómo funciona: New Relic organiza las réplicas en clústeres de HA según su cuenta, la etiqueta prometheus y el parámetro prometheus_server. En cada clúster, New Relic designa una réplica como líder y almacena solo los datos de ese líder. El líder se identifica mediante la etiqueta prometheus_replica.
Configurar la deduplicación
Operador Prometheus
Prometheus Operator versión 0.19.0 o superior agrega las etiquetas externas prometheus y prometheus_replica por usted, ya sea que use el operador directamente o a través del helm chart:
prometheusse establece en<prometheus deployment namespace>/<prometheus deployment name>. Por ejemplo, un despliegue llamadoprometheus-cluster1en el namespacemonitoringproducemonitoring/prometheus-cluster1.prometheus_replicase establece en el nombre del pod de cada réplica, en el formatoreplica-<replica number>(por ejemplo,replica-1).
Establezca prometheus_server en la configuración de remoteWrite en el recurso Prometheus, usando el mismo valor para cada réplica. Por ejemplo, este recurso ejecuta un par de alta disponibilidad (HA) de dos réplicas con un solo bloque remoteWrite, por lo que prometheus_server se mantiene consistente en ambas réplicas:
apiVersion: monitoring.coreos.com/v1kind: Prometheusmetadata: name: monitoring-cluster namespace: monitoringspec: replicas: 2 remoteWrite: - url: https://metric-api.newrelic.com/prometheus/v1/write?prometheus_server=prod-monitoring authorization: credentials: name: nr-license-key key: licenseKeyLuego, el operador establece prometheus en monitoring/monitoring-cluster y prometheus_replica en el nombre del pod de cada réplica automáticamente — usted solo proporciona prometheus_server. Si utiliza el chart de Helm kube-prometheus-stack, configure el mismo bloque remoteWrite en prometheus.prometheusSpec.
Prometheus independiente
Agregue las etiquetas externas al archivo de configuración de cada réplica y use una URL de remote_write idéntica —incluido el parámetro prometheus_server — en todas las réplicas.
Replica 1 (prometheus.yml)
global: external_labels: prometheus: monitoring-cluster prometheus_replica: replica-1
remote_write: - url: https://metric-api.newrelic.com/prometheus/v1/write?prometheus_server=prod-monitoring authorization: credentials: YOUR_LICENSE_KEYReplica 2 (prometheus.yml)
global: external_labels: prometheus: monitoring-cluster prometheus_replica: replica-2
remote_write: - url: https://metric-api.newrelic.com/prometheus/v1/write?prometheus_server=prod-monitoring authorization: credentials: YOUR_LICENSE_KEYSolo prometheus_replica difiere entre las dos réplicas; prometheus y prometheus_server son idénticos.
Limitaciones
Mantenga prometheus_server idéntico en todas las réplicas. Debido a que New Relic usa prometheus_server para agrupar réplicas, dar a las réplicas valores diferentes —por ejemplo, por host o por pod— coloca a cada una en su propio grupo de HA. Cada réplica se convierte en el único miembro de su grupo, siempre es elegida líder y retiene todos sus datos. El resultado son datos duplicados en New Relic sin ningún error o advertencia, ya que cada réplica aparece como un líder independiente y en buen estado. Para distinguir las réplicas individuales, use la etiqueta prometheus_replica en su lugar.
Una cuenta puede tener hasta 1500 clústeres de Prometheus HA únicos, contados por combinación única de cuenta, etiqueta de prometheus y parámetro de prometheus_server. Exceder este límite hace que se descarten los datos de clústeres de HA adicionales, y New Relic genera PrometheusHAClusterLimit eventos NrIntegrationError. Mantener prometheus_server uniforme en todas las réplicas también evita que un solo grupo de HA consuma múltiples espacios para este límite.
Resolución de problemas
Prometheus Operator no configura prometheus_server — ese valor proviene completamente de su configuración de remoteWrite en el recurso Prometheus. Cuando todas las réplicas comparten un solo bloque de remoteWrite (el caso normal), esto es uniforme de forma predeterminada. Si inyecta anulaciones de remoteWrite por réplica, asegúrese de que prometheus_server sea igual en todas ellas.
Si aún ve copias duplicadas de los datos de la réplica, asegúrese de no tener replicaExternalLabelName o prometheusExternalLabelName en su especificación de Prometheus o configuración del chart porque estas anulaciones cambian el nombre de la etiqueta.
Para obtener la deduplicación más consistente, mantenga su Prometheus scrape_interval en 60 segundos o menos. New Relic identifica la réplica activa en cada clúster de HA a partir de sus datos recibidos más recientemente, y la escritura remota de Prometheus reenvía nuevas muestras aproximadamente una vez por extracción. Si un clúster envía datos con menor frecuencia, es posible que New Relic no reconozca de manera consistente al mismo líder y pueda retener datos duplicados o intercalados de más de una réplica, sin que se muestre ningún error.