Мониторинг и алертинг
February 18

Установка и настройка мониторинга/алертинга Prometheus+Grafana


В данной статье разберем как установить и настроить связку для мониторинга: Node Exporter - Prometheus - Grafana, загрузим красивый и удобный дашборд и добавим на него все наши сервера

Введение

Что такое Prometheus, Grafana

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

Сочетание этих двух инструментов дает IT-специалистам, системным администраторам и разработчикам возможность не только собирать детальные метрики со всех уголков их систем, но и превращать эти данные в понятные и легко интерпретируемые визуализации. Это обеспечивает глубокое понимание производительности приложений и инфраструктуры, что критически важно для быстрого реагирования на проблемы и эффективного планирования ресурсов.

Что будем делать

В этой статье мы проведем вас через все этапы: от установки Grafana и Prometheus на вашей системе до импортирования дашборда, который будет отслеживать ключевые метрики вашего сервера.

Последовательность действий

1) Установить на сервер с нодой, программное обеспечение node-exporter. Этот инструмент предназначен для сбора и передачи информации о работе аппаратных ресурсов.

2) Арендовать минимальный сервер (1 CPU, 1 RAM, 10 GB), который будет выполнять функции обработчика узлов. На этом сервере следует установить Prometheus для сбора данных от node-exporter, а также Grafana для их наглядного отображения.(так же можно подселить эту связку к Uptime Kuma, порты у них не конфликтуют)

Установка Node Exporter на отслеживаемый сервер

Для удобство пользователей был сделан автоматический скрипт, который установит на ваш сервер(отслеживаемый) node_exporter, что позволит вам его установить за одну команду

. <(wget -qO- https://raw.githubusercontent.com/g7AzaZLO/NodeExporter-autoinstaller/main/NodeExporter-auto-install.sh)

После выполнения команды мы должны увидеть следующее

Далее посмотрим логи и убедимся что все хорошо

 sudo journalctl -u exporterd -f

Перейдем по адресу http://<IP_ADDRESS>:9100/metrics , где <IP_ADDRESS> - ip нашего сервера, на который мы только что поставили экспортер

И увидим все метрики, которые экспортируются

Установка сервера-обработчика

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

Заходим на наш второй сервер(нода-обработчик)

Устанавливаем Prometheus

 wget https://github.com/prometheus/prometheus/releases/download/v2.28.1/prometheus-2.28.1.linux-amd64.tar.gz && \tar xvf prometheus-2.28.1.linux-amd64.tar.gz && \rm prometheus-2.28.1.linux-amd64.tar.gz && \mv prometheus-2.28.1.linux-amd64 prometheus

Открываем конфиг нашего Prometheus для настройки

 nano $HOME/prometheus/prometheus.yml

В место красной стрелки вписываем ip на который мы устанавливали node_exporter

Для сохранения и выхода из nano(редактора текста) последовательно нажимаем(проверьте что стоит eng раскладка)

ctrl+x

y

enter

Далее выдаем права на исполнение нашего файла

 chmod +x $HOME/prometheus/prometheus

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

sudo tee /etc/systemd/system/prometheusd.service > /dev/null <<EOF
[Unit]
Description=node_exporter
After=network-online.target
[Service]
User=$USER
ExecStart=$HOME/prometheus/prometheus --config.file="$HOME/prometheus/prometheus.yml" 
Restart=always 
RestartSec=3 
LimitNOFILE=65535 
[Install] 
WantedBy=multi-user.target 
EOF

После чего запускаем сервис

 sudo systemctl daemon-reload && \sudo systemctl enable prometheusd && \sudo systemctl restart prometheusd

Проверяем логи

 sudo journalctl -u prometheusd -f

Переходим в браузере по адресу: http://<IP_ADDRESS>:9090/targets, где <IP_ADDRESS> - IP сервера, на который мы только что установили prometheus.

Здесь мы видим сервер на котором стоит обработчик(localhost) и сервер на который мы ставили экспортер

Установка и настройка Grafana

Установка

Теперь на этот же сервер с Prometheus мы устанавливаем Grafana

 sudo apt-get install -y adduser libfontconfig1 && \wget https://dl.grafana.com/oss/release/grafana_8.0.6_amd64.deb && \sudo dpkg -i grafana_8.0.6_amd64.deb

Запускаем службу с графаной

sudo systemctl daemon-reload && \sudo systemctl enable grafana-server && \sudo systemctl restart grafana-server

Смотрим логи

 sudo journalctl -u grafana-server -f

Переходим в браузере на своём домашнем устройстве по адресу: http://<IP_ADDRESS>:3000, где <IP_ADDRESS> - IP сервера, на который мы установили prometheus и grafana.

Логин, пароль: admin admin

Далее задаем свой пароль и попадаем в дашборд

Добавление Data Source

Нажимаем на кнопку Data Sources

Выбираем Prometheus

В графе URL вводим http://<IP_ADDRESS>:9090 , где <IP_ADDRESS> - ip сервера на котором стоит прометеус и графана. После чего нажимаем Save & test

Далее переходим в импорт дашбордов

Переходим на гитхаб и качаем файл с дашбордом

После чего импортируем его

На выходе получаем следующее

Нажимаем кнопку импорт и попадем в наш дашборд

После того как мы убедились что все работает, нам необходимо заполнить дашборд нашими нодами

Заполнение нодами

Устанавливаем на все сервера, которые хотим отслеживать node_exporter, командой из первого раздела.

После того как установили все node_exporter переходим на сервер с prometheus+grafana

На сервере с прометеусом и графаной переходим в конфиг прометеуса

 nano $HOME/prometheus/prometheus.yml

И переделываем его под множество нод. Строго соблюдаем пробелы

Нас интересует только раздел static_configs.

targets - это сервер на которую мы устанавливали ноду-экспортёр и откуда желаем собирать метрики.

label - название этого сервера для отображения в графане.

targets: [<IP>:9100] - меняем только IP.
label: "<label>" - меняем на своё название сервера.

Строго соблюдаем синтаксис: каждый отступ - 2 пробела.

Не используйте в названиях пробелы

 scrape_configs:
   - job_name: "node_exporter"
     static_configs:
     - targets: [<IP-1>:9100] 
       labels: 
         label: "<label_1>" 
     - targets: [<IP-2>:9100] 
       labels: 
         label: "<label_2>" 
     - targets: [<IP-3>:9100] 
         labels: 
           label: "<label_3>"
           
И так до бесконечности

Далее для сохранения нажимаем последовательно

ctrl+x

y

enter

После того как прописали все наши ноды сохраняем и перезапускаем

 sudo systemctl daemon-reload && \sudo systemctl enable grafana-server && \sudo systemctl restart grafana-server && \sudo systemctl restart prometheusd

Получаем красивый и аккуратный дашборд с всеми нашими серверами

Если вы удалили или переименовали сервер, то у вас он может не удалиться или задублироваться, делать ничего не надо, через время само все исчезнет

Наш телеграмм канал по нодам — https://t.me/g7monitor
Наш чат по нодам — https://t.me/g7team_chat