# Мониторинг и диагностика AnsibleLab **Автор:** Сергей Антропов **Сайт:** https://devops.org.ru **Версия:** 2.0.0 ## 🔍 Диагностика Docker ### Проверка состояния Docker ```bash # Проверка статуса Docker docker info # Проверка запущенных контейнеров docker ps -a # Проверка образов AnsibleLab docker images | grep inecs/ansible-lab # Проверка сетей docker network ls | grep labnet ``` ### Диагностика buildx проблем ```bash # Полная диагностика buildx make docker diagnose # Проверка builder'а make docker check-builder # Сброс builder'а при проблемах make docker reset-builder # Настройка builder'а make docker setup-builder ``` ### Логи Docker ```bash # Логи Docker daemon (Linux) sudo journalctl -u docker.service -f # Логи Docker (macOS) tail -f ~/Library/Containers/com.docker.docker/Data/log/vm/dockerd.log # Логи конкретного контейнера docker logs ansible-controller # Логи с временными метками docker logs -t ansible-controller # Следить за логами в реальном времени docker logs -f ansible-controller # Последние 100 строк логов docker logs --tail 100 ansible-controller ``` ## 🧪 Диагностика тестирования ### Проверка preset'ов ```bash # Список доступных preset'ов make presets list # Информация о конкретном preset'е make presets info PRESET=default # Проверка файлов preset'ов ls -la molecule/presets/ # Проверка всех preset'ов find molecule/presets -name "*.yml" -exec echo "=== {} ===" \; -exec cat {} \; ``` ### Проверка инвентори ```bash # Проверка продакшн инвентори cat inventory/hosts.ini # Тестирование подключения ansible all -i inventory/hosts.ini -m ping # Проверка доступности хостов ansible all -i inventory/hosts.ini -m shell -a "uname -a" ``` ### Логи тестирования ```bash # Проверка созданных контейнеров docker ps -a --filter "network=labnet" # Логи всех контейнеров Molecule docker ps -a --filter "network=labnet" --format "{{.Names}}" | while read name; do echo "=== $name ===" docker logs $name 2>&1 | tail -20 done # Очистка контейнеров Molecule make clean-containers ``` ## 📊 Мониторинг ресурсов ### Мониторинг Docker ```bash # Статистика использования ресурсов контейнерами docker stats --no-stream # Использование диска Docker docker system df # Детальная информация о диске docker system df -v # Очистка неиспользуемых ресурсов docker system prune -a ``` ### Мониторинг системы ```bash # Использование диска df -h # Использование памяти free -h # Linux vm_stat # macOS # Процессы Docker ps aux | grep docker # CPU и память в реальном времени top # или htop ``` ### Мониторинг сети ```bash # Инспекция сети labnet docker network inspect labnet # Статистика сети docker network inspect labnet --format '{{json .Containers}}' | jq # Просмотр портов netstat -tulpn | grep docker # Просмотр установленных соединений ss -tulpn | grep docker ``` ## 🔧 Диагностика ролей ### Проверка синтаксиса ```bash # Lint проверка всех ролей make role lint # Lint проверка конкретной роли make role lint docker make role lint devops make role lint ping # Проверка синтаксиса файлов роли ansible-playbook --syntax-check roles/docker/tasks/main.yml ``` ### Проверка переменных ```bash # Просмотр всех переменных для хоста ansible-inventory --list -i inventory/hosts.ini # Проверка переменных конкретного хоста ansible-inventory --host web1.example.com -i inventory/hosts.ini # Просмотр всех групп ansible-inventory --list | jq 'keys' ``` ### Тестирование ролей ```bash # Тестирование с подробным выводом make role test 2>&1 | tee test-output.log # Тестирование конкретной роли make role test docker # Тестирование с minimal preset make role test minimal # Просмотр результатов теста docker logs $(docker ps -aq --filter "network=labnet" | head -1) ``` ## 🚨 Решение проблем ### Проблемы с Docker #### Docker не запускается ```bash # Проверка статуса (Linux) sudo systemctl status docker # Запуск Docker (Linux) sudo systemctl start docker # Проверка логов (Linux) sudo journalctl -u docker.service -f # Перезапуск Docker Desktop (macOS/Windows) # Use Docker Desktop interface ``` #### Buildx зависает ```bash # Диагностика make docker diagnose # Сброс builder'а make docker reset-builder # Очистка контейнеров buildkit docker ps -a --filter "name=buildx_buildkit" --format "{{.Names}}" | xargs -r docker rm -f ``` #### Образы не собираются ```bash # Очистка builder'а make docker clean-builder # Пересоздание builder'а make docker setup-builder # Полная пересборка make docker rebuild ``` ### Проблемы с тестированием #### Preset'ы не работают ```bash # Проверка preset файлов ls -la molecule/presets/ # Проверка синтаксиса preset'а yamllint molecule/presets/default.yml # Информация о preset'е make presets info PRESET=default ``` #### Контейнеры не запускаются ```bash # Проверка созданных контейнеров docker ps -a --filter "network=labnet" # Логи контейнера docker logs # Перезапуск контейнера docker restart # Удаление всех контейнеров Molecule make clean-containers ``` #### Роли не выполняются ```bash # Проверка синтаксиса make role lint # Тест с verbose выводом ansible-playbook -i inventory/hosts.ini site.yml -vvv # Проверка переменных ansible-inventory --list -i inventory/hosts.ini # Dry-run без выполнения ansible-playbook -i inventory/hosts.ini site.yml --check ``` ### Проблемы с ролями #### Синтаксические ошибки ```bash # Lint проверка make role lint # Проверка конкретной роли ansible-lint roles/docker/ # Проверка YAML синтаксиса yamllint roles/docker/tasks/main.yml ``` #### Логика не работает ```bash # Проверка переменных ansible-playbook -i inventory/hosts.ini site.yml --list-tags ansible-playbook -i inventory/hosts.ini site.yml --list-tasks # Выполнение конкретной задачи ansible-playbook -i inventory/hosts.ini site.yml --tags docker # Debug режим ansible-playbook -i inventory/hosts.ini site.yml -vvv ``` ## 📈 Сбор диагностической информации ### Скрипт диагностики ```bash #!/bin/bash # Создание отчета для диагностики echo "🔍 Сбор диагностической информации..." # Создание директории для логов mkdir -p debug-logs # Docker информация docker info > debug-logs/docker-info.txt 2>&1 docker images > debug-logs/docker-images.txt 2>&1 docker ps -a > debug-logs/docker-containers.txt 2>&1 docker network ls > debug-logs/docker-networks.txt 2>&1 # Системная информация df -h > debug-logs/disk-usage.txt 2>&1 free -h > debug-logs/memory-usage.txt 2>&1 2>/dev/null || vm_stat > debug-logs/memory-usage.txt 2>&1 ps aux | grep docker > debug-logs/docker-processes.txt 2>&1 # Информация о проекте ls -la roles/ > debug-logs/roles-list.txt 2>&1 ls -la molecule/presets/ > debug-logs/presets-list.txt 2>&1 cat inventory/hosts.ini > debug-logs/inventory.txt 2>&1 # Создание архива tar -czf debug-logs-$(date +%Y%m%d-%H%M%S).tar.gz debug-logs/ echo "✅ Диагностическая информация собрана в: debug-logs-$(date +%Y%m%d-%H%M%S).tar.gz" ``` ### Команды для быстрой диагностики ```bash # Быстрая проверка состояния echo "=== Docker Status ===" && docker info | head -5 echo "=== AnsibleLab Images ===" && docker images | grep inecs/ansible-lab echo "=== Roles ===" && ls -1 roles/ | grep -v "\.yml" echo "=== Presets ===" && ls -1 molecule/presets/*.yml 2>/dev/null | wc -l echo "=== Disk Usage ===" && df -h . | tail -1 ``` ## 🔧 Полезные команды ### Очистка ```bash # Очистка контейнеров Molecule make clean-containers # Очистка Docker образов AnsibleLab make docker clean # Очистка всего Docker make docker purge # Очистка buildx make docker clean-builder ``` ### Проверка ```bash # Проверка наличия образов make custom-images check # Проверка builder'а make docker check-builder # Информация об образах make docker info ``` ### Тестирование ```bash # Быстрый тест make role test minimal # Полный тест make role test all-images # Тест с конкретным preset'ом make role test docker-full ``` --- **Автор:** Сергей Антропов **Сайт:** https://devops.org.ru