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:
@@ -1,7 +1,8 @@
|
||||
# Мониторинг и диагностика AnsibleLab
|
||||
|
||||
**Автор:** Сергей Антропов
|
||||
**Сайт:** https://devops.org.ru
|
||||
**Сайт:** https://devops.org.ru
|
||||
**Версия:** 2.0.0
|
||||
|
||||
## 🔍 Диагностика Docker
|
||||
|
||||
@@ -14,31 +15,37 @@ docker info
|
||||
# Проверка запущенных контейнеров
|
||||
docker ps -a
|
||||
|
||||
# Проверка образов
|
||||
# Проверка образов AnsibleLab
|
||||
docker images | grep inecs/ansible-lab
|
||||
|
||||
# Проверка сетей
|
||||
docker network ls
|
||||
docker network ls | grep labnet
|
||||
```
|
||||
|
||||
### Диагностика buildx проблем
|
||||
|
||||
```bash
|
||||
# Диагностика buildx
|
||||
# Полная диагностика buildx
|
||||
make docker diagnose
|
||||
|
||||
# Проверка builder'а
|
||||
make docker setup-builder
|
||||
make docker check-builder
|
||||
|
||||
# Сброс builder'а при проблемах
|
||||
make docker reset-builder
|
||||
|
||||
# Настройка builder'а
|
||||
make docker setup-builder
|
||||
```
|
||||
|
||||
### Логи Docker
|
||||
|
||||
```bash
|
||||
# Логи Docker daemon
|
||||
sudo journalctl -u docker.service
|
||||
# Логи 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
|
||||
@@ -48,6 +55,9 @@ docker logs -t ansible-controller
|
||||
|
||||
# Следить за логами в реальном времени
|
||||
docker logs -f ansible-controller
|
||||
|
||||
# Последние 100 строк логов
|
||||
docker logs --tail 100 ansible-controller
|
||||
```
|
||||
|
||||
## 🧪 Диагностика тестирования
|
||||
@@ -63,76 +73,91 @@ make presets info PRESET=default
|
||||
|
||||
# Проверка файлов preset'ов
|
||||
ls -la molecule/presets/
|
||||
|
||||
# Проверка всех preset'ов
|
||||
find molecule/presets -name "*.yml" -exec echo "=== {} ===" \; -exec cat {} \;
|
||||
```
|
||||
|
||||
### Проверка инвентори
|
||||
|
||||
```bash
|
||||
# Проверка тестового инвентори
|
||||
cat ${MOLECULE_EPHEMERAL_DIRECTORY}/inventory/hosts.ini
|
||||
|
||||
# Проверка продакшн инвентори
|
||||
cat inventory/hosts.ini
|
||||
|
||||
# Тестирование подключения
|
||||
ansible all -i inventory/hosts.ini -m ping
|
||||
|
||||
# Проверка доступности хостов
|
||||
ansible all -i inventory/hosts.ini -m shell -a "uname -a"
|
||||
```
|
||||
|
||||
### Логи тестирования
|
||||
|
||||
```bash
|
||||
# Логи Molecule
|
||||
ls -la molecule/default/.molecule/
|
||||
# Проверка созданных контейнеров
|
||||
docker ps -a --filter "network=labnet"
|
||||
|
||||
# Логи конкретного теста
|
||||
cat molecule/default/.molecule/test/ansible.log
|
||||
# Логи всех контейнеров Molecule
|
||||
docker ps -a --filter "network=labnet" --format "{{.Names}}" | while read name; do
|
||||
echo "=== $name ==="
|
||||
docker logs $name 2>&1 | tail -20
|
||||
done
|
||||
|
||||
# Логи Ansible
|
||||
cat molecule/default/.molecule/test/ansible.log | grep ERROR
|
||||
# Очистка контейнеров Molecule
|
||||
make clean-containers
|
||||
```
|
||||
|
||||
## 📊 Мониторинг производительности
|
||||
## 📊 Мониторинг ресурсов
|
||||
|
||||
### Мониторинг ресурсов
|
||||
### Мониторинг Docker
|
||||
|
||||
```bash
|
||||
# Использование CPU и памяти
|
||||
docker stats
|
||||
# Статистика использования ресурсов контейнерами
|
||||
docker stats --no-stream
|
||||
|
||||
# Использование диска Docker
|
||||
docker system df
|
||||
|
||||
# Детальная информация о диске
|
||||
docker system df -v
|
||||
|
||||
# Очистка неиспользуемых ресурсов
|
||||
docker system prune -a
|
||||
```
|
||||
|
||||
### Мониторинг системы
|
||||
|
||||
```bash
|
||||
# Использование диска
|
||||
df -h
|
||||
|
||||
# Использование памяти
|
||||
free -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
|
||||
|
||||
# Проверка DNS
|
||||
nslookup docker.io
|
||||
```
|
||||
|
||||
### Мониторинг логов
|
||||
|
||||
```bash
|
||||
# Логи системы
|
||||
sudo journalctl -f
|
||||
|
||||
# Логи Docker
|
||||
sudo journalctl -u docker.service -f
|
||||
|
||||
# Логи Ansible
|
||||
tail -f /var/log/ansible.log
|
||||
# Просмотр установленных соединений
|
||||
ss -tulpn | grep docker
|
||||
```
|
||||
|
||||
## 🔧 Диагностика ролей
|
||||
@@ -144,447 +169,253 @@ tail -f /var/log/ansible.log
|
||||
make role 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
|
||||
# Проверка переменных роли
|
||||
# Просмотр всех переменных для хоста
|
||||
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
|
||||
# Просмотр всех групп
|
||||
ansible-inventory --list | jq 'keys'
|
||||
```
|
||||
|
||||
### Тестирование ролей
|
||||
|
||||
```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
|
||||
ansible-playbook -i inventory/hosts.ini site.yml --check
|
||||
# Тестирование с minimal preset
|
||||
make role test minimal
|
||||
|
||||
# Просмотр результатов теста
|
||||
docker logs $(docker ps -aq --filter "network=labnet" | head -1)
|
||||
```
|
||||
|
||||
## 🚨 Алерты и уведомления
|
||||
## 🚨 Решение проблем
|
||||
|
||||
### Настройка алертов
|
||||
### Проблемы с Docker
|
||||
|
||||
#### Docker не запускается
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# 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
|
||||
# Проверка статуса (Linux)
|
||||
sudo systemctl status docker
|
||||
|
||||
# Запуск Docker
|
||||
# Запуск Docker (Linux)
|
||||
sudo systemctl start docker
|
||||
|
||||
# Проверка логов
|
||||
sudo journalctl -u docker.service
|
||||
# Проверка логов (Linux)
|
||||
sudo journalctl -u docker.service -f
|
||||
|
||||
# Перезапуск Docker Desktop (macOS/Windows)
|
||||
# Use Docker Desktop interface
|
||||
```
|
||||
|
||||
#### 2. Образы не собираются
|
||||
#### Buildx зависает
|
||||
|
||||
```bash
|
||||
# Проверка builder'а
|
||||
# Диагностика
|
||||
make docker diagnose
|
||||
|
||||
# Сброс builder'а
|
||||
make docker reset-builder
|
||||
|
||||
# Очистка кеша
|
||||
make docker clean
|
||||
# Очистка контейнеров buildkit
|
||||
docker ps -a --filter "name=buildx_buildkit" --format "{{.Names}}" | xargs -r docker rm -f
|
||||
```
|
||||
|
||||
#### 3. Тесты не проходят
|
||||
#### Образы не собираются
|
||||
|
||||
```bash
|
||||
# Проверка preset'ов
|
||||
make presets list
|
||||
# Очистка builder'а
|
||||
make docker clean-builder
|
||||
|
||||
# Проверка инвентори
|
||||
cat ${MOLECULE_EPHEMERAL_DIRECTORY}/inventory/hosts.ini
|
||||
# Пересоздание builder'а
|
||||
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
|
||||
# Проверка синтаксиса
|
||||
make role lint
|
||||
|
||||
# Тест с verbose выводом
|
||||
ansible-playbook -i inventory/hosts.ini site.yml -vvv
|
||||
|
||||
# Проверка переменных
|
||||
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
|
||||
```
|
||||
|
||||
### Логи для отладки
|
||||
## 📈 Сбор диагностической информации
|
||||
|
||||
### Скрипт диагностики
|
||||
|
||||
```bash
|
||||
# Сбор всех логов
|
||||
#!/bin/bash
|
||||
# Создание отчета для диагностики
|
||||
|
||||
echo "🔍 Сбор диагностической информации..."
|
||||
|
||||
# Создание директории для логов
|
||||
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
|
||||
# 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
|
||||
free -h > debug-logs/memory-usage.txt
|
||||
ps aux > debug-logs/processes.txt
|
||||
# Системная информация
|
||||
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
|
||||
|
||||
# Логи Ansible
|
||||
ansible --version > debug-logs/ansible-version.txt
|
||||
ansible-galaxy list > debug-logs/ansible-galaxy.txt
|
||||
# Информация о проекте
|
||||
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
|
||||
|
||||
# Логи ролей
|
||||
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
|
||||
#!/bin/bash
|
||||
# scripts/dashboard.sh
|
||||
# Простой дашборд мониторинга
|
||||
|
||||
echo "📊 AnsibleLab 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 "=========================="
|
||||
# Быстрая проверка состояния
|
||||
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
|
||||
```
|
||||
|
||||
### Веб-дашборд
|
||||
## 🔧 Полезные команды
|
||||
|
||||
```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
|
||||
#!/bin/bash
|
||||
# scripts/setup-monitoring.sh
|
||||
# Настройка мониторинга AnsibleLab
|
||||
# Очистка контейнеров Molecule
|
||||
make clean-containers
|
||||
|
||||
echo "🔧 Настройка мониторинга..."
|
||||
# Очистка Docker образов AnsibleLab
|
||||
make docker clean
|
||||
|
||||
# Создание директорий
|
||||
mkdir -p {scripts,metrics,reports,debug-logs}
|
||||
# Очистка всего Docker
|
||||
make docker purge
|
||||
|
||||
# Создание скрипта мониторинга
|
||||
cat > scripts/monitor.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
# Скрипт мониторинга AnsibleLab
|
||||
# Очистка buildx
|
||||
make docker clean-builder
|
||||
```
|
||||
|
||||
# Проверка Docker
|
||||
if ! docker info >/dev/null 2>&1; then
|
||||
echo "❌ Docker не запущен"
|
||||
exit 1
|
||||
fi
|
||||
### Проверка
|
||||
|
||||
# Проверка образов
|
||||
if ! docker images | grep -q inecs/ansible-lab; then
|
||||
echo "❌ Образы AnsibleLab не найдены"
|
||||
exit 1
|
||||
fi
|
||||
```bash
|
||||
# Проверка наличия образов
|
||||
make custom-images check
|
||||
|
||||
echo "✅ Мониторинг завершен"
|
||||
EOF
|
||||
# Проверка builder'а
|
||||
make docker check-builder
|
||||
|
||||
# Создание скрипта сбора метрик
|
||||
cat > scripts/collect-metrics.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
# Сбор метрик AnsibleLab
|
||||
# Информация об образах
|
||||
make docker info
|
||||
```
|
||||
|
||||
echo "📊 Сбор метрик..."
|
||||
### Тестирование
|
||||
|
||||
# Метрики Docker
|
||||
docker info > metrics/docker-info.txt
|
||||
docker images > metrics/docker-images.txt
|
||||
```bash
|
||||
# Быстрый тест
|
||||
make role test minimal
|
||||
|
||||
# Метрики системы
|
||||
df -h > metrics/disk-usage.txt
|
||||
free -h > metrics/memory-usage.txt
|
||||
# Полный тест
|
||||
make role test all-images
|
||||
|
||||
echo "✅ Метрики собраны"
|
||||
EOF
|
||||
|
||||
# Создание скрипта генерации отчетов
|
||||
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 "✅ Мониторинг настроен"
|
||||
# Тест с конкретным preset'ом
|
||||
make role test docker-full
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user