diff --git a/telezab.py b/telezab.py
index 548f3e6..d9ad0b5 100644
--- a/telezab.py
+++ b/telezab.py
@@ -1265,7 +1265,7 @@ def get_zabbix_triggers(group_id):
# Получение активных проблем для этих хостов
problems = zapi.problem.get(
- output=["eventid", "name", "severity", "clock"],
+ output=["eventid", "name", "severity", "clock", "objectid"],
hostids=host_ids,
suppressed=0,
acknowledged=0,
@@ -1277,13 +1277,39 @@ def get_zabbix_triggers(group_id):
telebot.logger.info(f"No active problems found for group {group_id}")
return []
+ # Получение триггеров и их связи с хостами
+ trigger_ids = [problem["objectid"] for problem in problems]
+ triggers = zapi.trigger.get(
+ triggerids=trigger_ids,
+ output=["triggerid", "description"],
+ selectHosts=["hostid"]
+ )
+
+ # Создаем карту триггеров к хостам
+ trigger_to_host_map = {}
+ for trigger in triggers:
+ if "hosts" in trigger and trigger["hosts"]:
+ trigger_to_host_map[trigger["triggerid"]] = trigger["hosts"][0]["hostid"]
+
# Получение IP-адресов хостов
host_interfaces = zapi.hostinterface.get(
hostids=host_ids,
output=["hostid", "ip"]
)
host_ip_map = {iface["hostid"]: iface["ip"] for iface in host_interfaces}
- print(host_ip_map)
+
+ # Получение itemid для триггеров на основе их описания
+ item_map = {}
+ for host in active_hosts:
+ host_id = host["hostid"]
+ items = zapi.item.get(
+ hostids=host_id,
+ output=["itemid", "name"]
+ )
+ for item in items:
+ item_map[(host_id, item["name"])] = item["itemid"]
+
+
moscow_tz = timezone('Europe/Moscow')
severity_map = {'4': 'HIGH', '5': 'DISASTER'}
priority_map = {'4': '⚠️', '5': '⛔️'}
@@ -1298,12 +1324,16 @@ def get_zabbix_triggers(group_id):
priority = priority_map.get(problem['severity'], '')
description = problem.get('name', 'Нет описания')
- # Получаем хост из описания (или по-другому, если известно)
+ # Получаем hostid через триггер
+ trigger_id = problem.get("objectid")
+ host_id = trigger_to_host_map.get(trigger_id, "Неизвестный хост")
+ host_ip = host_ip_map.get(host_id, "Неизвестный IP")
host = extract_host_from_name(description)
- host_ip = host_ip_map.get(problem.get("hostid"), "Неизвестный IP")
+ description = escape_telegram_chars(description)
- message = (f"{priority} Host: {host}\n"
- f"IP: {host_ip}\n"
+
+
+ message = (f"{priority} {host} ({host_ip})\n"
f"Описание: {description}\n"
f"Критичность: {severity}\n"
f"Время создания: {event_time_formatted}")