Netdata, Prometeus, Grafana (NPG) Инструкция по инсталляции


Мы подготовили бандл для Docker. Проект расположен по адресу https://github.com/igtel/npg

В этой статье опишем краткую инструкцию по инсталляции бандла. Если вам необходима специфичная сборка или необходимо произвести настройки сборки для вашей среды — обращайтесь к нам по почте или через форму обратной связи

Системные требования:


ОС: Linux x64 Docker: ver> = 1.12; HDD: 5Gb свободно; TCP-порты: 9090, 8080, 3000, 9093, 9115;

Для RHEL/Centos: отключите SELinux или создайте новые правила записи в директорию установки для docker.

  1. Распакуйте архив проекта «npg» в выбранную для установки директорию. Например, пусть директория установки будет /opt. Текущий пользователь должен иметь доступ на чтение и запись к директории установки, и процесс docker также должен иметь такой доступ, если docker у вас установлен как non-root пользователь: cd /opt tar xvfz npg.tgz

  2. Перейдите в директорию проекта «npg»:
    cd npg

  3. (необязательно) Вы можете изменить пароль по умолчанию для пользователя-администратора grafana. Отредактируйте файл config.grafana, изменив значение пароля в строке:

    GF_SECURITY_ADMIN_PASSWORD = admin

  4. Проект «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  
Каждый сервис с префиксом «npg_» должен иметь по крайней мере одну работающую реплику (первое число в колонке REPLICAS).

Установка. Вариант B)

Для развертывания сервисов используйте файл «docker-deploy.yml». Вы можете предварительно отредактировать этот файл и изменить конфигурационные настройки для некоторых сервисов. Compose включает:

  • prometheus – сервис мониторинга и база данных,
  • alertmanager — сервис уведомлений,
  • grafana — сервис веб-панели,
  • cadvisor — (необязательный) агент мониторинга для docker-контейнеров,
  • blackbox — (необязательно) агент мониторинга URL.

Запустите все сервисы командой:

docker-compose up -build -d

Проверьте текущий статус контейнера:

docker ps

пять контейнеов с префиксом «npg_» должны иметь статус «Up» (колонка STATUS).

  1. После запуска сервисы будут доступны по 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»: «»  
    }  
    },  
   

  1. После сохранения файла prometheus автоматически перечитает файл и начнет собирать метрики netdata для новых хостов. Вы можете проверить графическую консоль prometheus: http://:9090. Выберите какую-нибудь метрику с префиксом netdata_ и выполните запрос метрики из базы. Имя задания будет соответствовать имени хоста netdata.
  2. Grafana уже имеет предварительно сконфигурированный источник данных для базы данных prometheus и панели мониторинга «Netdata Host» с графиками для основных метрик ОС. На этой панели вы можете выбрать хост (по имени задания).
  3. Для получения оповещений по электронной почте отредактируйте настройки почты для вашей среды в файле 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
  4. Для выполнения мониторинга URL-адресов отредактируйте файл prometheus/prometheus.yml и раскомментируйте раздел «job_name: ‘blackbox’». В разделе «targets» добавьте URL-адреса веб-серверов. После сохранения файла перезапустите контейнер npg_prometheus.