Как отслеживать использование ресурсов контейнеров Docker — CloudSavvy IT

Хотя Docker намного легче традиционных виртуальных машин, слишком большое количество контейнеров может быстро потреблять ресурсы вашего хоста. Вот как можно проверить использование оборудования и отслеживать количество процессов внутри ваших контейнеров.

Команда Docker Stats

Встроенный механизм Docker для просмотра потребления ресурсов — это статистика Docker. Эта команда дает вам табличное представление ваших контейнеров. Каждый контейнер отображает в реальном времени свои критические показатели.

Выходные данные команды включают потребление ЦП и показатель использования сети и хранилища каждого контейнера в течение его жизненного цикла. Столбец Память показывает использование оперативной памяти, а также ограничение памяти, настроенное для контейнера. Если ограничение не установлено, вы увидите объем оперативной памяти, доступной на вашем хосте. Последний столбец, PIDS, представляет собой количество процессов, запущенных контейнером.

Остановленные контейнеры по умолчанию исключаются. Вы можете добавить их в таблицу, передав команде флаг -a (—all). Использование ЦП и памяти будет недоступно, но вы сможете увидеть показатели, агрегированные за время существования контейнера, такие как сетевая активность.

Вы можете просматривать статистику одного и нескольких контейнеров так же, как и другие распространенные команды CLI Docker. Передайте список идентификаторов или имен контейнеров, разделенных пробелами. На выходе будут показаны метрики для указанных контейнеров, все остальное будет удалено.

Docker stats первый контейнер второй контейнер

docker stats поддерживает настраиваемое форматирование, поэтому вы можете выбрать только нужные столбцы. Флаг —format принимает Go строка-заполнитель что позволяет создавать пользовательские визуализации данных.

Вот как показать имена контейнеров с метриками использования ЦП и памяти:

docker stats —format «table {{.Name}} t {{. CPUPerc}} t {{. MemUsage}}»

Тип форматирования таблицы добавляет заголовки столбцов к выводу. Опустите это, если вам нужны необработанные данные без табуляции. Если вы регулярно используете одну и ту же строку форматирования, рассмотрите возможность добавления ее в качестве псевдонима оболочки для облегчения доступа.

Получение дополнительной информации

Более подробную информацию об использовании ресурсов контейнера можно получить по проверка своей контрольной группы (cgroup). Этот механизм ядра отслеживает потребление группой процессов, отображая собранные метрики в псевдофайловой системе.

Доступны две версии системы cgroup. v2 поддерживается только в Docker 20.10 или новее с ядром Linux v4.15. В более старых выпусках будет использоваться версия v1. Документация по v2 еще не завершена, поэтому с v1 будет проще работать.

Чтобы найти контрольную группу контейнера, вам необходимо определить, какая версия активна, и знать полный идентификатор контейнера. Это должна быть полная версия, а не усеченная форма, показанная в выводе docker ps и docker stats. Вы можете найти его, запустив docker ps —no-trunc.

Объедините идентификатор контейнера с путем к каталогу групп управления вашей системы. Пути для v1 и v2 задокументированы от Docker. Затем вы можете проверить псевдофайловую систему, чтобы найти подробную статистику ресурсов. Вот путь для определения использования памяти контейнером при использовании cgroups v1:

cat / sys / fs / cgroup / memory / docker / <полный идентификатор контейнера> /memory.stat

В файл памяти предоставляет подробную информацию о потреблении, ограничениях, подкачке и использовании подкачки.

Поиск метрик ресурсов с помощью Docker API

Более простой способ получить доступ к этой информации — через Docker API. Это включено по умолчанию через сокет Unix демона Docker. Конечная точка / container / {id} / stats предоставляет подробные сведения об использовании ресурсов. Замените {id} идентификатором вашего контейнера.

curl —unix-socket /var/run/docker.sock «http: //localhost/v1.41/containers/ {id} / stats» | jq

В этом примере мы используем curl. Он проинструктирован использовать сокет демона Docker с помощью флага —unix-socket. Docker API вернет данные в формате JSON; это передается в jq, чтобы сделать его более читаемым в терминале.

Каждый Ответ API содержит подробную информацию о текущем и прошлом использовании ресурсов контейнера. Это числовые данные, предназначенные для использования станками. Значения представлены «в сыром виде» и не могут быть сразу понятны без дальнейшей обработки или ввода в инструментальную панель.

Просмотр запущенных процессов

Отдельная команда docker top позволяет увидеть текущий список процессов указанного контейнера:

докер верхний мой-контейнер

Он перечисляет список процессов контейнера во время выполнения команды. В отличие от статистики, он не предоставляет поток данных в реальном времени. Вы можете увидеть идентификатор каждого процесса, пользователя, который его запустил, и выполняемую команду.

Вы также можете получить эту информацию из API. Используйте тот же подход, что и описанный выше, заменив конечную точку / container / {id} / stats на / container / {id} / top.

Docker не предоставляет интегрированного способа просмотра использования ресурсов для каждого процесса. Если вам нужна эта информация, лучше всего прикрепить к контейнеру и установить сверху или htop. Эти инструменты дадут вам более глубокое представление об активности контейнера.

docker exec -it my-container sh # замените команды диспетчера пакетов apt update && apt install htop -y htop

Резюме

Демон Docker собирает и предоставляет в реальном времени и историческую статистику потребления ресурсов для ваших контейнеров. Вы можете получить доступ к базовому графическому представлению данных с помощью статистики Docker, но для более сложных считываний требуется Docker API или проверка группы ручного управления.

Вы также можете перечислить запущенные процессы контейнера, но команда docker top не показывает никаких показателей ресурсов. Это означает, что его использование при проверке ограничено. Зачем в контейнере слишком много ЦП или памяти. Вам нужно будет прикрепиться к нему вручную и осмотреть изнутри.

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.