JavaRush /Курсы /Модуль 2: Fullstack /Настройка мониторинга контейнеров с Prometheus

Настройка мониторинга контейнеров с Prometheus

Модуль 2: Fullstack
17 уровень , 3 лекция
Открыта

4.1 Установка Prometheus

Prometheus — это мощная система мониторинга и оповещения с открытым исходным кодом, разработанная для сбора и хранения метрик из различных источников, включая Docker-контейнеры. В этой лекции мы подробно рассмотрим процесс настройки мониторинга контейнеров с помощью Prometheus, включая установку, настройку сбора метрик и интеграцию с Docker.

1. Скачивание и установка Prometheus

Сначала загрузите последнюю версию Prometheus с официального сайта:

Terminal

wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz

Распакуйте архив:

Terminal

tar xvfz prometheus-*.tar.gz
cd prometheus-*      

Переместите бинарные файлы в /usr/local/bin:

Terminal

sudo mv prometheus /usr/local/bin/
sudo mv promtool /usr/local/bin/

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

Prometheus использует конфигурационный файл prometheus.yml для определения источников метрик и настроек сбора данных. Создайте или отредактируйте файл prometheus.yml:

Yaml

global:
  scrape_interval: 15s  # Интервал сбора метрик
      
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
      
  - job_name: 'cadvisor'
    static_configs:
      - targets: ['localhost:8080']

Этот конфигурационный файл включает два задания (job):

  1. prometheus: для сбора метрик с самого Prometheus.
  2. cadvisor: для сбора метрик с cAdvisor, который будет использоваться для мониторинга Docker-контейнеров.

5.3 Запуск Prometheus

Запустите Prometheus с использованием созданного конфигурационного файла:

Terminal

prometheus --config.file=prometheus.yml

Prometheus будет доступен по адресу http://localhost:9090.

5.4 Установка и настройка cAdvisor

cAdvisor (Container Advisor) — это инструмент для мониторинга контейнеров, который собирает и предоставляет метрики для контейнеров Docker. Для его использования выполните следующие шаги:

Запустите cAdvisor в Docker-контейнере:

Terminal

docker run -d \
  --name=cadvisor \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  --privileged \
  gcr.io/cadvisor/cadvisor:latest

cAdvisor будет доступен по адресу http://localhost:8080.

5.5 Обновление конфигурации Prometheus для cAdvisor

Убедитесь, что конфигурация Prometheus включает задание для cAdvisor. Пример конфигурации был представлен выше.

Перезапустите Prometheus, чтобы применить изменения:

Terminal

prometheus --config.file=prometheus.yml

5.6 Проверка сбора метрик

Перейдите в веб-интерфейс Prometheus по адресу http://localhost:9090 и убедитесь, что Prometheus собирает метрики с cAdvisor. Для этого выполните запрос в Prometheus:

Terminal

container_cpu_usage_seconds_total

Вы должны увидеть данные, собранные с Docker-контейнеров.

5.7 Добавление дополнительных метрик

Вы можете добавить дополнительные метрики в конфигурационный файл Prometheus, чтобы собирать больше данных о ваших контейнерах. Пример дополнительных метрик:

Yaml

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

Для этого потребуется установить node_exporter, который предоставляет метрики о состоянии хостовой системы.

Скачайте и установите node_exporter:

Terminal

wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
sudo mv node_exporter-1.2.2.linux-amd64/node_exporter /usr/local/bin/

Запустите node_exporter:

Terminal

node_exporter &

Теперь node_exporter будет доступен по адресу http://localhost:9100.

5.8 Создание правил оповещения

Prometheus поддерживает создание правил оповещения для уведомления администраторов о проблемах. Добавьте правила оповещения в конфигурационный файл prometheus.yml:

Yaml

rule_files:
  - "alert.rules"
      
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - "localhost:9093"

Создайте файл alert.rules с примером правил:

Yaml

groups:
- name: example
  rules:
  - alert: HighCPUUsage
    expr: container_cpu_usage_seconds_total{job="cadvisor"} > 0.85
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "High CPU usage detected"
      description: "Container is using more than 85% CPU for more than 1 minute."
3
Задача
Модуль 2: Fullstack, 17 уровень, 3 лекция
Недоступна
Установка Prometheus
Установка Prometheus
3
Задача
Модуль 2: Fullstack, 17 уровень, 3 лекция
Недоступна
Настройка Prometheus
Настройка Prometheus
3
Задача
Модуль 2: Fullstack, 17 уровень, 3 лекция
Недоступна
Установка и запуск cAdvisor
Установка и запуск cAdvisor
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Дмитрий Уровень 65
26 ноября 2024
google/cadvisor не запускается. Но если пульнуть контейнер gcr.io/cadvisor/cadvisor отсюда (в интернетах вычитал), то контейнер запускается успешно. Но надо как-то проверить насколько доверенной может быть вторая ссылка и почему все-таки не запускается контейнер от гугла. Ошибка в логах (если брать гугловый): F1126 18:45:11.409277 1 cadvisor.go:146] Failed to create a Container Manager: mountpoint for cpu not found