zabbix 告警設計
阿新 • • 發佈:2019-02-17
告警設計
- 通過zabbix api 查詢報警資訊 (已實現)
- 通過查詢sql 查詢告警資訊 然後通過轉發實現訊息推送( 重新定義一個數據庫,使用觸發器把zabbix資料庫中的告警資料同步到新庫,查詢新庫和平臺對接)
- 重寫原始碼介面
- 改寫原始碼的訊息傳送方式.
與平臺對接用的 requests 模組 傳送URL
具體實現
-
方案一 通過zabbix api 查詢報警資訊 (已實現)
-
方案二 通過查詢sql 查詢告警資訊 然後通過轉發實現訊息推送( 重新定義一個數據庫,使用觸發器把zabbix資料庫中的告警資料同步到新庫,查詢新庫和平臺對接)
# 新增欄位 hostid## 可以在新庫上面拓展欄位 # 建立資料庫 report 建立表 newevent DROP DATABASE IF EXISTS `report`; CREATE DATABASE report character set utf8; USE report; DROP TABLE IF EXISTS `newevent`; CREATE TABLE `newevent` ( `id` int(11) NOT NULL AUTO_INCREMENT, `host` varchar(128) CHARACTER SET utf8 NOT NULL DEFAULT '', hostid int(11) `triggerid` bigint(20) unsigned NOT NULL, `description` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '', `priority` int(11) NOT NULL DEFAULT '0', `value` int(11) NOT NULL DEFAULT '0', `time` datetime DEFAULT NULL, primary key (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; # 建立觸發器 zabbix 庫 DELIMITER `$$` DROP TRIGGER IF EXISTS after_insert_on_event; CREATE TRIGGER after_insert_on_event AFTER INSERT ON zabbix.`events` FOR EACH ROW BEGIN INSERT INTO report.newevent ( report.newevent.host, report.newevent.triggerid, report.newevent.description, report.newevent.priority, report.newevent.value, report.newevent.time ) SELECT zabbix.`hosts`.`host`, zabbix.`triggers`.triggerid, zabbix.`triggers`.description, zabbix.`triggers`.priority, zabbix.`events`.`value`, FROM_UNIXTIME(zabbix.`events`.clock) FROM zabbix.`hosts`, zabbix.`triggers`, zabbix.`events`, zabbix.items, zabbix.functions, zabbix.groups, zabbix.hosts_groups WHERE zabbix.`hosts`.hostid = zabbix.hosts_groups.hostid AND zabbix.hosts_groups.groupid = zabbix.groups.groupid AND zabbix.`triggers`.triggerid = zabbix.`events`.objectid AND zabbix.`hosts`.hostid = zabbix.items.hostid AND zabbix.items.itemid = zabbix.functions.itemid AND zabbix.functions.triggerid = zabbix.`triggers`.triggerid AND zabbix.`events`.eventid=new.eventid; END; $$ DELIMITER ;
-
方案三 重寫原始碼介面
還沒有找到具體的收集告警的程式碼, (收集資料是在 zabbix_agent 主動向zabbix_server 傳送資訊)
actions.c 在查詢資料庫後,把響應的改動重新寫入 資料庫中
alers.c 主要是看到 傳送告警的幾種方式 -
方案四 改寫原始碼的訊息傳送方式.
在 zabbix-3.4.11\src\zabbix_server\alerter\alerter.c 增加 一個傳送方式, 資料庫 表 media_type 新增一中傳送方式 (類似指令碼)