alert: DockerContainerCpuThrottled
expr: rate(container_cpu_cfs_throttled_periods_total{name!=""}[5m])
/ rate(container_cpu_cfs_periods_total{name!=""}[5m]) * 100 > 25
for: 15m
severity: warning
Сообщение алерта: CPU-троттлинг контейнера {{ $labels.name }} ({{ $labels.instance }})
Контейнер упирается в заданный лимит CPU: более 25% периодов планировщика CFS были урезаны на протяжении 15 минут. Приложение замедляется, хотя на хосте CPU может быть свободен.
Слишком низкий --cpus / cpu_quota / deploy.resources.limits.cpus, рост нагрузки, многопоточное приложение, которому мало дробного лимита.
docker stats --no-stream <имя>
docker inspect <имя> --format 'CPUs={{.HostConfig.NanoCpus}} quota={{.HostConfig.CpuQuota}} period={{.HostConfig.CpuPeriod}}'
docker top <имя>
NanoCpus в миллиардных долях ядра (1000000000 — это одно ядро), 0 означает отсутствие лимита.
Повысить лимит CPU, либо оптимизировать приложение, либо добавить реплик. Если лимит нужен «для порядка», подумайте о снятии ограничения и использовании cpu_shares.
Для фоновых контейнеров, которым троттлинг не мешает (задачи с низким приоритетом).
Весь набор из 44 протестированных правил + Alertmanager → Telegram: 790 ₽
Открыть в Telegram · Бесплатный набор Monitoring Lite · Все алерты runbook