Aller au contenu

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.