# Мониторинг и диагностика AnsibleTemplate **Автор:** Сергей Антропов **Сайт:** https://devops.org.ru ## 🔍 Диагностика Docker ### Проверка состояния Docker ```bash # Проверка статуса Docker docker info # Проверка запущенных контейнеров docker ps -a # Проверка образов docker images | grep inecs/ansible-lab # Проверка сетей docker network ls ``` ### Диагностика buildx проблем ```bash # Диагностика buildx make docker diagnose # Проверка builder'а make docker setup-builder # Сброс builder'а при проблемах make docker reset-builder ``` ### Логи Docker ```bash # Логи Docker daemon sudo journalctl -u docker.service # Логи конкретного контейнера docker logs ansible-controller # Логи с временными метками docker logs -t ansible-controller # Следить за логами в реальном времени docker logs -f ansible-controller ``` ## 🧪 Диагностика тестирования ### Проверка preset'ов ```bash # Список доступных preset'ов make presets list # Информация о конкретном preset'е make presets info PRESET=default # Проверка файлов preset'ов ls -la molecule/presets/ ``` ### Проверка инвентори ```bash # Проверка тестового инвентори cat ${MOLECULE_EPHEMERAL_DIRECTORY}/inventory/hosts.ini # Проверка продакшн инвентори cat inventory/hosts.ini # Тестирование подключения ansible all -i inventory/hosts.ini -m ping ``` ### Логи тестирования ```bash # Логи Molecule ls -la molecule/default/.molecule/ # Логи конкретного теста cat molecule/default/.molecule/test/ansible.log # Логи Ansible cat molecule/default/.molecule/test/ansible.log | grep ERROR ``` ## 📊 Мониторинг производительности ### Мониторинг ресурсов ```bash # Использование CPU и памяти docker stats # Использование диска df -h # Использование памяти free -h # Процессы Docker ps aux | grep docker ``` ### Мониторинг сети ```bash # Статистика сети docker network inspect labnet # Подключения к портам netstat -tulpn | grep docker # Проверка DNS nslookup docker.io ``` ### Мониторинг логов ```bash # Логи системы sudo journalctl -f # Логи Docker sudo journalctl -u docker.service -f # Логи Ansible tail -f /var/log/ansible.log ``` ## 🔧 Диагностика ролей ### Проверка синтаксиса ```bash # Lint проверка всех ролей make role lint # Lint проверка конкретной роли ansible-lint roles/my-role/ # Проверка синтаксиса YAML ansible-playbook --syntax-check roles/my-role/tasks/main.yml ``` ### Проверка переменных ```bash # Проверка переменных роли ansible-inventory --list -i inventory/hosts.ini # Проверка переменных для конкретного хоста ansible-inventory --host web1.example.com -i inventory/hosts.ini # Проверка переменных группы ansible-inventory --host web_servers -i inventory/hosts.ini ``` ### Тестирование ролей ```bash # Тестирование с verbose выводом ansible-playbook -i inventory/hosts.ini site.yml -vvv # Тестирование конкретной роли ansible-playbook -i inventory/hosts.ini site.yml --tags my-role # Тестирование с dry-run ansible-playbook -i inventory/hosts.ini site.yml --check ``` ## 🚨 Алерты и уведомления ### Настройка алертов ```bash #!/bin/bash # scripts/monitor.sh # Скрипт мониторинга AnsibleTemplate # Проверка Docker if ! docker info >/dev/null 2>&1; then echo "❌ Docker не запущен" # Отправка уведомления curl -X POST -H 'Content-type: application/json' \ --data '{"text":"❌ Docker не запущен в AnsibleTemplate"}' \ $SLACK_WEBHOOK_URL fi # Проверка образов if ! docker images | grep -q inecs/ansible-lab; then echo "❌ Образы AnsibleTemplate не найдены" # Отправка уведомления curl -X POST -H 'Content-type: application/json' \ --data '{"text":"❌ Образы AnsibleTemplate не найдены"}' \ $SLACK_WEBHOOK_URL fi # Проверка preset'ов if [ ! -d "molecule/presets" ]; then echo "❌ Директория preset'ов не найдена" # Отправка уведомления curl -X POST -H 'Content-type: application/json' \ --data '{"text":"❌ Директория preset'ов не найдена"}' \ $SLACK_WEBHOOK_URL fi echo "✅ Мониторинг завершен" ``` ### Настройка cron для мониторинга ```bash # Добавление в crontab crontab -e # Проверка каждые 5 минут */5 * * * * /path/to/scripts/monitor.sh # Проверка каждый час 0 * * * * /path/to/scripts/monitor.sh # Проверка каждый день в 9:00 0 9 * * * /path/to/scripts/monitor.sh ``` ## 📈 Метрики и отчеты ### Сбор метрик ```bash #!/bin/bash # scripts/collect-metrics.sh # Сбор метрик AnsibleTemplate echo "📊 Сбор метрик AnsibleTemplate..." # Создание директории для метрик mkdir -p metrics # Метрики Docker echo "=== Docker Metrics ===" > metrics/docker.txt docker info >> metrics/docker.txt docker images >> metrics/docker.txt docker ps -a >> metrics/docker.txt # Метрики системы echo "=== System Metrics ===" > metrics/system.txt df -h >> metrics/system.txt free -h >> metrics/system.txt uptime >> metrics/system.txt # Метрики Ansible echo "=== Ansible Metrics ===" > metrics/ansible.txt ansible --version >> metrics/ansible.txt ansible-galaxy list >> metrics/ansible.txt # Метрики ролей echo "=== Roles Metrics ===" > metrics/roles.txt find roles/ -name "main.yml" -path "*/tasks/*" | wc -l >> metrics/roles.txt ls -la roles/ >> metrics/roles.txt echo "✅ Метрики собраны" ``` ### Генерация отчетов ```bash #!/bin/bash # scripts/generate-report.sh # Генерация отчета о состоянии AnsibleTemplate echo "📋 Генерация отчета..." # Создание директории для отчетов mkdir -p reports # Отчет о Docker cat > reports/docker-report.md << EOF # Docker Report ## Образы \`\`\` $(docker images | grep inecs/ansible-lab) \`\`\` ## Контейнеры \`\`\` $(docker ps -a) \`\`\` ## Сети \`\`\` $(docker network ls) \`\`\` EOF # Отчет о ролях cat > reports/roles-report.md << EOF # Roles Report ## Количество ролей $(find roles/ -name "main.yml" -path "*/tasks/*" | wc -l) ## Список ролей \`\`\` $(find roles/ -name "main.yml" -path "*/tasks/*" | sed 's|roles/||; s|/tasks/main.yml||') \`\`\` EOF # Отчет о preset'ах cat > reports/presets-report.md << EOF # Presets Report ## Количество preset'ов $(ls -1 molecule/presets/*.yml | wc -l) ## Список preset'ов \`\`\` $(ls -1 molecule/presets/*.yml | sed 's|molecule/presets/||g' | sed 's|\.yml||g') \`\`\` EOF echo "✅ Отчеты сгенерированы" ``` ## 🔍 Отладка проблем ### Общие проблемы #### 1. Docker не запускается ```bash # Проверка статуса Docker sudo systemctl status docker # Запуск Docker sudo systemctl start docker # Проверка логов sudo journalctl -u docker.service ``` #### 2. Образы не собираются ```bash # Проверка builder'а make docker diagnose # Сброс builder'а make docker reset-builder # Очистка кеша make docker clean ``` #### 3. Тесты не проходят ```bash # Проверка preset'ов make presets list # Проверка инвентори cat ${MOLECULE_EPHEMERAL_DIRECTORY}/inventory/hosts.ini # Проверка логов docker logs ansible-controller ``` #### 4. Роли не работают ```bash # Проверка синтаксиса make role lint # Проверка переменных ansible-inventory --list -i inventory/hosts.ini # Тестирование с verbose ansible-playbook -i inventory/hosts.ini site.yml -vvv ``` ### Логи для отладки ```bash # Сбор всех логов mkdir -p debug-logs # Логи Docker docker info > debug-logs/docker-info.txt docker images > debug-logs/docker-images.txt docker ps -a > debug-logs/docker-containers.txt # Логи системы df -h > debug-logs/disk-usage.txt free -h > debug-logs/memory-usage.txt ps aux > debug-logs/processes.txt # Логи Ansible ansible --version > debug-logs/ansible-version.txt ansible-galaxy list > debug-logs/ansible-galaxy.txt # Логи ролей find roles/ -name "*.yml" -exec ansible-playbook --syntax-check {} \; > debug-logs/roles-syntax.txt ``` ## 📊 Дашборд мониторинга ### Простой дашборд ```bash #!/bin/bash # scripts/dashboard.sh # Простой дашборд мониторинга echo "📊 AnsibleTemplate Dashboard" echo "==========================" # Статус Docker if docker info >/dev/null 2>&1; then echo "✅ Docker: Запущен" else echo "❌ Docker: Не запущен" fi # Количество образов IMAGES=$(docker images | grep inecs/ansible-lab | wc -l) echo "📦 Образы: $IMAGES" # Количество ролей ROLES=$(find roles/ -name "main.yml" -path "*/tasks/*" | wc -l) echo "🎭 Роли: $ROLES" # Количество preset'ов PRESETS=$(ls -1 molecule/presets/*.yml 2>/dev/null | wc -l) echo "⚙️ Preset'ы: $PRESETS" # Использование диска DISK=$(df -h . | tail -1 | awk '{print $5}') echo "💾 Диск: $DISK" # Использование памяти MEMORY=$(free -h | grep Mem | awk '{print $3 "/" $2}') echo "🧠 Память: $MEMORY" echo "==========================" ``` ### Веб-дашборд ```html AnsibleTemplate Dashboard

