Prometheus — это приложение для мониторинга с открытым исходным кодом.
Оно сканирует HTTP-конечные точки для сбора показателей в простом текстовом формате, охватывает множество аспектов мониторинга, таких как генерация и сбор показателей, построение графиков на информационных панелях и оповещение об аномалиях. С недавнего времени, Prometheus умеет работать с Telegram из коробки. Об этом ниже.
В этом руководстве мы узнаем, как установить три ключевых компонента для использования Prometheus в Docker. Это:
- Сервер Prometheus для сбора показателей и запроса к ним;
- Node Exporter для экспорта системных показателей в формате, совместимом с Prometheus;
- Grafana — это веб-приложение для создания графических информационных панелей, которое поддерживает Prometheus и другие серверные части.
Подразумевается, что у нас уже установлен Docker и docker-compose, в противном случае, можно воспользоваться инструкцией Установка Docker на VPS/VDS.
Запуск Prometheus + Node Exporter в Docker
Создадим директорию для размещения docker-compose файла:
1 |
mkdir -p /prometheus |
Перейдем в созданный каталог:
1 |
cd /prometheus |
Создадим файл docker-compose.yml, содержащий следующие сервисы:
1 |
nano docker-compose.yml |
Перенесем содержимое ниже в файл docker-compose.yml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
version: '3.9' services: prometheus: image: prom/prometheus:latest volumes: - ./configuration/:/etc/prometheus/ - ./data/:/prometheus/ container_name: prometheus hostname: prometheus command: - --config.file=/etc/prometheus/prometheus.yml ports: - 9090:9090 restart: unless-stopped environment: TZ: "Europe/Moscow" networks: - default node-exporter: image: prom/node-exporter volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro container_name: exporter hostname: exporter command: - --path.procfs=/host/proc - --path.sysfs=/host/sys - --collector.filesystem.ignored-mount-points - ^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/) ports: - 9100:9100 restart: unless-stopped environment: TZ: "Europe/Moscow" networks: - default networks: default: ipam: driver: default config: - subnet: 172.28.0.0/16 |
Находясь в директории prometheus/, создадим два каталога для хранения конфигурационных файлов и накопленных данных:
1 2 |
mkdir -p configuration mkdir -p data |
Выдадим права на созданный каталог data:
1 |
chown 65534:65534 data |
В каталоге configuration создадим конфигурационный файл prometheus.yml:
1 |
nano configuration/<strong>prometheus.yml</strong> |
1 2 3 4 5 |
scrape_configs: - job_name: node scrape_interval: 5s static_configs: - targets: ['node-exporter:9100'] |
Из каталога prometheus/ запустим docker-compose:
1 |
docker-compose up -d |
http://<IP_узла_установки>:9090 — prometheus (по умолчанию аутентификация у сервиса отсутствует).
По адресу http://<IP_узла_установки>:9100 — страница Node Exporter
Значит все установлено верно.
Запуск Grafana в Docker
Теперь доработаем наш docker-compose.yml файл для запуска Grafana:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
version: '3.9' services: prometheus: image: prom/prometheus:latest volumes: - ./configuration/:/etc/prometheus/ - ./data/:/prometheus/ container_name: prometheus hostname: prometheus command: - --config.file=/etc/prometheus/prometheus.yml ports: - 9090:9090 restart: unless-stopped environment: TZ: "Europe/Moscow" networks: - default node-exporter: image: prom/node-exporter volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro container_name: exporter hostname: exporter command: - --path.procfs=/host/proc - --path.sysfs=/host/sys - --collector.filesystem.ignored-mount-points - ^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/) ports: - 9100:9100 restart: unless-stopped environment: TZ: "Europe/Moscow" networks: - default grafana: image: grafana/grafana user: root depends_on: - prometheus ports: - 3000:3000 volumes: - ./grafana:/var/lib/grafana - ./grafana/provisioning/:/etc/grafana/provisioning/ container_name: grafana hostname: grafana restart: unless-stopped environment: TZ: "Europe/Moscow" networks: - default networks: default: ipam: driver: default config: - subnet: 172.28.0.0/16 |
Выполним команду:
1 |
docker-compose up -d |
Теперь Grafana на http://<IP_узла_установки>:3000 — grafana (данные для входа по умолчанию: login — admin; password — admin).
Система предложит придумать новый пароль для входа в систему.