5/5 - (1 голос)

Проект Prometheus представляет собой централизированную систему мониторинга, предлагает исходные тексты, бинарники под разные архитектуры (для основных компонентов) и Docker-образ. В документации приведены ссылки на код Ansible, Chef, Puppet и SaltStack. В репозиториях основных дистрибутивов уже есть пакеты с некоторыми компонентами, правда, их версия не самая актуальная. В Ubuntu на сегодня в репозитории доступна версия 0.16.2 сборки годичной давности, когда на сайте уже давно 1.5.2. Версии отличаются некоторыми параметрами конфигурационного файла и данными, записываемыми в метрики, поэтому, наверное, лучше сразу ставить последний релиз. Скачиваем архив:

$ wget -c https://github.com/prometheus/prometheus/releases/download/v1.5.2/prometheus-1.5.2.linux-amd64.tar.gz

Распаковываем и копируем файлы prometheus и promtool в /usr/bin, а шаблон конфигурационного файла в /etc/ prometheus. Также нужно создать каталог, куда будут складываться метрики /var/lib/prometheus/metrics. Создаем файл для запуска через systemd.

$ sudo nano /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target
[Service]
User=prometheus
Restart=on-failure
ExecStart=/usr/bin/prometheus
\ -config.file=/etc/prometheus/prometheus.yml
\ -storage.local.path=/var/lib/prometheus/metrics
[Install]
WantedBy=multi-user.target

Включаем в автозапуск и стартуем.

$ sudo systemctl daemon-reload
$ sudo systemctl enable prometheus

Аналогично проделываем с пакетом Node Exporter – для мониторинга самого сервера Prometheus он отлично подходит – и другими приложениями, если не принято решение использовать Telegram (о нем дальше).

В принципе можно даже попробовать запустить. Сервис Node Exporter будет запущен на порту 9100 и веб-интерфейс Prometheus на 9090 без какой-либо аутентификации и виден всем. Для защиты веб-интерфейса лучше установить при помощи параметра web.listen-address на localhost и указать пароль при помощи auth.user и auth.pass. Удобнее для этой цели использовать прокси, вроде nginx proxy_pass с htpasswd. Если не нравится, что метрики могут видеть все, то можно для их доставки на сервер Prometheus использовать VPN или SSH.

Конфигурационный файл называется /etc/prometheus/ prometheus.yml, после установки имеем рабочий шаблон с минимумом настроек, для мониторинга локальной системы его можно взять за основу. Для наших задач его достаточно. Файл в YAML-формате, все установки и значения по умолчанию можно узнать, введя prometheus -h. В Git в config/testdata/conf.good.yml есть более полный вариант, в котором найдете примеры установки TLS, подключение к Azure, AWS и другое.

Самыми важными для подключения агентов являются секции scrape_configs и static_configs:

scrape_configs:
- job_name: 'node'
scrape_interval: 5s
scrape_timeout: 10s
static_configs:
- targets: ['localhost:9090']
labels: {'host': 'prometheus'}

В терминах Prometheus targets это любой источник данных, называемый еще instance. Пока у нас один узел. При появлении следующего просто добавляем его данные – ip, порт и прочие параметры. Метка не обязательна, она позволяет переопределить имя узла, да и читать такой файл потом легче. Параметр job_name – это имя процесса, позволяющего группировать targets одного типа и задавать специфические

В файле можно определить несколько имен. Вся эта информация доступна в базе Prometheus, и ее можно использовать в фильтрах для отбора данных. Можем запустить в консоли и проверить работу и отсутствие ошибок (YAML все-таки).

$ promtool check-config /etc/prometheus/prometheus.yml

И первый раз запускаем в консоли, чтобы видеть появившиеся ошибки:

$ prometheus -config.file /etc/prometheus/prometheus.yml

Если все нормально, стартуем.

 

$ sudo systemctl start prometheus 
$ sudo systemctl status prometheus

Проверить работу Node Exporter можно, подключившись браузером к http://server_ip:9100/metrics, в результате должны получить список метрик.

Подключившись браузером на localhost:9090, можем увидеть информацию о работе Prometheus и просмотреть собранные метрики. Настройки, конфигурационный файл и статус удаленных узлов выводятся во вкладке Status (см. рис. 2).

Рисунок 2. Статус подключенных узлов в Prometheus

Prometheus

В Consoles и Graph генерируются графики. Принцип прост: начинаем вводить название метки, дальше интерфейс сам подскажет. Внизу будут выведены метки, попавшие под шаблон, используя эту информацию можно изменить запрос. Когда команда создана, нажимаем Execute. Результат будет выведен в виде числового ряда или графика (см. рис. 3).

Prometheus

Есть еще одна вкладка Consoles, на которой доступны графики и различная статистика по серверу, собранная Node Exporter (при необходимости шаблоны можно перестроить на Telegraf). Чтобы ее увидеть, нужно скопировать в /etc/prometheus два каталога из Git. В consoles лежат собственно шаблоны, в consoles_libraries – библиотеки. Текущие шаблоны настроены на job_name: node, prometheus, haproxy, cloudwatch, cassandra и blackbox.

Итак, сервер у нас готов принимать метрики. Но клиентов, кроме локального, пока нет.

Нужна установка мониторинга? Обращайтесь [email protected]

Источник: Системный администратор №5 2017