Инструкция представлена в ознакомительных целях, изучение работы команд рекомендуется проводить на тестовых средах
Диагностика Docker контейнеров
-
Имена всех контейнеров и их статус
docker ps -a --format "table {{.Names}}\t{{.Status}}" -
Вывести контейнеры которые НЕ в статусе UP, (пустой вывод когда всё запущено).
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.State}}" | grep -v "Up" -
Нагрузка на контейнеры (cpu, ram, net i/o, block i/o)
watch docker stats --no-stream -
Вывести логи контейнера за период времени
(например, proxy, haproxy, backend-api, postgres, minio, kafka, rabbitmq и любых других)
1 час
docker logs --since 1h backend-api
10 минут
docker logs --since 10m backend-api -
Просмотр логов контейнера начиная с текущего момента в реальном времени
docker logs -fn 0 postgres -
Вывод логов конкретного периода времени
docker logs --since "2024-07-26T11:30:00" --until "2024-07-26T12:30:00" postgres -
Утилизация диска docker контейнерами (OverlayFS), вывести 5 с наибольшим размером
docker ps -as --format "{{.Names}}: {{.Size}}" | sort -hr -k2 | head -n 5 -
Сохранить логи за последний час:
Создаём директорию в которую будем сохранять логи
mkdir logs-"$(hostname -s)-$(date +%Y-%m-%d)"
Переходим в созданную директорию через cd и запускаем команду формирования файлов с логами каждого контейнера
docker ps -a --format '{{.Names}}' | xargs -I {} sh -c 'docker logs --since "1h" {} > {}.log 2>&1' -
Сохранить все доступные логи контейнера
docker logs -t indication-calculator > logs.txt 2>&1
Вычислительные мощности сервера (cpu/ram)
-
Интерактивный мониторинг процессов и нагрузки
htop -
Размер RAM, SWAP и их утилизация
free -hw -
Данные о количестве ядер и процессоре
lscpu
Диски сервера
-
Данные о блочных устройствах сервера (жесткие диски, накопители, разделы, логические тома)
lsblk -
Вывод информации об использовании файловых систем и их типе
df -Th -
Размер конкретных директорий
du -sh /data/postgres/pgdata/pgroot/data/pg_wal/ -
Размер всех файлов и директорий в текущей ./ с сортировкой по убыванию
du -sh * | sort -hr -
Утилита для анализа использования дискового пространства ncdu
ncdu / -
Утилизация диска docker контейнерами (OverlayFS), вывести 5 с наибольшим размером
docker ps -as --format "{{.Names}}: {{.Size}}" | sort -hr -k2 | head -n 5 -
Расширенная ежесекундная статистика ввода-вывода (I/O) для дисков
iostat -x 1(Установка sudo apt install sysstat / sudo dnf install sysstat)
w_await (Write Await) - Среднее время ожидания записи в миллисекундах
r_await (Read Await) - Среднее время ожидания чтения в миллисекундах
%iowait (I/O Wait) - Процент времени, когда CPU ждет завершения I/O операций (критично если > 15%)
%util (Utilization) - Процент времени, когда устройство было занято (критично если > 80%)
-
Мониторинг процессов выполняющих input/output
sudo iotop -o -d 1 -a -k(Установка sudo apt install -y iotop / sudo dnf install -y iotop)
Сертификаты безопасности сайта
-
Проверка ответа сервера и сертификата по доменному имени извне:
curl -v https://stage001-rusakov.simpleone.ru/ -
Показать вольюмы proxy контейнера (где размещены сертификаты на сервере и в контейнере)
docker inspect proxy | jq '.[].Mounts' -
Данные публичного ключа и сертификата (домен, дата действия), выполняется из директории с сертификатами (bind volume контейнера proxy):
openssl x509 -in public.crt -text -noout | grep -E "Subject:|Not Before|Not After" -
С каким сертификатом отвечает сейчас proxy на сервере:
openssl s_client -connect localhost:443 -servername localhost 2>/dev/null | openssl x509 -noout -dates -subject
Сетевые настройки и DNS
-
Наличие выхода в интернет на сервере
ping 1.1.1.1 -
Сетевые интерфейсы и маршруты сервера
ip a
ip r -
Публичный адрес, с которого сервер выходит в интернет + проверка разрешения доменов с сервера
curl 2ip.ru -
Конфиги определяющие как с сервера разрешаются доменные имена
cat /etc/resolv.conf
cat /etc/hosts -
Проверка доступности и потерь пакетов извне, пинг по домену
ping stage001-rusakov.simpleone.ru -
Сетевая трассировка по домену
traceroute stage001-rusakov.simpleone.ru
mtr stage001-rusakov.simpleone.ru -
Разрешение извне доменного имени с указанием IP адреса сервера или IP балансировщика за которым он работает
host stage001-rusakov.simpleone.ru
nslookup stage001-rusakov.simpleone.ru
* Будем благодарны если поделитесь Вашими наработками по качественной диагностике серверов или обратной связью по представленным командам!!!