web-dev-qa-db-ja.com

prometheus-operatorのServiceMonitorを作成するにはどうすればよいですか?

最近、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に表示されないことを意味します。

20
andig

ピーターのおかげで、原則としてその考えは完全に正しくないわけではないことを示してくれたので、ミッシングリンクを見つけました。 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

知っておきたいこと:metricstargetPortはgitlabランナーチャートで定義されています。

4
andig