Compartir vía


Personalizar la recopilación mediante CRD (Monitores de servicio y de pod)

La habilitación de Prometheus administrado implementa automáticamente las definiciones de recursos personalizados (CRD) para monitores de pod y monitores de servicio. Estas definiciones de recursos personalizados son las mismas definiciones de recursos personalizados (CRD) que las de los monitores de pod de OSS y los monitores de servicio de OSS para Prometheus, excepto por un cambio en el nombre del grupo. Si tiene CRD de Prometheus existentes y recursos personalizados en el clúster, estos CRD no entrarán en conflicto con los CRD que creó el complemento. Al mismo tiempo, el complemento Prometheus administrado no recoge los CRD creados para el Prometheus de OSS. Esta separación es intencional para aislar los trabajos de extracción.

Nota:

La compatibilidad con definiciones de recursos personalizados (CRD) en Kubernetes habilitado para Azure ARC no está disponible actualmente.

Crear un monitor de pod o de servicio

Usa las plantillas de monitor de pods y de servicios y sigue la especificación de la API para crear los recursos personalizados(Monitor de pods y Monitor de servicios). Tenga en cuenta que el único cambio necesario en los recursos personalizados (CR) del OSS existentes para que los recoja el Prometheus administrado es el grupo de API: azmonitoring.coreos.com/v1.

Nota: asegúrese de usar los labelLimit, labelNameLengthLimit y labelValueLengthLimit especificados en las plantillas para que no se quiten durante el procesamiento.

Los monitores de pod y de servicio deben tener un aspecto similar al de los ejemplos siguientes:

Ejemplo de monitor de pod

# Note the API version is azmonitoring.coreos.com/v1 instead of monitoring.coreos.com/v1
apiVersion: azmonitoring.coreos.com/v1
kind: PodMonitor

# Can be deployed in any namespace
metadata:
  name: reference-app
  namespace: app-namespace
spec:
  labelLimit: 63
  labelNameLengthLimit: 511
  labelValueLengthLimit: 1023

  # The selector specifies which pods to filter for
  selector:

    # Filter by pod labels
    matchLabels:
      environment: test
    matchExpressions:
      - key: app
        operator: In
        values: [app-frontend, app-backend]

    # [Optional] Filter by pod namespace
    namespaceSelector:
      matchNames: [app-frontend, app-backend]

  # [Optional] Labels on the pod with these keys will be added as labels to each metric scraped
  podTargetLabels: [app, region, environment]

  # Multiple pod endpoints can be specified. Port requires a named port.
  podMetricsEndpoints:
    - port: metrics

Ejemplo de monitor de servicio

# Note the API version is azmonitoring.coreos.com/v1 instead of monitoring.coreos.com/v1
apiVersion: azmonitoring.coreos.com/v1
kind: ServiceMonitor

# Can be deployed in any namespace
metadata:
  name: reference-app
  namespace: app-namespace
spec:
  labelLimit: 63
  labelNameLengthLimit: 511
  labelValueLengthLimit: 1023

  # The selector filters endpoints by service labels.
  selector:
    matchLabels:
      app: reference-app

  # Multiple endpoints can be specified. Port requires a named port.
  endpoints:
  - port: metrics

Implementar un monitor de pod o de servicio

Después, puede implementar el monitor de pod o de servicio mediante kubectl apply.

Cuando se aplique, debería aparecer cualquier error en los recursos personalizados y debería producirse un error en la aplicación de los monitores de pod o de servicio.
Una creación correcta del monitor de pod es similar a la siguiente:

podmonitor.azmonitoring.coreos.com/my-pod-monitor created

Ejemplos

Crear una aplicación de ejemplo

Implementar una aplicación de ejemplo que exponga las métricas de Prometheus que el monitor de pod o de servicio configure.

kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/internal/referenceapp/prometheus-reference-app.yaml

Crear un monitor de pod o de servicio para extraer métricas

Implementar un monitor de pod configurado para extraer las métricas de la aplicación de ejemplo del paso anterior.

Monitor de pod
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/otelcollector/deploy/example-custom-resources/pod-monitor/pod-monitor-reference-app.yaml
Monitor de servicio
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/otelcollector/deploy/example-custom-resources/service-monitor/service-monitor-reference-app.yaml

Solución de problemas

Cuando los monitores de pod o de servicio se aplican correctamente, el complemento debería empezar a recopilar automáticamente las métricas de los destinos. Para confirmar esto, siga las instrucciones que se indican aquí para solucionar problemas generales de recursos personalizados y también para asegurarse de que los destinos se muestran en 127.0.0.1/targets.

Captura de pantalla que muestra los destinos para el monitor de pod/servicio

Pasos siguientes