101 lines
4.1 KiB
Python
101 lines
4.1 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Тестовый скрипт для проверки работы модуля мониторинга
|
||
"""
|
||
|
||
import sys
|
||
import os
|
||
import logging
|
||
|
||
# Добавляем текущую директорию в путь для импорта
|
||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||
|
||
from server_monitor import ServerMonitor
|
||
|
||
# Настройка логирования
|
||
logging.basicConfig(
|
||
level=logging.INFO,
|
||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
||
)
|
||
|
||
def main():
|
||
"""Основная функция тестирования"""
|
||
print("🚀 Тестирование модуля мониторинга сервера")
|
||
print("=" * 50)
|
||
|
||
try:
|
||
# Создаем экземпляр мониторинга
|
||
monitor = ServerMonitor()
|
||
|
||
# Получаем информацию о системе
|
||
print("📊 Получение информации о системе...")
|
||
system_info = monitor.get_system_info()
|
||
|
||
if system_info:
|
||
print("✅ Информация о системе получена успешно")
|
||
print(f" CPU: {system_info.get('cpu_percent', 'N/A')}%")
|
||
print(f" RAM: {system_info.get('ram_percent', 'N/A')}%")
|
||
print(f" Диск: {system_info.get('disk_percent', 'N/A')}%")
|
||
print(f" Хост: {system_info.get('server_hostname', 'N/A')}")
|
||
print(f" ОС: {monitor.os_type}")
|
||
else:
|
||
print("❌ Не удалось получить информацию о системе")
|
||
return
|
||
|
||
# Проверяем статус процессов
|
||
print("\n🤖 Проверка статуса процессов...")
|
||
voice_status, voice_uptime = monitor.check_process_status('voice_bot')
|
||
helper_status, helper_uptime = monitor.check_process_status('helper_bot')
|
||
|
||
print(f" Voice Bot: {voice_status} - {voice_uptime}")
|
||
print(f" Helper Bot: {helper_status} - {helper_uptime}")
|
||
|
||
# Получаем метрики для Prometheus
|
||
print("\n📈 Получение метрик для Prometheus...")
|
||
metrics = monitor.get_metrics_data()
|
||
|
||
if metrics:
|
||
print("✅ Метрики получены успешно")
|
||
for key, value in metrics.items():
|
||
print(f" {key}: {value}")
|
||
else:
|
||
print("❌ Не удалось получить метрики")
|
||
|
||
# Проверяем алерты
|
||
print("\n🚨 Проверка алертов...")
|
||
alerts, recoveries = monitor.check_alerts(system_info)
|
||
|
||
if alerts:
|
||
print(f" Найдено алертов: {len(alerts)}")
|
||
for alert_type, value, details in alerts:
|
||
print(f" {alert_type}: {value}% - {details}")
|
||
else:
|
||
print(" Алертов не найдено")
|
||
|
||
if recoveries:
|
||
print(f" Найдено восстановлений: {len(recoveries)}")
|
||
for recovery_type, value in recoveries:
|
||
print(f" {recovery_type}: {value}%")
|
||
|
||
# Получаем сообщение о статусе
|
||
print("\n💬 Формирование сообщения о статусе...")
|
||
status_message = monitor.get_status_message(system_info)
|
||
if status_message:
|
||
print("✅ Сообщение о статусе сформировано")
|
||
print(" Первые 200 символов:")
|
||
print(f" {status_message[:200]}...")
|
||
else:
|
||
print("❌ Не удалось сформировать сообщение о статусе")
|
||
|
||
print("\n🎉 Тестирование завершено успешно!")
|
||
|
||
except Exception as e:
|
||
print(f"❌ Ошибка при тестировании: {e}")
|
||
logging.error(f"Ошибка при тестировании: {e}", exc_info=True)
|
||
return 1
|
||
|
||
return 0
|
||
|
||
if __name__ == "__main__":
|
||
exit(main())
|