Verzameling aanpassen met CRD's (service- en podmonitors)
Met het inschakelen van Managed Prometheus worden de aangepaste resourcedefinities (CRD) automatisch geïmplementeerd voor podmonitors en servicemonitors. Deze aangepaste resourcedefinities zijn dezelfde aangepaste resourcedefinities (CRD) als OSS-podmonitors en OSS-servicemonitors voor Prometheus, met uitzondering van een wijziging in de groepsnaam. Als u bestaande Prometheus CRD's en aangepaste resources in uw cluster hebt, conflicteren deze CRD's niet met de CRD's die zijn gemaakt door de invoegtoepassing. Tegelijkertijd haalt de beheerde Prometheus-invoegtoepassing de CRD's die zijn gemaakt voor de OSS Prometheus niet op. Deze scheiding is opzettelijk ten behoeve van isolatie van scrapetaken.
Notitie
Ondersteuning voor definities van aangepaste resources (CRD's) in Kubernetes met Azure ARC is momenteel niet beschikbaar.
Een pod of servicemonitor maken
Gebruik de Pod- en Service Monitor-sjablonen en volg de API-specificatie om uw aangepaste resources (PodMonitor en Service Monitor) te maken. Houd er rekening mee dat de enige wijziging die is vereist voor de bestaande OSS-CR's (aangepaste resources) voor het ophalen door de beheerde Prometheus, de API-groep - azmonitoring.coreos.com/v1 is.
Opmerking: zorg ervoor dat u het labelLimit, labelNameLengthLimit en labelValueLengthLimit gebruikt dat is opgegeven in de sjablonen, zodat ze niet worden verwijderd tijdens de verwerking.
Uw pod- en servicemonitors moeten eruitzien als de volgende voorbeelden:
Voorbeeld van Pod Monitor
# 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
Voorbeeldservicemonitor
# 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
Een pod of servicemonitor implementeren
Vervolgens kunt u de pod- of servicemonitor implementeren met kubectl apply.
Wanneer deze worden toegepast, moeten eventuele fouten in de aangepaste resources worden weergegeven en moeten de pod- of servicemonitors niet worden toegepast.
Het maken van een podmonitor ziet er als volgt uit:
podmonitor.azmonitoring.coreos.com/my-pod-monitor created
Voorbeelden
Een voorbeeldtoepassing maken
Implementeer een voorbeeldtoepassing met prometheus-metrische gegevens die moeten worden geconfigureerd door pod-/servicemonitor.
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/internal/referenceapp/prometheus-reference-app.yaml
Een podmonitor en/of servicemonitor maken om metrische gegevens te scrapen
Implementeer een podmonitor die is geconfigureerd voor het scrapen van metrische gegevens uit de voorbeeldtoepassing uit de vorige stap.
Pod Monitor
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/otelcollector/deploy/example-custom-resources/pod-monitor/pod-monitor-reference-app.yaml
Service Monitor
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/otelcollector/deploy/example-custom-resources/service-monitor/service-monitor-reference-app.yaml
Probleemoplossing
Wanneer de pod- of servicemonitors zijn toegepast, moet de invoegtoepassing automatisch beginnen met het verzamelen van metrische gegevens van de doelen. Volg hiervoor de instructies voor algemene probleemoplossing van aangepaste resources en om ervoor te zorgen dat de doelen worden weergegeven in 127.0.0.1/doelen.