zabbix報警信息提取
在日常的監控中,我們除了日常的zabbix操作外,我們有的時候還涉及到與其他公司進行數據對接。由于別的公司的數據對接很多時候并不是按照zabbix的數據結構(尤其是大型廠家,或是專業監控廠家,并不會直接使用zabbix,多數是自己開發或是對其他監控軟件進行二次開發之類),在這種需求基礎上,我們就需要整理下zabbix的數據庫,將需要的數據提取出來,并轉化成我們需要的格式。
對接格式:
對接數據庫設計 | |||||
庫名 | 表 | 字段 | |||
表名 | 表含義 | 字段 | 字段名稱 | 含義 | |
alarmreport | report | 故障表 | reportid | 告警流水號 | 主鍵 |
reportip | 網元名稱 | 報警的IP | |||
reporttype | 網元類別 | 報警IP的類別(服務器/交換機) | |||
alarmid | 告警ID | 可以從字典里查詢 | |||
alarmname | 告警名稱 | 可以從字典里查詢 | |||
alarmlevel | 告警級別 | ||||
alarmstat | 告警狀態 | 是否恢復 | |||
alarmtime | 發生時間 | ||||
alarmcause | 故障定位 | 可以從字典里查詢 | |||
sendstatus | 發送狀態 | 報警是否發送 | |||
dictionary | 字典表 | alarmid | 告警ID | 主鍵 | |
alarmname | 告警名稱 | ||||
alarmcause | 故障定位 |
1.創建對接庫:
——————————————————————————-
DROP DATABASE IF EXISTS `alarmreport`;
CREATE DATABASE alarmreport;
USE alarmreport;
DROP TABLE IF EXISTS `report`;
CREATE TABLE `report` (
`reportid` int(11) NOT NULL AUTO_INCREMENT,
`reportip` varchar(64) NOT NULL,
`reporttype` varchar(64) NOT NULL,
`alarmid` int(11) NOT NULL,
`alarmname` varchar(64) NOT NULL,
`alarmlevel` varchar(64) NOT NULL,
`alarmstat` varchar(64) NOT NULL,
`alarmtime` varchar(64) NOT NULL,
`alarmcause` varchar(64) NOT NULL,
`sendstatus` varchar(64) NOT NULL,
PRIMARY KEY(reportid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `dictionary`;
CREATE TABLE `dictionary` (
`alarmid` int(11) NOT NULL,
`alarmname` varchar(64) NOT NULL,
`alarmcause` varchar(64) NOT NULL,
PRIMARY KEY(alarmid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
———————————————————————–
2.創建觸發器,實時同步zabbix庫的報警信息
———————————————————————–
DROP TRIGGER IF EXISTS Ysten_afterinsert_on_event;
CREATE TRIGGER Ysten_afterinsert_on_event
AFTER INSERT ON zabbix.`events`
FOR EACH ROW
BEGIN
INSERT INTO alarmreport.report (
alarmreport.report.reportip,
alarmreport.report.reporttype,
alarmreport.report.alarmid,
alarmreport.report.alarmname,
alarmreport.report.alarmlevel,
alarmreport.report.alarmstat,
alarmreport.report.alarmtime
)
SELECT
zabbix.`hosts`.`host`,
CONCAT('服務器'),
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;
這樣我們就能在alarmreport這個庫里面實時存儲報警信息了
歡迎各位轉載,請保留出處,支持原創 >.<
原創文章,作者:graysky,如若轉載,請注明出處:http://www.www58058.com/9976
比上次好了非常多,但還有很大提升空間
執行不過去啊。還有 那個new.eventid; 是怎么來的?