📊 AnsibleTemplate Dashboard

``` ## 🔧 Автоматизация мониторинга ### Настройка мониторинга ```bash #!/bin/bash # scripts/setup-monitoring.sh # Настройка мониторинга AnsibleTemplate echo "🔧 Настройка мониторинга..." # Создание директорий mkdir -p {scripts,metrics,reports,debug-logs} # Создание скрипта мониторинга cat > scripts/monitor.sh << 'EOF' #!/bin/bash # Скрипт мониторинга AnsibleTemplate # Проверка Docker if ! docker info >/dev/null 2>&1; then echo "❌ Docker не запущен" exit 1 fi # Проверка образов if ! docker images | grep -q inecs/ansible-lab; then echo "❌ Образы AnsibleTemplate не найдены" exit 1 fi echo "✅ Мониторинг завершен" EOF # Создание скрипта сбора метрик cat > scripts/collect-metrics.sh << 'EOF' #!/bin/bash # Сбор метрик AnsibleTemplate echo "📊 Сбор метрик..." # Метрики Docker docker info > metrics/docker-info.txt docker images > metrics/docker-images.txt # Метрики системы df -h > metrics/disk-usage.txt free -h > metrics/memory-usage.txt echo "✅ Метрики собраны" EOF # Создание скрипта генерации отчетов cat > scripts/generate-report.sh << 'EOF' #!/bin/bash # Генерация отчета о состоянии AnsibleTemplate echo "📋 Генерация отчета..." # Отчет о Docker cat > reports/docker-report.md << EOL # Docker Report ## Образы \`\`\` $(docker images | grep inecs/ansible-lab) \`\`\` EOL echo "✅ Отчеты сгенерированы" EOF # Делаем скрипты исполняемыми chmod +x scripts/*.sh echo "✅ Мониторинг настроен" ``` --- **Автор:** Сергей Антропов **Сайт:** https://devops.org.ru