Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
CONTAINER_METRICS_UNAVAILABLE Linux / DevOps

Мониторинг Docker контейнеров: настройка cAdvisor, Prometheus и Grafana

Обновлено: 21.08.2026
  • Отсутствие видимости утилизации аппаратных ресурсов отдельными контейнерами.
  • Сложность выявления контейнеров, вызывающих троттлинг CPU (CPU Throttling) или утечки памяти.
  • Необходимость построения алертов по падению контейнеров и росту ошибок OOM.

1. Развертывание Google cAdvisor через Docker Compose

Создайте файл monitoring-compose.yml:

version: '3.8'

services:
  cadvisor:
    image: gcr.io/cadvisor/cadvisor:latest
    container_name: cadvisor
    restart: unless-stopped
    privileged: true
    ports:
      - "8080:8080"
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:ro
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
      - /dev/disk/:/dev/disk:ro
    devices:
      - /dev/kmsg

2. Конфигурация Prometheus (prometheus.yml)

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'cadvisor'
    static_configs:
      - targets: ['cadvisor:8080']

3. Ключевые PromQL-запросы для мониторинга контейнеров

  • Утилизация CPU контейнером (%):
    sum(rate(container_cpu_usage_seconds_total{name=~".+"}[2m])) by (name) * 100
  • Потребление оперативной памяти без учета файлового кэша:
    container_memory_working_set_bytes{name=~".+"}
  • Счетчик троттлинга CPU (CFS Throttling):
    rate(container_cpu_cfs_throttled_periods_total[5m]) / rate(container_cpu_cfs_periods_total[5m]) * 100
Практический опыт инженера: Для готовой визуализации импортируйте в Grafana официальный дашборд 'Docker and System Monitoring' (ID: 893 или 14282), который содержит готовые графики по PSS/RSS памяти и троттлингу CFS.

Частые вопросы (FAQ)

Почему container_memory_usage_bytes показывает 100% памяти, но контейнер не падает по OOM?

Метрика memory_usage_bytes включает в себя кэш страниц файловой системы (page cache), который ядро освобождает по требованию. Для реальной оценки риска OOM Killer используйте метрику container_memory_working_set_bytes.

Зачем монтировать /dev/kmsg в контейнер cAdvisor?

Это необходимо cAdvisor для перехвата сообщений OOM Killer и аппаратных событий ядра Linux из кольцевого буфера dmesg.