Files
DevOpsLab/docs/monitoring.md
Сергей Антропов 3482980c3d
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
docs: обновлен monitoring.md с актуальной информацией
- Убраны устаревшие скрипты мониторинга и алертов
- Добавлены реальные команды для диагностики AnsibleLab
- Упрощена структура документа
- Добавлены команды для macOS и Linux
- Удалены неактуальные разделы (дашборд, автоматизация)
- Добавлен раздел 'Решение проблем' с практичными решениями
- Добавлена информация о проверке preset'ов и контейнеров Molecule

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-10-26 01:20:13 +03:00

425 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Мониторинг и диагностика 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 <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
# 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