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.