Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

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.

Полезные материалы
Рекомендуем