Prometheus Operatorを利用してPrometheusをインストールした場合、メトリクスのエンドポイントを簡単に追加する方法として、kind: PodMonitor
やkind: ServiceMonitor
を使う方法がある。
ただ、このリソースを適当に作ってもPrometheus側で認識してくれない。
これをPrometheusで認識させる方法の備忘録。
Prometheusへの認識方法
PodMonitor
やServiceMonitor
を作る際、ラベルを設定する必要がある。
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: vmware-mysql-instances
namespace: prometheus
labels:
release: prometheus-operator ★コレ!!
このラベルはどういうものを設定すればいいかというと、Prometheus
オブジェクト内に定義されている。
$ kubectl get prometheus -n prometheus
NAME VERSION DESIRED READY RECONCILED AVAILABLE AGE
prometheus-operator-kube-p-prometheus v2.45.0 1 1 True True 38m
これの中身を見ると、以下のような項目がある。
$ kubectl get prometheus -n prometheus -o yaml prometheus-operator-kube-p-prometheus
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
:(省略)
podMonitorSelector:
matchLabels:
release: prometheus-operator
:(省略)
serviceMonitorSelector:
matchLabels:
release: prometheus-operator
spec.podMonitorSelector.matchLabels
やspec.serviceMonitorSelector.matchLabels
に定義があり、PrometheusはこれとマッチしたPodMonitor
やServiceMonitor
のみ認識するので、このラベルを設定する。
上手く適用出来た場合は、PrometheusのUIでService Discoveryを確認すると、反映されていることが分かる。