Récemment, prometheus-operator a été promu au tableau de barre stable ( https://github.com/helm/charts/tree/master/stable/prometheus-operator ).
Je voudrais comprendre comment ajouter une application personnalisée à la surveillance par prometheus-operator dans un cluster k8s. Un exemple pour dire gitlab runner qui fournit par défaut des métriques sur 9252 serait apprécié ( https://docs.gitlab.com/runner/monitoring/#configuration-of-the-metrics-http-server ).
J'ai un yaml rudimentaire qui ne fonctionne évidemment pas mais ne fournit pas non plus de retour sur ce qui ne fonctionne pas:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: gitlab-monitor
# Change this to the namespace the Prometheus instance is running in
namespace: default
labels:
app: gitlab-runner-gitlab-runner
release: prometheus
spec:
selector:
matchLabels:
app: gitlab-runner-gitlab-runner
namespaceSelector:
# matchNames:
# - default
any: true
endpoints:
- port: http-metrics
interval: 15s
Voici la configuration de prometheus:
> kubectl get prometheus -o yaml
...
serviceMonitorNamespaceSelector: {}
serviceMonitorSelector:
matchLabels:
release: prometheus
...
Les sélecteurs doivent donc correspondre. Par "ne fonctionne pas", je veux dire que les points d'extrémité n'apparaissent pas dans l'interface utilisateur de prometheus.
Merci à Peter qui m'a montré que son idée n'était en principe pas totalement incorrecte. J'ai trouvé le lien manquant. Comme un servicemonitor
surveille les services (haha), j'ai raté la partie de la création d'un service qui ne fait pas partie du graphique de barre de gitlab. Enfin, ce yaml a fait l'affaire pour moi et les métriques apparaissent dans Prometheus:
# Service targeting gitlab instances
apiVersion: v1
kind: Service
metadata:
name: gitlab-metrics
labels:
app: gitlab-runner-gitlab-runner
spec:
ports:
- name: metrics # expose metrics port
port: 9252 # defined in gitlab chart
targetPort: metrics
protocol: TCP
selector:
app: gitlab-runner-gitlab-runner # target gitlab pods
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: gitlab-metrics-servicemonitor
# Change this to the namespace the Prometheus instance is running in
# namespace: default
labels:
app: gitlab-runner-gitlab-runner
release: prometheus
spec:
selector:
matchLabels:
app: gitlab-runner-gitlab-runner # target gitlab service
endpoints:
- port: metrics
interval: 15s
Bon à savoir: le metrics
targetPort
est défini dans le graphique du runner de gitlab.