Как показать в Prometheus собственные метрики приложения, захваченные с помощью клиентской библиотеки golang из всех модулей, работающих в Kubernetes

Я пытаюсь получить некоторые пользовательские метрики приложения, захваченные в golang, с помощью клиентской библиотеки prometheus, чтобы они отображались в Prometheus.

У меня работает следующее:

  • У меня есть приложение go, которое отображает метрики на localhost: 8080 / metrics, как описано в этой статье:

    https://godoc.org/github.com/prometheus/client_golang/prometheus

  • У меня работает мини-куб kubernates, в котором работают Prometheus, Grafana и AlertManager с использованием оператора из этой статьи:

    https://github.com/coreos/prometheus-operator/tree/master/contrib/kube-prometheus

  • Я создал образ докера для своего приложения go, когда я запускаю его и перехожу на localhost: 8080 / metrics, я вижу, что метрики Prometheus отображаются в браузере.

  • Я использую следующий pod.yaml для развертывания образа докера в модуле в k8s.

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod
  labels:
    zone: prod
    version: v1
  annotations:
   prometheus.io/scrape: 'true'
   prometheus.io/port: '8080'

spec:
   containers:
    - name: my-container
      image: name/my-app:latest
      imagePullPolicy: IfNotPresent
      ports:
      - containerPort: 8080
  • Если я подключаюсь к своему модулю, используя:

kubectl exec -it my-app-pod - / bin / bash

затем выполните wget на "localhost: 8080 / metrics", я могу увидеть свои показатели

Пока все хорошо, вот где я наткнулся на стену. У меня могло бы быть несколько модулей с одним и тем же изображением. Я хочу показать все изображения Прометею как мишеням. Как мне настроить свои модули так, чтобы они отображались в Prometheus, чтобы я мог сообщать о своих пользовательских показателях?

Спасибо за любую предложенную помощь!


person Steve Sheldon    schedule 25.08.2017    source источник
comment
Не уверен насчет оператора, никогда не использовал его, но я вручную развернул Prometheus на Kube вот так (и, если вам интересно, вы можете игнорировать специфические особенности OpenShift, это просто удобство). Самым большим подспорьем и моей постоянной ссылкой на самом деле были официальные   -  person Michael Hausenblas    schedule 26.08.2017


Ответы (3)


Вам понадобятся 2 вещи:

  • ServiceMonitor для оператора Prometheus, который указывает, какие службы будут очищены для метрик.
  • Сервис, который соответствует ServiceMonitor и указывает на ваши модули

В документации есть пример: https://coreos.com/operators/prometheus/docs/latest/user-guides/running-exporters.html

person slintes    schedule 27.08.2017

Директива kubernetes_sd_config может использоваться для обнаружения всех модулей с заданным тегом. В вашем конфигурационном файле Prometheus.yml должно быть что-то вроде этого: - job_name: 'some-app' kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__meta_kubernetes_pod_label_app] regex: python-app action: keep

Исходная метка [__meta_kubernetes_pod_label_app] в основном использует Kubernetes api для просмотра модулей, имеющих метку «приложение» и значение которых фиксируется выражением регулярного выражения, указанным в строке ниже (в данном случае соответствует «python-app» ).

Как только вы это сделаете, Prometheus автоматически обнаружит нужные вам модули и начнет извлекать метрики из вашего приложения.

Надеюсь, это поможет. Вы можете следить за сообщениями в блоге здесь для получения более подробной информации.

Примечание: стоит упомянуть, что на момент написания kubernetes_sd_config все еще находится в стадии бета-тестирования. Таким образом, в будущих выпусках могут произойти критические изменения конфигурации.

person Vect0r    schedule 04.09.2017

Можете ли вы поделиться конфигурацией Prometheus, которую вы используете для очистки метрик. Конфигурация будет контролировать все источники, из которых нужно очищать метрики. Вот несколько ссылок, к которым вы можете обратиться: https://groups.google.com/forum/#!searchin/prometheus-users/Application $ 20metrics $ 20monitoring $ 20из 20 $Kubernetes $ 20Pods% 7Csort: релевантность / prometheus-users / uNPl4nJX9yk / cSKEBqJlBwAJ

person bashxx    schedule 26.08.2017