Мы подготовили бандл для Docker. Проект расположен по адресу https://github.com/igtel/npg
В этой статье опишем краткую инструкцию по инсталляции бандла. Если вам необходима специфичная сборка или необходимо произвести настройки сборки для вашей среды — обращайтесь к нам по почте или через форму обратной связи
Системные требования:
ОС: Linux x64 Docker: ver> = 1.12;
HDD: 5Gb свободно;
TCP-порты: 9090, 8080, 3000, 9093, 9115;
Для RHEL/Centos: отключите SELinux или создайте новые правила записи в директорию установки для docker.
-
Распакуйте архив проекта «npg» в выбранную для установки директорию. Например, пусть директория установки будет
/opt
. Текущий пользователь должен иметь доступ на чтение и запись к директории установки, и процесс docker также должен иметь такой доступ, если docker у вас установлен как non-root пользователь:cd /opt tar xvfz npg.tgz
-
Перейдите в директорию проекта «npg»:
cd npg
-
(необязательно) Вы можете изменить пароль по умолчанию для пользователя-администратора grafana. Отредактируйте файл config.grafana, изменив значение пароля в строке:
GF_SECURITY_ADMIN_PASSWORD = admin
-
Проект «npg» может быть реализован в двух разных режимах:
- Как сервисы docker stack (вариант A)
- как сервисы docker compose (вариант B).
Вы можете использовать вариант A, если ваша docker-инфраструктура установлена в режиме swarm, и вариант B — для отдельного docker-хоста. Для стекового развертывания ваша директория установки должна быть разделяемой для swarm-хостов.
Установка. Вариант А)
Для сервисов развертывания используйте файл «docker-stack.yml». Вы можете предварительно отредактировать этот файл и изменить конфигурационные настройки для некоторых сервисов. Stack включает:
- prometheus – сервис мониторинга и база данных,
- alertmanager — сервис уведомлений,
- grafana — сервис веб-панели,
- cadvisor — (необязательный) агент мониторинга для docker-контейнеров,
- blackbox — (необязательный) агент мониторинга URL.
Все сервисы будут развернуты на локальном docker-хосте, по умолчанию с 1 работающей репликой. Если вы хотите также осуществлять мониторинг всех swarm-контейнеров, необходимо развернуть сервис cadvisor на всех хостах. Раскомментируйте строку:
mode: global
в разделе «deploy» для сервиса «cadvisor» и удалите раздел «placement». Также вы можете раскомментировать сервис «netdata», если хотите развернуть его как docker-контейнер, а не устанавливать netdata непосредственно как сервис ОС. Запустите все сервисы стека командой:
docker stack deploy —compose-file docker-stack.yml npg
Проверьте статус сервисов стека:
docker service ls |grep npg_
Пример вывода:
ID NAME MODE REPLICAS IMAGE PORTS ID NAME MODE REPLICAS IMAGE PORTS 5re3frstseem npg_blackbox replicated 1/1 prom/blackbox-exporter:latest *:9115->9115/tcp 9zlgb1ojah4h npg_prometheus replicated 1/1 prom/prometheus:latest *:9090->9090/tcp gzp7pn1bo4pn npg_cadvisor replicated 1/1 google/cadvisor:latest *:8080->8080/tcp r33g0ayg3c1u npg_grafana replicated 1/1 grafana/grafana:latest *:3000->3000/tcp rqbtfvln7qeg npg_alertmanager replicated 1/1 prom/alertmanager:latest *:9093->9093/tcp
Установка. Вариант B)
Для развертывания сервисов используйте файл «docker-deploy.yml». Вы можете предварительно отредактировать этот файл и изменить конфигурационные настройки для некоторых сервисов. Compose включает:
- prometheus – сервис мониторинга и база данных,
- alertmanager — сервис уведомлений,
- grafana — сервис веб-панели,
- cadvisor — (необязательный) агент мониторинга для docker-контейнеров,
- blackbox — (необязательно) агент мониторинга URL.
Запустите все сервисы командой:
docker-compose up -build -d
Проверьте текущий статус контейнера:
docker ps
пять контейнеов с префиксом «npg_» должны иметь статус «Up» (колонка STATUS).
- После запуска сервисы будут доступны по URL-адресам:
- prometheus — http://:9090
- alertmanager — http://:9093
- grafana — http://:3000
- cadvisor — http://:8080
- blackbox — http: //:9115
Войдите в веб-интерфейс grafana, используя учетную запись администратора по умолчанию: admin/admin
6. Установите агент Netdata на хосты, мониторинг которых вы хотите осуществлять. Вы можете установить netdata из бинарных пакетов для ОС Linux. Подробные инструкции по установке netdata приведены здесь: https://github.com/firehol/binary-packages
7. Добавьте хосты netdata к серверу prometheus. Для текущей конфигурации prometheus агенты netdata должны быть статически добавлены в файл prometheus/ targets.json
. В случае инсталляции с значительным количеством агентов вы можете использовать методы обнаружения сервисов для автоматического обнаружения агентов (подробнее см. https://prometheus.io/docs/prometheus/latest/configuration/configuration/).
Скопируйте файл примера в target.json:
cp prometheus/tasks.json prometheus/target-example.json
Отредактируйте файл, изменив значение и на свои значения. Вы можете копировать и вставлять новый раздел «target» для каждого хоста netdata:
{ «targets»: [ «:19999» ], «labels»: { «env»: «prod», «job»: «» } },
- После сохранения файла prometheus автоматически перечитает файл и начнет собирать метрики netdata для новых хостов. Вы можете проверить графическую консоль prometheus: http://:9090. Выберите какую-нибудь метрику с префиксом netdata_ и выполните запрос метрики из базы. Имя задания будет соответствовать имени хоста netdata.
- Grafana уже имеет предварительно сконфигурированный источник данных для базы данных prometheus и панели мониторинга «Netdata Host» с графиками для основных метрик ОС. На этой панели вы можете выбрать хост (по имени задания).
- Для получения оповещений по электронной почте отредактируйте настройки почты для вашей среды в файле alertmanager/config-example.yml и скопируйте:
cp alertmanager/config-example.yml alertmanager/config.yml
Перезапустите контейнер npg_alertmanager. Запросите идентификатор контейнера :
docker ps |grep alertmanager |cut -d » » -f1
и остановите этот контейнер:
docker stop
Если контейнер стека не будет перезапущен автоматически, вам нужно запустить контейнер командой:
docker start
- Для выполнения мониторинга URL-адресов отредактируйте файл
prometheus/prometheus.yml
и раскомментируйте раздел «job_name: ‘blackbox’». В разделе «targets» добавьте URL-адреса веб-серверов. После сохранения файла перезапустите контейнер npg_prometheus.