docs: обновлен monitoring.md с актуальной информацией
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
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
- Убраны устаревшие скрипты мониторинга и алертов - Добавлены реальные команды для диагностики AnsibleLab - Упрощена структура документа - Добавлены команды для macOS и Linux - Удалены неактуальные разделы (дашборд, автоматизация) - Добавлен раздел 'Решение проблем' с практичными решениями - Добавлена информация о проверке preset'ов и контейнеров Molecule Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
**Автор:** Сергей Антропов
|
**Автор:** Сергей Антропов
|
||||||
**Сайт:** https://devops.org.ru
|
**Сайт:** https://devops.org.ru
|
||||||
|
**Версия:** 2.0.0
|
||||||
|
|
||||||
## 🔍 Диагностика Docker
|
## 🔍 Диагностика Docker
|
||||||
|
|
||||||
@@ -14,31 +15,37 @@ docker info
|
|||||||
# Проверка запущенных контейнеров
|
# Проверка запущенных контейнеров
|
||||||
docker ps -a
|
docker ps -a
|
||||||
|
|
||||||
# Проверка образов
|
# Проверка образов AnsibleLab
|
||||||
docker images | grep inecs/ansible-lab
|
docker images | grep inecs/ansible-lab
|
||||||
|
|
||||||
# Проверка сетей
|
# Проверка сетей
|
||||||
docker network ls
|
docker network ls | grep labnet
|
||||||
```
|
```
|
||||||
|
|
||||||
### Диагностика buildx проблем
|
### Диагностика buildx проблем
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Диагностика buildx
|
# Полная диагностика buildx
|
||||||
make docker diagnose
|
make docker diagnose
|
||||||
|
|
||||||
# Проверка builder'а
|
# Проверка builder'а
|
||||||
make docker setup-builder
|
make docker check-builder
|
||||||
|
|
||||||
# Сброс builder'а при проблемах
|
# Сброс builder'а при проблемах
|
||||||
make docker reset-builder
|
make docker reset-builder
|
||||||
|
|
||||||
|
# Настройка builder'а
|
||||||
|
make docker setup-builder
|
||||||
```
|
```
|
||||||
|
|
||||||
### Логи Docker
|
### Логи Docker
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Логи Docker daemon
|
# Логи Docker daemon (Linux)
|
||||||
sudo journalctl -u docker.service
|
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 ansible-controller
|
||||||
@@ -48,6 +55,9 @@ docker logs -t ansible-controller
|
|||||||
|
|
||||||
# Следить за логами в реальном времени
|
# Следить за логами в реальном времени
|
||||||
docker logs -f ansible-controller
|
docker logs -f ansible-controller
|
||||||
|
|
||||||
|
# Последние 100 строк логов
|
||||||
|
docker logs --tail 100 ansible-controller
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🧪 Диагностика тестирования
|
## 🧪 Диагностика тестирования
|
||||||
@@ -63,76 +73,91 @@ make presets info PRESET=default
|
|||||||
|
|
||||||
# Проверка файлов preset'ов
|
# Проверка файлов preset'ов
|
||||||
ls -la molecule/presets/
|
ls -la molecule/presets/
|
||||||
|
|
||||||
|
# Проверка всех preset'ов
|
||||||
|
find molecule/presets -name "*.yml" -exec echo "=== {} ===" \; -exec cat {} \;
|
||||||
```
|
```
|
||||||
|
|
||||||
### Проверка инвентори
|
### Проверка инвентори
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Проверка тестового инвентори
|
|
||||||
cat ${MOLECULE_EPHEMERAL_DIRECTORY}/inventory/hosts.ini
|
|
||||||
|
|
||||||
# Проверка продакшн инвентори
|
# Проверка продакшн инвентори
|
||||||
cat inventory/hosts.ini
|
cat inventory/hosts.ini
|
||||||
|
|
||||||
# Тестирование подключения
|
# Тестирование подключения
|
||||||
ansible all -i inventory/hosts.ini -m ping
|
ansible all -i inventory/hosts.ini -m ping
|
||||||
|
|
||||||
|
# Проверка доступности хостов
|
||||||
|
ansible all -i inventory/hosts.ini -m shell -a "uname -a"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Логи тестирования
|
### Логи тестирования
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Логи Molecule
|
# Проверка созданных контейнеров
|
||||||
ls -la molecule/default/.molecule/
|
docker ps -a --filter "network=labnet"
|
||||||
|
|
||||||
# Логи конкретного теста
|
# Логи всех контейнеров Molecule
|
||||||
cat molecule/default/.molecule/test/ansible.log
|
docker ps -a --filter "network=labnet" --format "{{.Names}}" | while read name; do
|
||||||
|
echo "=== $name ==="
|
||||||
|
docker logs $name 2>&1 | tail -20
|
||||||
|
done
|
||||||
|
|
||||||
# Логи Ansible
|
# Очистка контейнеров Molecule
|
||||||
cat molecule/default/.molecule/test/ansible.log | grep ERROR
|
make clean-containers
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📊 Мониторинг производительности
|
## 📊 Мониторинг ресурсов
|
||||||
|
|
||||||
### Мониторинг ресурсов
|
### Мониторинг Docker
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Использование CPU и памяти
|
# Статистика использования ресурсов контейнерами
|
||||||
docker stats
|
docker stats --no-stream
|
||||||
|
|
||||||
|
# Использование диска Docker
|
||||||
|
docker system df
|
||||||
|
|
||||||
|
# Детальная информация о диске
|
||||||
|
docker system df -v
|
||||||
|
|
||||||
|
# Очистка неиспользуемых ресурсов
|
||||||
|
docker system prune -a
|
||||||
|
```
|
||||||
|
|
||||||
|
### Мониторинг системы
|
||||||
|
|
||||||
|
```bash
|
||||||
# Использование диска
|
# Использование диска
|
||||||
df -h
|
df -h
|
||||||
|
|
||||||
# Использование памяти
|
# Использование памяти
|
||||||
free -h
|
free -h # Linux
|
||||||
|
vm_stat # macOS
|
||||||
|
|
||||||
# Процессы Docker
|
# Процессы Docker
|
||||||
ps aux | grep docker
|
ps aux | grep docker
|
||||||
|
|
||||||
|
# CPU и память в реальном времени
|
||||||
|
top
|
||||||
|
# или
|
||||||
|
htop
|
||||||
```
|
```
|
||||||
|
|
||||||
### Мониторинг сети
|
### Мониторинг сети
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Статистика сети
|
# Инспекция сети labnet
|
||||||
docker network inspect labnet
|
docker network inspect labnet
|
||||||
|
|
||||||
# Подключения к портам
|
# Статистика сети
|
||||||
|
docker network inspect labnet --format '{{json .Containers}}' | jq
|
||||||
|
|
||||||
|
# Просмотр портов
|
||||||
netstat -tulpn | grep docker
|
netstat -tulpn | grep docker
|
||||||
|
|
||||||
# Проверка DNS
|
# Просмотр установленных соединений
|
||||||
nslookup docker.io
|
ss -tulpn | grep docker
|
||||||
```
|
|
||||||
|
|
||||||
### Мониторинг логов
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Логи системы
|
|
||||||
sudo journalctl -f
|
|
||||||
|
|
||||||
# Логи Docker
|
|
||||||
sudo journalctl -u docker.service -f
|
|
||||||
|
|
||||||
# Логи Ansible
|
|
||||||
tail -f /var/log/ansible.log
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🔧 Диагностика ролей
|
## 🔧 Диагностика ролей
|
||||||
@@ -144,447 +169,253 @@ tail -f /var/log/ansible.log
|
|||||||
make role lint
|
make role lint
|
||||||
|
|
||||||
# Lint проверка конкретной роли
|
# Lint проверка конкретной роли
|
||||||
ansible-lint roles/my-role/
|
make role lint docker
|
||||||
|
make role lint devops
|
||||||
|
make role lint ping
|
||||||
|
|
||||||
# Проверка синтаксиса YAML
|
# Проверка синтаксиса файлов роли
|
||||||
ansible-playbook --syntax-check roles/my-role/tasks/main.yml
|
ansible-playbook --syntax-check roles/docker/tasks/main.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
### Проверка переменных
|
### Проверка переменных
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Проверка переменных роли
|
# Просмотр всех переменных для хоста
|
||||||
ansible-inventory --list -i inventory/hosts.ini
|
ansible-inventory --list -i inventory/hosts.ini
|
||||||
|
|
||||||
# Проверка переменных для конкретного хоста
|
# Проверка переменных конкретного хоста
|
||||||
ansible-inventory --host web1.example.com -i inventory/hosts.ini
|
ansible-inventory --host web1.example.com -i inventory/hosts.ini
|
||||||
|
|
||||||
# Проверка переменных группы
|
# Просмотр всех групп
|
||||||
ansible-inventory --host web_servers -i inventory/hosts.ini
|
ansible-inventory --list | jq 'keys'
|
||||||
```
|
```
|
||||||
|
|
||||||
### Тестирование ролей
|
### Тестирование ролей
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Тестирование с verbose выводом
|
# Тестирование с подробным выводом
|
||||||
ansible-playbook -i inventory/hosts.ini site.yml -vvv
|
make role test 2>&1 | tee test-output.log
|
||||||
|
|
||||||
# Тестирование конкретной роли
|
# Тестирование конкретной роли
|
||||||
ansible-playbook -i inventory/hosts.ini site.yml --tags my-role
|
make role test docker
|
||||||
|
|
||||||
# Тестирование с dry-run
|
# Тестирование с minimal preset
|
||||||
ansible-playbook -i inventory/hosts.ini site.yml --check
|
make role test minimal
|
||||||
|
|
||||||
|
# Просмотр результатов теста
|
||||||
|
docker logs $(docker ps -aq --filter "network=labnet" | head -1)
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🚨 Алерты и уведомления
|
## 🚨 Решение проблем
|
||||||
|
|
||||||
### Настройка алертов
|
### Проблемы с Docker
|
||||||
|
|
||||||
|
#### Docker не запускается
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
#!/bin/bash
|
# Проверка статуса (Linux)
|
||||||
# scripts/monitor.sh
|
|
||||||
# Скрипт мониторинга AnsibleLab
|
|
||||||
|
|
||||||
# Проверка Docker
|
|
||||||
if ! docker info >/dev/null 2>&1; then
|
|
||||||
echo "❌ Docker не запущен"
|
|
||||||
# Отправка уведомления
|
|
||||||
curl -X POST -H 'Content-type: application/json' \
|
|
||||||
--data '{"text":"❌ Docker не запущен в AnsibleLab"}' \
|
|
||||||
$SLACK_WEBHOOK_URL
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Проверка образов
|
|
||||||
if ! docker images | grep -q inecs/ansible-lab; then
|
|
||||||
echo "❌ Образы AnsibleLab не найдены"
|
|
||||||
# Отправка уведомления
|
|
||||||
curl -X POST -H 'Content-type: application/json' \
|
|
||||||
--data '{"text":"❌ Образы AnsibleLab не найдены"}' \
|
|
||||||
$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
|
|
||||||
# Сбор метрик AnsibleLab
|
|
||||||
|
|
||||||
echo "📊 Сбор метрик AnsibleLab..."
|
|
||||||
|
|
||||||
# Создание директории для метрик
|
|
||||||
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
|
|
||||||
# Генерация отчета о состоянии AnsibleLab
|
|
||||||
|
|
||||||
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
|
sudo systemctl status docker
|
||||||
|
|
||||||
# Запуск Docker
|
# Запуск Docker (Linux)
|
||||||
sudo systemctl start docker
|
sudo systemctl start docker
|
||||||
|
|
||||||
# Проверка логов
|
# Проверка логов (Linux)
|
||||||
sudo journalctl -u docker.service
|
sudo journalctl -u docker.service -f
|
||||||
|
|
||||||
|
# Перезапуск Docker Desktop (macOS/Windows)
|
||||||
|
# Use Docker Desktop interface
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 2. Образы не собираются
|
#### Buildx зависает
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Проверка builder'а
|
# Диагностика
|
||||||
make docker diagnose
|
make docker diagnose
|
||||||
|
|
||||||
# Сброс builder'а
|
# Сброс builder'а
|
||||||
make docker reset-builder
|
make docker reset-builder
|
||||||
|
|
||||||
# Очистка кеша
|
# Очистка контейнеров buildkit
|
||||||
make docker clean
|
docker ps -a --filter "name=buildx_buildkit" --format "{{.Names}}" | xargs -r docker rm -f
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 3. Тесты не проходят
|
#### Образы не собираются
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Проверка preset'ов
|
# Очистка builder'а
|
||||||
make presets list
|
make docker clean-builder
|
||||||
|
|
||||||
# Проверка инвентори
|
# Пересоздание builder'а
|
||||||
cat ${MOLECULE_EPHEMERAL_DIRECTORY}/inventory/hosts.ini
|
make docker setup-builder
|
||||||
|
|
||||||
# Проверка логов
|
# Полная пересборка
|
||||||
docker logs ansible-controller
|
make docker rebuild
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 4. Роли не работают
|
### Проблемы с тестированием
|
||||||
|
|
||||||
|
#### 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 <container-name>
|
||||||
|
|
||||||
|
# Перезапуск контейнера
|
||||||
|
docker restart <container-name>
|
||||||
|
|
||||||
|
# Удаление всех контейнеров Molecule
|
||||||
|
make clean-containers
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Роли не выполняются
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Проверка синтаксиса
|
# Проверка синтаксиса
|
||||||
make role lint
|
make role lint
|
||||||
|
|
||||||
|
# Тест с verbose выводом
|
||||||
|
ansible-playbook -i inventory/hosts.ini site.yml -vvv
|
||||||
|
|
||||||
# Проверка переменных
|
# Проверка переменных
|
||||||
ansible-inventory --list -i inventory/hosts.ini
|
ansible-inventory --list -i inventory/hosts.ini
|
||||||
|
|
||||||
# Тестирование с verbose
|
# 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
|
ansible-playbook -i inventory/hosts.ini site.yml -vvv
|
||||||
```
|
```
|
||||||
|
|
||||||
### Логи для отладки
|
## 📈 Сбор диагностической информации
|
||||||
|
|
||||||
|
### Скрипт диагностики
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Сбор всех логов
|
#!/bin/bash
|
||||||
|
# Создание отчета для диагностики
|
||||||
|
|
||||||
|
echo "🔍 Сбор диагностической информации..."
|
||||||
|
|
||||||
|
# Создание директории для логов
|
||||||
mkdir -p debug-logs
|
mkdir -p debug-logs
|
||||||
|
|
||||||
# Логи Docker
|
# Docker информация
|
||||||
docker info > debug-logs/docker-info.txt
|
docker info > debug-logs/docker-info.txt 2>&1
|
||||||
docker images > debug-logs/docker-images.txt
|
docker images > debug-logs/docker-images.txt 2>&1
|
||||||
docker ps -a > debug-logs/docker-containers.txt
|
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
|
df -h > debug-logs/disk-usage.txt 2>&1
|
||||||
free -h > debug-logs/memory-usage.txt
|
free -h > debug-logs/memory-usage.txt 2>&1 2>/dev/null || vm_stat > debug-logs/memory-usage.txt 2>&1
|
||||||
ps aux > debug-logs/processes.txt
|
ps aux | grep docker > debug-logs/docker-processes.txt 2>&1
|
||||||
|
|
||||||
# Логи Ansible
|
# Информация о проекте
|
||||||
ansible --version > debug-logs/ansible-version.txt
|
ls -la roles/ > debug-logs/roles-list.txt 2>&1
|
||||||
ansible-galaxy list > debug-logs/ansible-galaxy.txt
|
ls -la molecule/presets/ > debug-logs/presets-list.txt 2>&1
|
||||||
|
cat inventory/hosts.ini > debug-logs/inventory.txt 2>&1
|
||||||
|
|
||||||
# Логи ролей
|
# Создание архива
|
||||||
find roles/ -name "*.yml" -exec ansible-playbook --syntax-check {} \; > debug-logs/roles-syntax.txt
|
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
|
```bash
|
||||||
#!/bin/bash
|
# Быстрая проверка состояния
|
||||||
# scripts/dashboard.sh
|
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 "📊 AnsibleLab Dashboard"
|
echo "=== Presets ===" && ls -1 molecule/presets/*.yml 2>/dev/null | wc -l
|
||||||
echo "=========================="
|
echo "=== Disk Usage ===" && df -h . | tail -1
|
||||||
|
|
||||||
# Статус 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
|
### Очистка
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>AnsibleLab Dashboard</title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<style>
|
|
||||||
body { font-family: Arial, sans-serif; margin: 20px; }
|
|
||||||
.status { padding: 10px; margin: 10px 0; border-radius: 5px; }
|
|
||||||
.success { background-color: #d4edda; color: #155724; }
|
|
||||||
.error { background-color: #f8d7da; color: #721c24; }
|
|
||||||
.info { background-color: #d1ecf1; color: #0c5460; }
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>📊 AnsibleLab Dashboard</h1>
|
|
||||||
|
|
||||||
<div id="status"></div>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
function updateStatus() {
|
|
||||||
fetch('/api/status')
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(data => {
|
|
||||||
const statusDiv = document.getElementById('status');
|
|
||||||
statusDiv.innerHTML = `
|
|
||||||
<div class="status ${data.docker ? 'success' : 'error'}">
|
|
||||||
Docker: ${data.docker ? '✅ Запущен' : '❌ Не запущен'}
|
|
||||||
</div>
|
|
||||||
<div class="status info">
|
|
||||||
Образы: ${data.images}
|
|
||||||
</div>
|
|
||||||
<div class="status info">
|
|
||||||
Роли: ${data.roles}
|
|
||||||
</div>
|
|
||||||
<div class="status info">
|
|
||||||
Preset'ы: ${data.presets}
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
})
|
|
||||||
.catch(error => {
|
|
||||||
console.error('Error:', error);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Обновление каждые 30 секунд
|
|
||||||
setInterval(updateStatus, 30000);
|
|
||||||
updateStatus();
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔧 Автоматизация мониторинга
|
|
||||||
|
|
||||||
### Настройка мониторинга
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
#!/bin/bash
|
# Очистка контейнеров Molecule
|
||||||
# scripts/setup-monitoring.sh
|
make clean-containers
|
||||||
# Настройка мониторинга AnsibleLab
|
|
||||||
|
|
||||||
echo "🔧 Настройка мониторинга..."
|
# Очистка Docker образов AnsibleLab
|
||||||
|
make docker clean
|
||||||
|
|
||||||
# Создание директорий
|
# Очистка всего Docker
|
||||||
mkdir -p {scripts,metrics,reports,debug-logs}
|
make docker purge
|
||||||
|
|
||||||
# Создание скрипта мониторинга
|
# Очистка buildx
|
||||||
cat > scripts/monitor.sh << 'EOF'
|
make docker clean-builder
|
||||||
#!/bin/bash
|
```
|
||||||
# Скрипт мониторинга AnsibleLab
|
|
||||||
|
|
||||||
# Проверка Docker
|
### Проверка
|
||||||
if ! docker info >/dev/null 2>&1; then
|
|
||||||
echo "❌ Docker не запущен"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Проверка образов
|
```bash
|
||||||
if ! docker images | grep -q inecs/ansible-lab; then
|
# Проверка наличия образов
|
||||||
echo "❌ Образы AnsibleLab не найдены"
|
make custom-images check
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "✅ Мониторинг завершен"
|
# Проверка builder'а
|
||||||
EOF
|
make docker check-builder
|
||||||
|
|
||||||
# Создание скрипта сбора метрик
|
# Информация об образах
|
||||||
cat > scripts/collect-metrics.sh << 'EOF'
|
make docker info
|
||||||
#!/bin/bash
|
```
|
||||||
# Сбор метрик AnsibleLab
|
|
||||||
|
|
||||||
echo "📊 Сбор метрик..."
|
### Тестирование
|
||||||
|
|
||||||
# Метрики Docker
|
```bash
|
||||||
docker info > metrics/docker-info.txt
|
# Быстрый тест
|
||||||
docker images > metrics/docker-images.txt
|
make role test minimal
|
||||||
|
|
||||||
# Метрики системы
|
# Полный тест
|
||||||
df -h > metrics/disk-usage.txt
|
make role test all-images
|
||||||
free -h > metrics/memory-usage.txt
|
|
||||||
|
|
||||||
echo "✅ Метрики собраны"
|
# Тест с конкретным preset'ом
|
||||||
EOF
|
make role test docker-full
|
||||||
|
|
||||||
# Создание скрипта генерации отчетов
|
|
||||||
cat > scripts/generate-report.sh << 'EOF'
|
|
||||||
#!/bin/bash
|
|
||||||
# Генерация отчета о состоянии AnsibleLab
|
|
||||||
|
|
||||||
echo "📋 Генерация отчета..."
|
|
||||||
|
|
||||||
# Отчет о Docker
|
|
||||||
cat > reports/docker-report.md << EOL
|
|
||||||
# Docker Report
|
|
||||||
|
|
||||||
## Образы
|
|
||||||
\`\`\`
|
|
||||||
$(docker images | grep inecs/ansible-lab)
|
|
||||||
\`\`\`
|
|
||||||
EOL
|
|
||||||
|
|
||||||
echo "✅ Отчеты сгенерированы"
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Делаем скрипты исполняемыми
|
|
||||||
chmod +x scripts/*.sh
|
|
||||||
|
|
||||||
echo "✅ Мониторинг настроен"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
Reference in New Issue
Block a user