Some checks failed
Ansible Testing / lint (push) Has been cancelled
Ansible Testing / test (default) (push) Has been cancelled
Ansible Testing / test (minimal) (push) Has been cancelled
Ansible Testing / test (performance) (push) Has been cancelled
Ansible Testing / deploy-check (push) Has been cancelled
- Обновлена версия в README.md - Обновлена версия во всех файлах docs/ - Обновлена версия в dockerfiles/README.md - Обновлена версия в roles/*/QUICKSTART.md - Подготовка к версии 3.0.0 с Kubernetes поддержкой Автор: Сергей Антропов Сайт: https://devops.org.ru
10 KiB
10 KiB
Мониторинг и диагностика AnsibleLab
Автор: Сергей Антропов
Сайт: https://devops.org.ru
Версия: 3.0.0
🔍 Диагностика Docker
Проверка состояния Docker
# Проверка статуса Docker
docker info
# Проверка запущенных контейнеров
docker ps -a
# Проверка образов AnsibleLab
docker images | grep inecs/ansible-lab
# Проверка сетей
docker network ls | grep labnet
Диагностика buildx проблем
# Полная диагностика buildx
make docker diagnose
# Проверка builder'а
make docker check-builder
# Сброс builder'а при проблемах
make docker reset-builder
# Настройка builder'а
make docker setup-builder
Логи Docker
# Логи 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'ов
# Список доступных 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 {} \;
Проверка инвентори
# Проверка продакшн инвентори
cat inventory/hosts.ini
# Тестирование подключения
ansible all -i inventory/hosts.ini -m ping
# Проверка доступности хостов
ansible all -i inventory/hosts.ini -m shell -a "uname -a"
Логи тестирования
# Проверка созданных контейнеров
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
# Статистика использования ресурсов контейнерами
docker stats --no-stream
# Использование диска Docker
docker system df
# Детальная информация о диске
docker system df -v
# Очистка неиспользуемых ресурсов
docker system prune -a
Мониторинг системы
# Использование диска
df -h
# Использование памяти
free -h # Linux
vm_stat # macOS
# Процессы Docker
ps aux | grep docker
# CPU и память в реальном времени
top
# или
htop
Мониторинг сети
# Инспекция сети labnet
docker network inspect labnet
# Статистика сети
docker network inspect labnet --format '{{json .Containers}}' | jq
# Просмотр портов
netstat -tulpn | grep docker
# Просмотр установленных соединений
ss -tulpn | grep docker
🔧 Диагностика ролей
Проверка синтаксиса
# 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
Проверка переменных
# Просмотр всех переменных для хоста
ansible-inventory --list -i inventory/hosts.ini
# Проверка переменных конкретного хоста
ansible-inventory --host web1.example.com -i inventory/hosts.ini
# Просмотр всех групп
ansible-inventory --list | jq 'keys'
Тестирование ролей
# Тестирование с подробным выводом
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 не запускается
# Проверка статуса (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 зависает
# Диагностика
make docker diagnose
# Сброс builder'а
make docker reset-builder
# Очистка контейнеров buildkit
docker ps -a --filter "name=buildx_buildkit" --format "{{.Names}}" | xargs -r docker rm -f
Образы не собираются
# Очистка builder'а
make docker clean-builder
# Пересоздание builder'а
make docker setup-builder
# Полная пересборка
make docker rebuild
Проблемы с тестированием
Preset'ы не работают
# Проверка preset файлов
ls -la molecule/presets/
# Проверка синтаксиса preset'а
yamllint molecule/presets/default.yml
# Информация о preset'е
make presets info PRESET=default
Контейнеры не запускаются
# Проверка созданных контейнеров
docker ps -a --filter "network=labnet"
# Логи контейнера
docker logs <container-name>
# Перезапуск контейнера
docker restart <container-name>
# Удаление всех контейнеров Molecule
make clean-containers
Роли не выполняются
# Проверка синтаксиса
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
Проблемы с ролями
Синтаксические ошибки
# Lint проверка
make role lint
# Проверка конкретной роли
ansible-lint roles/docker/
# Проверка YAML синтаксиса
yamllint roles/docker/tasks/main.yml
Логика не работает
# Проверка переменных
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
📈 Сбор диагностической информации
Скрипт диагностики
#!/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"
Команды для быстрой диагностики
# Быстрая проверка состояния
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
🔧 Полезные команды
Очистка
# Очистка контейнеров Molecule
make clean-containers
# Очистка Docker образов AnsibleLab
make docker clean
# Очистка всего Docker
make docker purge
# Очистка buildx
make docker clean-builder
Проверка
# Проверка наличия образов
make custom-images check
# Проверка builder'а
make docker check-builder
# Информация об образах
make docker info
Тестирование
# Быстрый тест
make role test minimal
# Полный тест
make role test all-images
# Тест с конкретным preset'ом
make role test docker-full
Автор: Сергей Антропов
Сайт: https://devops.org.ru