UNIXAWESOME

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

#monitoring #prometheus #grafana
Table of contents

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

Установка Node Exporter

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

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

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

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

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

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

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

vim /etc/systemd/system/node-exporter.service
[Unit]
Description=Node Exporter
After=network.target

[Service]
ExecStart=/usr/local/sbin/node_exporter
Restart=always
User=nobody
Group=nogroup

[Install]
WantedBy=multi-user.target

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

systemctl daemon-reload
systemctl enable --now node-exporter
systemctl status node-exporter.service

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

Установка Prometheus

apt update
apt install prometheus

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

systemctl is-enabled prometheus  
systemctl status prometheus

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

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

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

  - job_name: node
    static_configs:
      - targets: ['localhost:9100']

Перезапуск:

systemctl restart prometheus.service

Установка Grafana

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

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

echo "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
apt update
apt install grafana

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

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

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

apt install nginx

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

vim /etc/nginx/sites-available/grafana.conf
server {
    listen 443 ssl http2;
    server_name grafana.example.com;

    ssl_certificate /etc/letsencrypt/live/grafana.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/grafana.example.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers HIGH:!aNULL:!MD5;

    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options DENY;
    add_header X-XSS-Protection "1; mode=block";

    location / {
        proxy_pass http://localhost:3000/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_buffering off;
    }
}

server {
    listen 80;
    server_name grafana.example.com;

    location / {
        return 301 https://$host$request_uri;
    }
}

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

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

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

ln -s /etc/nginx/sites-available/grafana.conf /etc/nginx/sites-enabled/grafana.conf
nginx -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 Компактный и чистый интерфейс

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

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

Reply to this post by email ↪

Or share: