Инструкция представлена в ознакомительных целях, изучение работы команд рекомендуется проводить на тестовых средах
Диагностика 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'
Вычислительные мощности сервера (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
Сертификаты безопасности сайта
-
Проверка ответа сервера и сертификата по доменному имени извне:
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