В данной инструкции мы разберемся с вами правильно установить и настроить одну из самых популярных система мониторинга Grafana + Prometheus. Установку мы буде производить в Docker. В статье мы подробно рассмотрим все этапы установки, а в самом конце вы найдете готовый compose файл для быстрой установки.
Установка Docker
Вы можете установить докер в ручную либо заказать уже готовый виртуальный сервер с Docker и Portainer у нас на сайте
Установим необходимые пакеты
sudo apt update
sudo apt install \
ca-certificates \
curl \
gnupg \
lsb-release
Добави GPG ключ Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Добавим стабильный репозиторий Docker
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Обновим пакеты и установим Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
Для удобства управления контейнерами можно дополнительно установить Portainer. После установки вебинтерфейс Portainer будет доступен по адресу https://ip:9443
docker run -d -p 8000:8000 -p 9443:9443 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Установим docker-compose
apt install docker-compose
На данном подготовку для установки Grafana + Portainer мы закончили.
Установка Grafana
Для установки последней стабильной вервии Grafana достаточно выполнить следующую команду
docker run -d -p 3000:3000 --name grafana grafana/grafana-enterprise
После завершения установки веб интерфейс будет доступен по адресу http://ip:3000. Вам будет необходимо ввести логин admin и пароль admin, после чего вам будет предложено указать новый пароль.
Установка Prometheus + Node Exporter
Установим Prometheus и для сбора статистики с хост системы(системы на которой установлен сервер Grafana) дополнительно установим Node Exporter.
Для упрощения установки мы создадим файл docker-compose.yml со следующим содержимым:
version: '3.3'
networks:
monitoring:
driver: bridge
volumes:
prometheus_data: {}
services:
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
restart: unless-stopped
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs: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
networks:
- monitoring
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--web.enable-lifecycle'
ports:
- 9090:9090
networks:
- monitoring
Для сбора статистики Node Exporter мы смонтировали /proc
/sys
и /
в режиме чтения.
Для Prometheus нам необходимо указать папку в которой будет располагаться файл конфигурации prometheus.yml. В примере выше путь указан к корневой папке с которой будет запущен compose файл.
Создадим директорию prometheus в которой создадим файл prometheus.yml со следующим содержимым:
global:
scrape_interval: 15s
scrape_configs:
- job_name: "prometheus"
scrape_interval: 5s
static_configs:
- targets: ["localhost:9090"]
- job_name: "node"
static_configs:
- targets: ["node-exporter:9100"]
Вернемся на уровень выше, где находится файл docker-compose.yml и выполним установку
docker-compose up -d
После установки проверим доступность Prometheus который будет доступен по адресу http://ip:9090, а метрики который собираются на хост системе будут доступы по адресу http://ip:9100.
Теперь остался последний шаг — добавить в Grafana в качестве источника получения данных Prometheus.
Переходим в Grafana — Configuration — Data sources и нажимаем Add data source и выбираем Prometheus.
В поле URL вводим адрес и порт по которому доступен Prometheus в нашем случаи это http://ip:9090
Прокручиваем в низ страницы и нажимаем Save& test и после успешной проверки Prometheus будет добавлен в Grafana.
Последний шаг установки — установка дашборда Node Exporter для сбора статистики с хост системы.
Переходим в Dashboards (четыре квадрата в боковом меню) — Brows — и нажимаем Import.
В поле импорта указываем ID 1860
и нажимаем на кнопку Load
Нам будет предложено сменить название дашборда и папку в которой он будет располагаться и в поле Prometheus необходимо выбрать название источника данных которое мы добавили.
После того как вы нажмете кнопку Import вы попадает в установленный дашборд в котором уже будут отображаться собранные данные.
Для того чтобы установить установить всю связку необходимо создать файл docker-compose.yml в который необходимо добавить следующее
version: '3.3'
networks:
monitoring:
driver: bridge
volumes:
prometheus_data: {}
services:
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
restart: unless-stopped
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs: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
networks:
- monitoring
grafana:
image: grafana/grafana-enterprise
container_name: grafana
restart: unless-stopped
ports:
- 3000:3000
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--web.enable-lifecycle'
ports:
- 9090:9090
networks:
- monitoring
И выполнить команду:
docker-compose up -d