Collecter des métriques en provenance d'une nouvelle application¶
Prérequis¶
Votre application doit exposer sur un chemin permettant de récupérer les métriques en HTTP
, souvent le chemin est /metrics
.
Vous pouvez le vérifier en utilisant la commande kubectl port-forward
sur votre pod ou votre service.
Scraper les métriques¶
ServiceMonitor vs PodMonitor¶
Habituellement, chaque pod dispose de son service associé, dans ce cas ServiceMonitor devrait être le choix par défaut. Mais, dans certains cas, vous pouvez vouloir récupérer les mesures d'un ensemble de pods qui ont tous une certain label qui n'est pas cohérent entre les différents services.
Nous ne parlerons ici que de ServiceMonitor, la configuration de PodMonitor est très proche.
Important
Prometheus-operator recherche les ServiceMonitors et PodMonitors qui ont le label caascad.com/prometheus-monitor
défini avec caascad
.
Plus d'informations :
ServiceMonitor¶
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: "" # ServiceMonitor name
namespace: "" # Namespace target
labels:
caascad.com/prometheus-monitor: "caascad"
spec:
endpoints:
- interval: 15s
port: "" # Service port name (warning: don't use the port value)
relabelings: # Optionnally: Add label to the scraped metrics
- replacement: ""
targetLabel: ""
namespaceSelector: # Optionnally: Select which namespaces the Endpoints objects are discovered from
matchNames:
- ""
selector: # Select by labels which service are scraped
matchLabels:
""
Ajouter de nouveaux labels aux métriques¶
Vous pouvez ajouter d'autres key=value
de la même manière que ci-dessus.
Référence :
Deployer le ServiceMonitor¶
Il suffit de déployer votre ServiceMonitor avec l'une des options suivantes :
-
via un
kubectl apply
avec un fichier de configuration Kubernetes contenant les éléments ci-dessus. -
à partir d'une chart Helm
Parfois, les charts "upstream" existantes fournissent des servicemonitors pour lesquels des labels supplémentaires peuvent être ajoutés.
Exemple si une telle condition existe dans le modèle de servicemonitor :
{{- if .Values.prometheus.monitor.additionalLabels }}
{{- toYaml .Values.prometheus.monitor.additionalLabels | nindent 4 }}
{{- end }}
Le fichier de valeurs (values file) utilisé pour déployer la chart sera :
prometheus:
monitor:
enabled: true
additionalLabels:
caascad.com/prometheus-monitor: "caascad"
Note
Il est souvent nécessaire d'activer le servicemonitor (ici avec le flag enabled
).
Comment ça marche¶
Prometheus-operator effectue une découverte automatique des ServiceMonitors et PodMonitors et les détecte rapidement.
- Il obtient alors les informations dont il a besoin auprès du ServiceMonitor ou du PodMonitor
- Il obtient plus d'informations du Service ou du Pod que vous avez sélectionné avec votre définition du monitor
- Il régénère alors la configuration de Prometheus
Tout cela est automatique.
Désactiver le scrap des métriques¶
Pour supprimer les ServiceMonitors/PodMonitors liés au Service/Pods que vous ne voulez plus surveiller utilisez la commande kubectl delete
.
Prometheus rechargera automatiquement sa configuration.
Troubleshooting¶
Obtenir le fichier de configuration de Prometheus¶
Vous pouvez récupérer le fichier de configuration de Prometheus à partir de la CLI de Kubernetes :
kubectl get -n caascad-monitoring secret prometheus-caascad-prometheus -o jsonpath="{['.data']['prometheus\.yaml\.gz']}" | base64 -d | gunzip
Si vous configurez votre ServiceMonitor/PodMonitor, prometheus-operator devrait modifier ce fichier presque instantanément. Prometheus recharge son fichier de configuration mais ce n'est pas aussi rapide que la modification de la configuration et cela peut prendre quelques minutes.
Vérifier la cible (target) Prometheus¶
Vous pouvez utiliser un port-forward
sur Prometheus :
kubectl -n caascad-monitoring port-forward svc/caascad-prometheus 9090:9090 &
Rendez-vous dans Status/Targets
pour vérifier si le endpoint cible (target) est up, et consultez le message d'erreur si la cible est down.
Vérifier depuis Grafana¶
Allez sur https://grafana.ZONE_NAME.caascad.com/
Rendez-vous sur l'onglet Explore
de Grafana, choisissez la datasource Thanos-app
et vérifiez que la métrique est présente.