Проект 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
В Consoles и Graph генерируются графики. Принцип прост: начинаем вводить название метки, дальше интерфейс сам подскажет. Внизу будут выведены метки, попавшие под шаблон, используя эту информацию можно изменить запрос. Когда команда создана, нажимаем Execute. Результат будет выведен в виде числового ряда или графика (см. рис. 3).
Есть еще одна вкладка Consoles, на которой доступны графики и различная статистика по серверу, собранная Node Exporter (при необходимости шаблоны можно перестроить на Telegraf). Чтобы ее увидеть, нужно скопировать в /etc/prometheus два каталога из Git. В consoles лежат собственно шаблоны, в consoles_libraries – библиотеки. Текущие шаблоны настроены на job_name: node, prometheus, haproxy, cloudwatch, cassandra и blackbox.
Итак, сервер у нас готов принимать метрики. Но клиентов, кроме локального, пока нет.
Нужна установка мониторинга? Обращайтесь [email protected]
Источник: Системный администратор №5 2017