Node Exporter + Basic Auth
Node Exporter — это экспортер Prometheus для сбора данных о состоянии сервера с подключаемыми коллекторами метрик. Он позволяет измерять различные ресурсы машины, такие как использование памяти, диска и процессора. Написана на Go
Установка Node Exporter
Добавляем системного пользователя, от которого будет работать Node Exporter
$ sudo useradd -r -M -s /bin/false node_exporter
Скачиваем node_exporter-1.0.1
$ wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz -P /tmp
$ cd /tmp
Распаковываем, переносим в каталог /usr/local/bin, назначаем владельца
$ tar -zxpvf node_exporter-1.0.1.linux-amd64.tar.gz
$ cd node_exporter-1.0.1.linux-amd64
$ sudo cp node_exporter /usr/local/bin
$ sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
Создаем Systemd Unit
Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров
Компания занимает лидирующие позиции на рынке на рынке выделенных серверов и приватных облаков, и входит в топ-3 крупнейших операторов дата-центров в России.
$ sudo nano /etc/systemd/system/node_exporter.service
[Unit]
Description=Prometheus Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
Добавляем сервис в автозагрузку, запускаем его, проверяем статус
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now node_exporter
$ sudo systemctl status node_exporter
Проверяем порт 9100
$ sudo ss -pnltu | grep 9100
Открываем его наружу
$ sudo firewall-cmd --add-port=9100/tcp --permanent
$ sudo firewall-cmd --reload
Настройка авторизации
Устанавливаем утилиту httpd-tools
$ sudo dnf -y install httpd-tools
Генерируем пароль
$ htpasswd -nBC 10 "" | tr -d ':\n'
New password: password
Re-type new password: password
Создаем каталог, где будет лежать конфиг node_exporter
$ sudo mkdir /opt/node_exporter
Создаем конфигурационный файл для Node Exporter
$ sudo nano /opt/node_exporter/web.yml
#Если нужно https
#tls_server_config:
# cert_file: node_exporter.crt
# key_file: node_exporter.key
basic_auth_users:
myuser: $2y$10$ZNpUythMY9kLqsldfkjsljfdlskjdflksdjf527W8kBkHPT4Rkl9C
Меняем владельца
$ sudo chown -R node_exporter:node_exporter /opt/node_exporter
Редактируем Systemd Unit
$ sudo nano /etc/systemd/system/node_exporter.service
[Unit]
Description=Prometheus Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter --web.config=/opt/node_exporter/web.yml
[Install]
WantedBy=multi-user.target
Перезапускаем сервис
$ sudo systemctl daemon-reload
$ sudo systemctl restart node_exporter
$ sudo systemctl status node_exporter
Переходим на сайт http://%your-ip%:9100/. Должна появиться Basic Auth
Донастраиваем Prometheus
На сервере Prometheus добавляем параметры авторизации в конфиг Prometheus
$ sudo nano /etc/prometheus/prometheus.yml
[…]
- job_name: 'node'
basic_auth:
username: myuser
password: password
# scheme: https
# tls_config:
# ca_file: node_exporter.crt
static_configs:
- targets: ['localhost:9100']
где вместо localhost надо указать ip-адрес сервера, куда мы ставили node exporter
Перезапускаем Prometheus
$ sudo systemctl restart prometheus
$ sudo systemctl status prometheus
Проверяем через браузер
http://localhost:9090/targets