最近、prometheus-operatorは安定したヘルムチャートに昇格しました( https://github.com/helm/charts/tree/master/stable/prometheus-operator )。
カスタムアプリケーションをk8sクラスターのprometheus-operatorによるモニタリングに追加する方法を知りたいのですが。デフォルトで9252のメトリックを提供するgitlab runnerの例は高く評価されます( https://docs.gitlab.com/runner/monitoring/#configuration-of-the-metrics-http-server )。
私は明らかに機能しないが、whatが機能していないというフィードバックを提供しない初歩的なyamlを持っています:
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
これはプロメテウスの設定です:
> kubectl get prometheus -o yaml
...
serviceMonitorNamespaceSelector: {}
serviceMonitorSelector:
matchLabels:
release: prometheus
...
したがって、セレクターは一致する必要があります。 「機能しない」とは、エンドポイントがprometheus UIに表示されないことを意味します。
ピーターのおかげで、原則としてその考えは完全に正しくないわけではないことを示してくれたので、ミッシングリンクを見つけました。 servicemonitor
はサービスを監視する(ハハ)ため、gitlab helmチャートの一部ではないサービスを作成する部分を逃しました。最後に、このyamlは私にとってはトリックであり、メトリックは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
知っておきたいこと:metrics
targetPort
はgitlabランナーチャートで定義されています。