Loading... <p>zabbix报警信息提取</p> <p> 在日常的监控中,我们除了日常的zabbix操作外,我们有的时候还涉及到与其他公司进行数据对接。由于别的公司的数据对接很多时候并不是按照zabbix的数据结构(尤其是大型厂家,或是专业监控厂家,并不会直接使用zabbix,多数是自己开发或是对其他监控软件进行二次开发之类),在这种需求基础上,我们就需要整理下zabbix的数据库,将需要的数据提取出来,并转化成我们需要的格式。</p> <p>对接格式:</p> <table width="765"> <colgroup> <col style="width:115.50pf" width="154" /> <col style="width:69.75pf" width="93" /> <col width="72" /> <col style="width:83.25pf" width="111" /> <col style="width:66.00pf" width="88" /> <col style="width:185.25pf" width="247" /></colgroup> <tbody> <tr class="firstRow"> <td height="19" width="154">对接数据库设计</td> <td height="19"></td> <td height="19"></td> <td height="19"></td> <td height="19"></td> <td height="19"></td> </tr> <tr> <td height="18"></td> <td height="18"></td> <td height="18"></td> <td height="18"></td> <td height="18"></td> <td height="18"></td> </tr> <tr> <td rowspan="2" height="38" width="154">库名</td> <td colspan="2" height="19" width="186">表</td> <td colspan="3" height="19" width="310">字段</td> </tr> <tr> <td height="19" width="93">表名</td> <td height="19" width="72">表含义</td> <td height="19" width="111">字段</td> <td height="19" width="88">字段名称</td> <td height="19" width="247">含义</td> </tr> <tr> <td rowspan="13" height="247" width="154">alarmreport</td> <td rowspan="10" height="190" width="93">report</td> <td rowspan="10" height="190" width="72">故障表</td> <td height="19" width="111">reportid</td> <td height="19" width="88">告警流水号</td> <td height="19" width="247">主键</td> </tr> <tr> <td height="19" width="111">reportip</td> <td height="19" width="88">网元名称</td> <td height="19" width="247">报警的IP</td> </tr> <tr> <td height="19" width="111">reporttype</td> <td height="19" width="88">网元类别</td> <td height="19" width="247">报警IP的类别(服务器/交换机)</td> </tr> <tr> <td height="19" width="111">alarmid</td> <td height="19" width="88">告警ID</td> <td height="19" width="247">可以从字典里查询</td> </tr> <tr> <td height="19" width="111">alarmname</td> <td height="19" width="88">告警名称</td> <td height="19" width="247">可以从字典里查询</td> </tr> <tr> <td height="19" width="111">alarmlevel</td> <td height="19" width="88">告警级别</td> <td height="19" width="247"></td> </tr> <tr> <td height="19" width="111">alarmstat</td> <td height="19" width="88">告警状态</td> <td height="19" width="247">是否恢复</td> </tr> <tr> <td height="19" width="111">alarmtime</td> <td height="19" width="88">发生时间</td> <td height="19" width="247"></td> </tr> <tr> <td height="19" width="111">alarmcause</td> <td height="19" width="88">故障定位</td> <td height="19" width="247">可以从字典里查询</td> </tr> <tr> <td height="19" width="111">sendstatus</td> <td height="19" width="88">发送状态</td> <td height="19" width="247">报警是否发送</td> </tr> <tr> <td rowspan="3" height="57" width="93">dictionary</td> <td rowspan="3" height="57" width="72">字典表</td> <td height="19" width="111">alarmid</td> <td height="19" width="88">告警ID</td> <td height="19" width="247">主键</td> </tr> <tr> <td height="19" width="111">alarmname</td> <td height="19" width="88">告警名称</td> <td height="19" width="247"></td> </tr> <tr> <td height="19" width="111">alarmcause</td> <td height="19" width="88">故障定位</td> <td height="19" width="247"></td> </tr> </tbody> </table> <p>1.创建对接库:</p> <p>——————————————————————————-</p> <p><span style="font-size: 12px">DROP DATABASE IF EXISTS `alarmreport`;<br />CREATE DATABASE alarmreport;<br />USE alarmreport;<br />DROP TABLE IF EXISTS `report`;<br />CREATE TABLE `report` (<br /> `reportid` int(11) NOT NULL AUTO_INCREMENT,<br /> `reportip` varchar(64) NOT NULL,<br /> `reporttype` varchar(64) NOT NULL,<br /> `alarmid` int(11) NOT NULL,<br /> `alarmname` varchar(64) NOT NULL,<br /> `alarmlevel` varchar(64) NOT NULL,<br /> `alarmstat` varchar(64) NOT NULL,<br /> `alarmtime` varchar(64) NOT NULL,<br /> `alarmcause` varchar(64) NOT NULL,<br /> `sendstatus` varchar(64) NOT NULL,<br /> PRIMARY KEY(reportid)<br />) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br />DROP TABLE IF EXISTS `dictionary`;<br />CREATE TABLE `dictionary` (<br /> `alarmid` int(11) NOT NULL,<br /> `alarmname` varchar(64) NOT NULL,<br /> `alarmcause` varchar(64) NOT NULL,<br /> PRIMARY KEY(alarmid)<br />) ENGINE=InnoDB DEFAULT CHARSET=utf8;</span></p> <p>———————————————————————–</p> <p>2.创建触发器,实时同步zabbix库的报警信息</p> <p>———————————————————————–</p> <p><span style="font-size: 12px">DROP TRIGGER IF EXISTS Ysten_afterinsert_on_event;<br />CREATE TRIGGER Ysten_afterinsert_on_event <br />AFTER INSERT ON zabbix.`events`<br />FOR EACH ROW<br />BEGIN<br /> INSERT INTO alarmreport.report (<br /> alarmreport.report.reportip,<br /> alarmreport.report.reporttype,<br /> alarmreport.report.alarmid,<br /> alarmreport.report.alarmname,<br /> alarmreport.report.alarmlevel,<br /> alarmreport.report.alarmstat,<br /> alarmreport.report.alarmtime<br /> )<br /> SELECT<br /> zabbix.`hosts`.`host`,<br /> CONCAT('服务器'),<br /> zabbix.`triggers`.triggerid,<br /> zabbix.`triggers`.description,<br /> zabbix.`triggers`.priority,<br /> zabbix.`events`.`value`,<br /> FROM_UNIXTIME(zabbix.`events`.clock)<br /> FROM<br /> zabbix.`hosts`,<br /> zabbix.`triggers`,<br /> zabbix.`events`,<br /> zabbix.items,<br /> zabbix.functions,<br /> zabbix.groups,<br /> zabbix.hosts_groups<br /> WHERE<br /> zabbix.`hosts`.hostid = zabbix.hosts_groups.hostid<br /> AND zabbix.hosts_groups.groupid = zabbix.groups.groupid<br /> AND zabbix.`triggers`.triggerid = zabbix.`events`.objectid<br /> AND zabbix.`hosts`.hostid = zabbix.items.hostid<br /> AND zabbix.items.itemid = zabbix.functions.itemid<br /> AND zabbix.functions.triggerid = zabbix.`triggers`.triggerid<br /> AND zabbix.`events`.eventid=new.eventid;<br />END;</span></p> <p></p> <p>这样我们就能在<span style="font-size: 12px">alarmreport</span>这个库里面实时存储报警信息了 </p> <p> 欢迎各位转载,请保留出处,支持原创 >.<</p> <p></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信