Развёртывание стека Node-Exporter+Prometheus+Grafana
Развертывание стека
Развертывание стека можно осуществить с помощью Docker. Для этого можно составить docker-compose file.
Node-Exporter
version: "3.9"
services:
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
restart: unless-stopped
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/roofs:ro
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|
dev|host|etc)($$|/)'
ports:
- "9100:9100"
Сервису Node-Exporter был дан доступ к корневому каталогу системы только на чтение, также был дан доступ к каталогу /sys для получения параметров ядра Linux и /proc для получения информации о процессах и системе в целом. Для возможности подключиться к сервису был проброшен порт 9100.
Prometheus и Grafana
prometheus:
container_name: prometheus
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- 9090:9090
grafana:
container_name: grafana
image: grafana/grafana:latest
user: "0"
ports:
- "3000:3000"
volumes:
- grafana-data:/var/lib/grafana
volumes:
grafana-data:
prometheus-data:
Для сервисов Prometheus и Grafana были проброшены порты 9090 и 3000 соответственно. Также для этих сервисов были созданы Docker Volume. Для работы Prometheus требуется файл конфигурации prometheus.yml.
Prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: "node_exporter"
scrape_interval: 15s
static_configs:
- targets: ["node-exporter:9100"]
Каждые 15 секунд сервис Prometheus будет отправлять информацию на сервис Node-Exporter. Стоит обратить внимание, что обращение к нему проводится не по IP-адресу, а по названию сервиса. Запустим получившийся docker-compose file:
docker-compose up -d
Настройка Grafana
Перейдём в дэшборд Grafana (127.0.0.1:3000). При входе необходимо ввести логин и пароль (по умолчанию логин: admin, пароль: admin)
Импортируем Prometheus как источник данных:
Как адрес можно указать название сервиса (в данном случае – prometheus). Следующим шагом является создание Dashboard. Был выбран дэшборд Node Exporter Full (Grafana ID - 1860):
Откроем дэшборд:
Таким образом, был успешно развёрнут стек Prometheus+Grafana+Node Exporter с помощью программного обеспечения для автоматизации и развёртывания приложений Docker.