Сергей Маликов
09.12.2019
11788

Установка системы мониторинга Prometheus

В статье описывается установка системы Prometheus в совокупности с Grafana (визуализация данных), Alertmanager (обработчик уведомлений), Node exporter (сбор метрик). Установка Node exporter Скачиваем архив с бинарным файлом wget  Распаковка В архиве содержится бинарник, который нужно перенести в /usr/local/bin: Создание отдельного юзера Необходимо создать юнит для возможности запуска при загрузке как системной службы. Создаем новый файл […]

В статье описывается установка системы Prometheus в совокупности с Grafana (визуализация данных), Alertmanager (обработчик уведомлений), Node exporter (сбор метрик).

Установка Node exporter

Скачиваем архив с бинарным файлом

wget 

Распаковка

tar -xzvf node_exporter-0.18.1.linux-amd64.tar.gz
Скачивание, распаковка
Скачивание, распаковка

В архиве содержится бинарник, который нужно перенести в /usr/local/bin:

mv node_exporter*/node_exporter /usr/local/bin

Создание отдельного юзера

useradd -rs /bin/false node_exporter

Необходимо создать юнит для возможности запуска при загрузке как системной службы.

Создаем новый файл

nano /etc/systemd/system/node_exporter.service
Cоздание юнита
Cоздание юнита

Содержимое:

[Unit]
#описание юнита
Description=Node Exporter
#старт после
After=network.target
[Service]
#пользователь
User=node_exporter
#группа
Group=node_exporter
#тип службы, simple – служба будет запущена незамедлительно.
Type=simple
#команда для запуска сервиса
ExecStart=/usr/local/bin/node_exporter
ExecStop=/usr/local/bin/node_exporter
ExecRestart=/usr/local/bin/node_exporter
#команда, указывающая на необходимость перезапуска демона 
Restart=always
 [Install]
#уровень запуска
WantedBy=multi-user.target

Далее необходимо перезагрузить демон system:

systemctl daemon-reload
Установка node_exporter – применение настроек и старт сервиса
Установка node_exporter – применение настроек и старт сервиса

Добавляем в автозагрузку и запускаем службу

systemctl enable node_exporter
systemctl start node_exporter

Установка Prometheus

Скачиваем Prometheus:

wget

Распакуем архив и переместим бинарные файлы в /usr/local/bin:

tar -xzvf prometheus-2.14.0.linux-amd64.tar.gz
mv prometheus-2.14.0.linux-amd64/prometheus prometheus-2.14.0.linux-amd64/promtool /usr/local/bin

Создаем директории для конфигурационных файлов Prometheus

mkdir /etc/prometheus /var/lib/prometheus

Перемещаем конфигурационные файлы в ранее созданный каталог

mv prometheus-2.14.0.linux-amd64/console prometheus-2.14.0.linux-amd64/console_libraries /etc/prometheus

Удаляем оставшиеся файлы

rm -r prometheus-2.14.0.linux-amd64*

Установка Prometheus

После установки Prometheus необходимо создать конфигурационный файл  /etc/prometheus/prometheus.yml

Установка Prometheus – редактирование конфигурационного файла
Установка Prometheus – редактирование конфигурационного файла
Табуляция (т.е. знак \t) в YAML запрещена. Необходимо использовать пробелы для отступов.
nano /etc/prometheus/prometheus.yml

Содержимое файла:

global:
  scrape_interval: 10s
scrape_configs:
  - job_name: 'prometheus_metrics'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'node_exporter_metrics'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9100']

В конфигурационном файле задается интервал парсинга по умолчанию (параметром scrape_interval). Также заданы два источника метрик prometheus_metrics и node_exporter_metrics, для которых переопределен интервал парсинга в 5 сек. Заданы места, откуда эти метрики будут доступны – localhost. Prometheus использует порт 9090, node_explorer – 9100.

Создаем пользователя для Prometheus, как для node_explorer:

useradd -rs /bin/false prometheus

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

chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
Установка Prometheus – создание юнита systemd
Установка Prometheus – создание юнита systemd

Затем, создаем systemd юнит в файле /etc/systemd/system/prometheus.service

Содержание файла:

[Unit]
Description=Prometheus
After=network.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /var/lib/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries
[Install]
WantedBy=multi-user.target

Директива ExecStart  задает пути, которые Prometheus должен использовать для хранения конфигурации, бд временных рядов, шаблонов визуализации веб-интерфейса.

