#!/usr/bin/env python3 """ Matrix Alerts Bridge — відправка алертів з Prometheus в Matrix ops room """ import asyncio import os from nio import AsyncClient from prometheus_client import start_http_server from prometheus_client.core import Gauge, Counter class MatrixAlertsBridge: def __init__(self): self.matrix_homeserver = os.getenv("MATRIX_HOMESERVER", "https://matrix.org") self.matrix_user = os.getenv("MATRIX_USER", "") self.matrix_password = os.getenv("MATRIX_PASSWORD", "") self.ops_room_id = os.getenv("MATRIX_OPS_ROOM_ID", "") self.client: AsyncClient = None async def connect(self): """Підключення до Matrix""" self.client = AsyncClient(self.matrix_homeserver, self.matrix_user) await self.client.login(self.matrix_password) print(f"✅ Підключено до Matrix: {self.matrix_user}") async def send_alert(self, alert_name: str, severity: str, description: str): """Відправка алерту в Matrix ops room""" emoji = "🔴" if severity == "critical" else "🟡" message = f"{emoji} **{alert_name}** ({severity})\n\n{description}" await self.client.room_send( room_id=self.ops_room_id, message_type="m.room.message", content={ "msgtype": "m.text", "body": message, "format": "org.matrix.custom.html", "formatted_body": message.replace("\n", "
") } ) async def listen_prometheus_alerts(self): """Слухання алертів з Prometheus Alertmanager webhook""" # TODO: Реалізація webhook listener для Prometheus Alertmanager pass async def main(): bridge = MatrixAlertsBridge() await bridge.connect() # Тестовий алерт await bridge.send_alert( "TestAlert", "warning", "Це тестовий алерт для перевірки Matrix bridge" ) print("✅ Тестовий алерт відправлено") if __name__ == "__main__": asyncio.run(main())