UNIXAWESOME

Мониторинг серверов с помощью Node Exporter, Prometheus, Grafana

#monitoring #prometheus #grafana

Надёжный мониторинг серверов — важная часть инфраструктуры.
В этом гайде рассмотрим, как настроить популярную связку
Node Exporter → Prometheus → Grafana для отслеживания метрик сервера.
Установка будет на сервере с Debian 12

Установка Node Exporter

Node Exporter собирает метрики системы: загрузку CPU, память, сеть, диски и многое другое. Скачиваем последний на данный момент релиз

1wget https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-arm64.tar.gz

Распаковка архива:

1tar -xvf node_exporter-1.9.1.linux-arm64.tar.gz

Переместим бинарный файл:

1sudo mv node_exporter/node_exporter /usr/local/sbin/

Создаём systemd-сервис:

1vim /etc/systemd/system/node-exporter.service
 1[Unit]
 2Description=Node Exporter
 3After=network.target
 4
 5[Service]
 6ExecStart=/usr/local/sbin/node_exporter
 7Restart=always
 8User=nobody
 9Group=nogroup
10
11[Install]
12WantedBy=multi-user.target

Запуск и проверка:

1systemctl daemon-reload
2systemctl enable --now node-exporter
3systemctl status node-exporter.service

Node Exporter теперь доступен на порту 9100.

Установка Prometheus

1apt update
2apt install prometheus

Проверим статус:

1systemctl is-enabled prometheus  
2systemctl status prometheus

Настройка конфигурации Prometheus

Файл: /etc/prometheus/prometheus.yml

Добавим job для Node Exporter:

1  - job_name: node
2    static_configs:
3      - targets: ['localhost:9100']

Перезапуск:

1systemctl restart prometheus.service

Установка Grafana

1apt install software-properties-common
2mkdir -p /etc/apt/keyrings
3curl -fsSL https://packages.grafana.com/gpg.key | gpg --dearmor | tee /etc/apt/keyrings/grafana.gpg > /dev/null

Добавляем репозиторий:

1echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" | tee /etc/apt/sources.list.d/grafana.list > /dev/null
2apt update
3apt install grafana

Запускаем и включаем автозапуск:

1systemctl daemon-reload
2systemctl enable --now grafana-server

Настройка доступа через Nginx + HTTPS

1apt install nginx

Конфигурация Nginx:

1vim /etc/nginx/sites-available/grafana.conf
 1server {
 2    listen 443 ssl http2;
 3    server_name grafana.example.com;
 4
 5    ssl_certificate /etc/letsencrypt/live/grafana.example.com/fullchain.pem;
 6    ssl_certificate_key /etc/letsencrypt/live/grafana.example.com/privkey.pem;
 7
 8    ssl_protocols TLSv1.2 TLSv1.3;
 9    ssl_prefer_server_ciphers on;
10    ssl_ciphers HIGH:!aNULL:!MD5;
11
12    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
13    add_header X-Content-Type-Options nosniff;
14    add_header X-Frame-Options DENY;
15    add_header X-XSS-Protection "1; mode=block";
16
17    location / {
18        proxy_pass http://localhost:3000/;
19        proxy_set_header Host $host;
20        proxy_set_header X-Real-IP $remote_addr;
21        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
22        proxy_set_header X-Forwarded-Proto $scheme;
23        proxy_http_version 1.1;
24        proxy_set_header Connection "";
25        proxy_buffering off;
26    }
27}
28
29server {
30    listen 80;
31    server_name grafana.example.com;
32
33    location / {
34        return 301 https://$host$request_uri;
35    }
36}

Создание сертификата:

1certbot certonly --manual --preferred-challenges dns -d grafana.example.com

Активация конфига:

1ln -s /etc/nginx/sites-available/grafana.conf /etc/nginx/sites-enabled/grafana.conf
2nginx -t && nginx -s reload

Запуск Grafana

Открываем в браузере: https://grafana.example.com

Дефолтные учётные данные:

После входа необходимо сменить пароль на что то более надежное.

Подключение Prometheus в Grafana

Переходим в: ConnectionsData SourcesAdd data source → Выбираем Prometheus

Указываем http://localhost:9090 или IP сервера. Нажимаем Test для проверки подключения.

Рекомендованные дашборды

ID Название Описание
1860 Node Exporter Full Полный обзор метрик сервера
9276 Node Exporter Quickstart & CPU Focus Лёгкий старт, акцент на CPU
11074 Node Exporter Overview Компактный и чистый интерфейс

Что мы получаем

Теперь вы можете мониторить свой сервер в реальном времени и реагировать на любые отклонения ещё до того, как они станут проблемой.