Для применения изменений перезагружаем демон system:

systemctl daemon-reload
Установка Prometheus – применение настроек и старт сервиса
Установка Prometheus – применение настроек и старт сервиса

Также, добавляем сервис в автозагрузку и запускам сервис

systemctl enable prometheus
systemctl start prometheus

После окончания установки веб-интерфейс будет доступен по адресу http://ip_сервера:9090/

Веб-интерфейс Prometheus
Веб-интерфейс Prometheus

Вкладка “Console”, вкладка “Graph” для создания графиков на основе запроса.

Чтобы просмотреть список источников метрик, необходимо перейти на Status->Service Discovery. Здесь отображается список всех отслеживаемых служб, включая путь, по которому метрики доступны. По умолчанию путь /metrics.

Веб-интерфейс Prometheus – список источников метрик
Веб-интерфейс Prometheus – список источников метрик

Метрики и запросы Prometheus

Сервер Prometheus собирает метрики и сохраняет их в базе данных временных рядов.

Примеры метрик:

rate(node_network_receive_bytes_total[1m]) — средний сетевой трафик, полученный в секунду за последнюю минуту (в байтах)

Средний сетевой трафик
Средний сетевой трафик

node_filesystem_avail_bytes – объем файловой системы, доступное для пользователей без полномочий root (в байтах)

Объем файловой системы, доступный для пользователей без полномочий root
Объем файловой системы, доступный для пользователей без полномочий root

node_load1 – средняя загрузка за минуту

Метрика node_load1
Метрика node_load1

Установка AlertManager

Alertmanager  — обработчик уведомлений.

Установка alertmanager
Установка alertmanager

Создаем юнит для systemd:

nano/etc/systemd/system/alertmanager.service

Содержимое файла:

[Unit]
Description=Alertmanager for prometheus
After=network.target
[Service]
User=alertmanager
ExecStart=/usr/local/bin/alertmanager \
  --config.file=/etc/alertmanager/alertmanager.yml \
  --storage.path=/var/lib/alertmanager/
ExecReload=/bin/kill -HUP $MAINPID
NoNewPrivileges=true
ProtectHome=true
ProtectSystem=full
[Install]
WantedBy=multi-user.target
Создание юнита systemd
Создание юнита systemd

Применение настроек и запуск alertmanager

systemctl daemon-reload
systemctl start alertmanager
systemctl status alertmanager
Применение настроек и запуск alertmanager
Применение настроек и запуск alertmanager

Веб-интерфейс alertmanager доступен по адресу http://ip_адрес_сервера:9093/

Веб-интерфейс alertmanager
Веб-интерфейс alertmanager

Установка Grafana

Grafana – инструмент визуализации данных.

Для получения Grafana переходим на https://grafana.com/grafana/download и скачиваем  последнюю версию.

wget https://dl.grafana.com/oss/release/grafana-6.4.4-1.x86_64.rpm

yum localinstall grafana-6.4.4-1.x86_64.rpm

Запускаем Grafana, добавляем в автозагрузку.

systemctl daemon-reload
systemctl start grafana-server
systemctl status grafana-server
systemctl enable grafana-server.service
Запуск Grafana
Запуск Grafana

В веб-интерфейс Grafana можно попасть по адресу http://ip_адрес_сервера:3000/ По умолчанию учетные данные admin/admin. После входа можно установить новый пароль.

Вход в веб-интерфейс Grafana
Вход в веб-интерфейс Grafana

Переходим Configuration->Data Sourse->Prometheus и добавляем Prometheus.

Добавление Prometheus
Добавление Prometheus

Для установки dashboard’а (виджета) перейти в веб-интерфейсе Dashboards->Manage->Import. 

Import dashboard
Import dashboard

Также необходимо зайти на https://grafana.com/grafana/dashboards, перейти на страницу dashboard’а. В поле «Get this dashboard» будет указан его ID, который необходимо вставить в Grafana в поле “Grafana.com Dashboard” (или скопировать и вставить url дашбоарда).

Добавление dashboard по id
Добавление dashboard по id

После этого подтвердить, нажав на “Import”.

Добавление dashboard
Добавление dashboard

В поле Datasourse дашбоарда 1 Node Exporter 0.18.x (Host Metrics) необходимо выбрать Prometheus

Дашбоард  1 Node Exporter 0.18.x (Host Metrics)
Дашбоард  1 Node Exporter 0.18.x (Host Metrics)

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.