Initial commit: Add infrastructure and bot project

This commit is contained in:
2025-08-31 17:55:55 +03:00
commit 7378179d98
21 changed files with 3139 additions and 0 deletions

View File

@@ -0,0 +1,100 @@
#!/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())