ИТ-поддержка

Настройка мониторинга Kubernetes с помощью Prometheus Operator

Prometheus — набор утилит с открытым кодом для мониторинга и уведомлений (alerts), созданный под вдохновением от Google Borg Monitor. Его разработку начинали в SoundCloud, а затем передали в фонд CNCF. Prometheus умеет автоматически собирать метрики с кластера и сервисов в нем, сохранять в нереляционную БД и отрисовывать их в Grafana. Встроенный Alertmanager умеет отправлять алерты в различные каналы коммуникаций, такие как Slack, email, а с помощью несложных действий - в Telegram, даже звонить.

Операторы - новый класс программного обеспечения, представленный в 2016 году CoreOS компании RedHat. Операторы предназначены для управления другим программным обеспечением в Kubernetes. Цель Оператора — предоставить пользователю API, который позволяет управлять множеством сущностей stateful-приложения в кластере Kubernetes, не задумываясь о том, что у него под капотом (какие данные и что с ними делать, какие команды необходимо еще выполнить для поддержания кластера). Фактически Оператор призван максимально упростить работу с приложением в рамках кластера, автоматизируя выполнение эксплуатационных задач, которые раньше приходилось решать вручную.

Установка и настройка Prometheus Operator

Установка Prometheus Operator осуществляется с помощью helm.

Клонируем репозиторий и обновляем переменные:

cd charts/stable/prometheus-operator
helm dependency update

Устанавливаем Prometheus.

chelm install --name prometheus --namespace monitoring prometheus-operator

После успешной установки должны увидеть:

kubectl get pod
Установка Prometheus

Рисунок 1 - Установка Prometheus

Prometheus Pod:

  • собственно сам Prometheus.
  • Prometheus-config-reloader - плагин для Prometheus который мониторит изменения в prometheus.yaml и HTTP-запросом перегружает конфиг Prometheus.
  • rules-configmap-reloader - мониторит изменения в файле уведомлений и также перезагружает файл настроек, если он поменялся.

Alertmanager Pod:

  • Alert Manager, который генерирует уведомления на прописанные правила и триггеры.
  • config-reloader - надстройка к Alertmanager, который при изменении файла настроек перегружает Alertmanager через HTTP.

Grafana Pod:

  • Grafana - web-интерфейс, которые отрисовывает графики по метрикам, собранным Prometheus.
  • Grafana-sc-dashboard - надстройка к Grafana, которая описывает ConfigMap-ресурсы и генерирует json-дашборды для Grafana.

После того, как все поды запустились, мы можем зайти на страницы Prometheus:

kubectl port-forward prometheus-prometheus-prometheus-oper-prometheus-0 9090:9090

После этой команды, необходимо открыть браузер по адресу http://localhost:9090. Сервисы установленные по-умолчанию должны быть видны в Service Discovery.

Сервисы в Prometheus

Рисунок 2 - Сервисы в Prometheus

Prometheus установлен и собирает метрики. Чтобы посмотреть, какие метрики собирает Prometheus, можно выполнить команду:

kubectl get servicemonitors.monitoring.coreos.com

И получим:

prometheus-prometheus-oper-alertmanager              19d
prometheus-prometheus-oper-apiserver                 19d
prometheus-prometheus-oper-coredns                   19d
prometheus-prometheus-oper-grafana                   19d
prometheus-prometheus-oper-kube-controller-manager   19d
prometheus-prometheus-oper-kube-etcd                 19d
prometheus-prometheus-oper-kube-proxy                19d
prometheus-prometheus-oper-kube-scheduler            19d
prometheus-prometheus-oper-kube-state-metrics        19d
prometheus-prometheus-oper-kubelet                   19d
prometheus-prometheus-oper-operator                  19d
prometheus-prometheus-oper-prometheus                19d

Как мы видим, установка Prometheus Operator в Kubernetes действительно представляется одной командой, после которой, получаем эффективный набор инструментов для мониторинга кластера.

Есть вопросы по настройке Kubernetes? Обратитесь к нам любым удобным способом. Мы также обслуживаем кластеры Kubernetes в рамках DevOps-аутсорсинга.