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

10 KiB
Raw Blame History

Мониторинг и диагностика AnsibleLab

Автор: Сергей Антропов
Сайт: https://devops.org.ru
Версия: 2.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