ℹ️ Обычно инженеры используют встроенные метрики Docker или сторонние инструменты вроде Prometheus для мониторинга контейнеров. Однако есть менее очевидный, но мощный способ — прямой доступ к cgroups. Это позволяет получить более точные данные о потреблении ресурсов, минуя абстракции Docker.
🔥 Что нужно сделать?
-
📂 1. Найдите путь
cgroupsдля контейнера. Используйтеdocker inspect:docker inspect <container_id> --format '{{ .State.Pid }}'❕ Это выдаст
PIDпроцесса контейнера. -
🐳 2. Зайдите в
/sys/fs/cgroupи найдите нужную группу:cd /sys/fs/cgroup/cpu/docker/<container_id>/ -
📈 3. Откройте файл
cpu.stat, чтобы посмотреть точные данные о потреблении CPU:cat cpu.stat -
ℹ️ Описание:
•
nr_periods— количество проверок CPU-quota.
•nr_throttled— сколько раз процесс "тормозили" из-за превышения лимита.
•throttled_time— общее время (в наносекундах), которое процесс был в состоянии throttle. -
📉 4. Для памяти аналогично:
cd /sys/fs/cgroup/memory/docker/<container_id>/ cat memory.usage_in_bytes
🐧 Пример использования
Создайте простенький Bash-скрипт для быстрой проверки:
#!/bin/bash
container_id=$1
pid=$(docker inspect "$container_id" --format '{{ .State.Pid }}')
cgroup_path="/sys/fs/cgroup"
echo "CPU stats:"
cat "$cgroup_path/cpu/docker/$container_id/cpu.stat"
echo "Memory usage:"
cat "$cgroup_path/memory/docker/$container_id/memory.usage_in_bytes"
Запускайте:
./monitor_cgroup.sh <container_id>
✳️ Теперь у вас есть инструмент для глубокой диагностики контейнеров без необходимости поднимать сложные мониторинговые системы.
tags: #полезно #мониторинг #docker
🧭 @recura_tech


