@SSSSTTTTAAAASSSS

Kubernetes: не получается добавить custom service-monitor?

Добрый день.
В данный момент установлен prometheus c помощью Helm3 от сюда

Он вроде как работает, снимает метрики с моих подов, которые все находятся в одном node.
Вопрос состоит в следующем, что мой сервис по адресу :8085/posts/metrics - уже снимает метрики в нужном формате для Prometheus-а. Экспортер не нужен. Соответственно, насколько я понял, мне надо добавить новый service-monitor с указанным адресом снятия метрик.
К сожалению не могу найти найти информации, как правильно это сделать.
Из того что нашел - это вот этот пост на stackoverflow:

Насколько я понял - мне требуется добавить сначала сервис, а потом уже прописать отдельно yaml файл для service-monitor, чтобы их увидел prometheus и grafana, или могу добавить к информацию к уже существующему сервису, который снимает метрики, и добавить отдельно service-monitor?
Пытался сделать по аналогии, но где-то неправильно что-то прописываю, т.к. не видит prometheus
# Service targeting gitlab instances
apiVersion: v1
kind: Service
metadata:
  name: http-metrics
  labels:
    app: http-metrics
spec:
  ports:
  - name: metrics 
    port: 8085 
    endpoints: /posts
    targetPort: metrics
    protocol: TCP
  selector:
    app: http-metrics
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: http-metrics-servicemonitor
  # Change this to the namespace the Prometheus instance is running in
  # namespace: default
  labels:
    app: http-metrics
    release: stable
spec:
  selector:
    matchLabels:
      app: http-metrics
  endpoints:
  - port: metrics
    interval: 15s


На всякий случай yaml файл servicemonitor/stable-kube-prometheus-sta-prometheus
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  annotations:
    meta.helm.sh/release-name: stable
    meta.helm.sh/release-namespace: default
  creationTimestamp: "2021-10-18T10:24:23Z"
  generation: 1
  labels:
    app: kube-prometheus-stack-prometheus
    app.kubernetes.io/instance: stable
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: kube-prometheus-stack
    app.kubernetes.io/version: 19.1.0
    chart: kube-prometheus-stack-19.1.0
    heritage: Helm
    release: stable
  name: stable-kube-prometheus-sta-prometheus
  namespace: default
  resourceVersion: "73416"
  uid: ec1765a2-cb48-4cd7-8a41-3041a9260e09
spec:
  endpoints:
  - path: /metrics
    port: web
  namespaceSelector:
    matchNames:
    - default
  selector:
    matchLabels:
      app: kube-prometheus-stack-prometheus
      release: stable
      self-monitor: "true"

Заранее спасибо за любую помощь
  • Вопрос задан
  • 489 просмотров
Решения вопроса 1
@MadridianFox
Web-программист, многостаночник
Prometheus-operator следит за созданием сервисмониторов в определённых неймспейсах, и фильтрует сервисмониторы по лейблам.
Соответственно, вам необходимо посмотреть в манифесте прометеуса, какие значения там выставлены, и создать свой сервисмонитор с соответсвующем неймспейсе с необходимыми лейблами.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@SSSSTTTTAAAASSSS Автор вопроса
Благодаря подсказке Иван Корюков Иван Корюков
Вроде разобрался и у меня все завелось.
Если кому-то будет интересно вот мои манифесты
deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: http-http-deployment
  annotations:
    prometheus.io/scrape: "true"
    prometheus.io/path: /posts/metrics
    prometheus.io/port: "8085"
  labels:
    app: http-http
spec:
  replicas: 1
  selector:
    matchLabels:
      app: http-http
  template:
    metadata:
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/path: /posts/metrics
        prometheus.io/port: "8085"
      labels:
        app: http-http
        release: stable
    spec:
      containers:
        - name: http-http
          image: stasbigunenko/http_http
          env:
            - name: PORT_HTTP
              value: ":8085"
            - name: GRPC
              value: "grpc-service:9000"
          ports:
            - containerPort: 8085

service
apiVersion: v1
kind: Service
metadata:
  name: http-monitor-svc
  labels:
    app: http-http
    release: stable
  annotations:
    prometheus.io/scrape: "true"
    prometheus.io/scheme: http
    prometheus.io/path: /posts/metrics
    prometheus.io/port: "8085"
  namespace: default
spec:
  ports:
    - name: http-http
      port: 8085
      protocol: TCP
  selector:
    app: http-http
    release: stable

servicemonitor
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: http-monitor
  labels:
    app: http-http
    release: stable
  namespace: default
spec:
  jobLabel: myCounter
  endpoints:
    - port: http-http
      path: posts/metrics
  selector:
    matchLabels:
      app: http-http
      release: stable
  namespaceSelector:
    matchNames:
      - default
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы