• DevOps
  • Защита информации
  • ИТ-поддержка
  • Настройка мониторинга 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-аутсорсинга.

    Не нашли ответа на свой вопрос?
    Содержание