zabbix告警查询页

在<a href="https://www.361way.com/zabbix-event/5403.html" target="_blank" rel="noopener">zabbix告警事件归档与提取</a>篇中对zabbix的事件表设置了触发器转存机制,存到了另外一个库的表中。这里针对该表的内容写了几个统计页面,暂未成系统性的东西,后面有时间可以理成一个简单的查询系统,或者可以直接集成在zabbix前端页面上,做一个查询按钮 。

一、磁盘查询

查询页面效果如下:



<a href="https://www.361way.com/wp-content/uploads/2017/03/zabbix-disk-query.png" target="_blank" rel="noopener"><img src="https://www.361way.com/wp-content/uploads/2017/03/zabbix-disk-query.png" title="zabbix-disk-query" alt="zabbix-disk-query" width="979" height="151" /></a>



页面比较较单,未使用前端框架,自写了一点前端内容。代码如下:



<br />




zabbix未处理理事件



zabbix磁盘未清理主机

\n"; } ?>
主机名告警内容告警级别是否恢复告警时间
".$row["reportip"]."".$row["alarmname"]."".$row["alarmlevel"]."".$row["alarmstat"]."".$row["alarmtime"]."


注:告警级别5代表严重,2为警告;是否恢复,值为1,代表未恢复!
<br />

二、CPU告警次数统计

<a href="https://www.361way.com/wp-content/uploads/2017/03/cpu-count.png" target="_blank" rel="noopener"><img src="https://www.361way.com/wp-content/uploads/2017/03/cpu-count.png" title="zabbix-cpu-count" alt="zabbix-cpu-count" width="737" height="295" /><br />

<br />



由于cpu指标比较多,这里为了尽快实现功能,写了四个单页面。对应的都是修改下sql 语句就行了,这里使用了前端框架layui 做一了个简单的导航栏。



<strong>主页面:</strong>



<br />



        
                
                Layui
                
                
                
                
                
        
        
        
        

cpu指标监控项,具体指标可以通过tab导航标签切换。

<strong>其中一个页面内容如下:</strong>



<br />




zabbix未处理理事件



        
最近一周load average告警次数统计
DATE_SUB(CURDATE(), INTERVAL 1 WEEK) and value=0 and description like '%CPU核心数%' group by host order by count desc"; result=mysql_query(q);//执行查询 while(row=mysql_fetch_assoc(result))//将result结果集中查询结果取出一条 { echo"\n"; } mysql_close($conn); ?>
主机名次数统计
".$row["reportip"]."".$row["count"]."


conn连接功能单独分出来了,通过requice_once引入。

三、写在最后

这个功能页写的时候本来想通过python + flask + Jinja2 实现,不过感觉写web功能,php 还是有天然的优势,凭借着几年前自学的一点php知识很容易实现了几个页面。不过这里也有一些可以优化的地方:



1、mysql 连接这里使用的是mysql_connect 这种老的方式,后面可以通过 new mysqli 来实现;



2、这里每个页面都是通过单页面实现的,统计查询使用的sql 是基本模式相同的,只不过里面的某些字段发生了变化,可以通过写一个固定的函数,往里面传入固定的参数,实现不同的返回 。



3、这里先写了两个功能,一个是当前告警类的,一个是事件统计类的。后面可以做下页面布局,左边栏加一个锤直导航,通过选择不同的item进入不同的选项查看,当然再后面也可以再加上时间选择组件之类的。这都是后话了。



<br />



<strong>后记:</strong>



后续使用了几天,发现上面使用的SQL语名不准确,新更换的SQL语名如下:



<br />
$q="select host,triggerid,description,value,time from newevent
where description like '%磁盘%' and value=1
and eventid in (select max(eventid) from newevent  group by triggerid )";
<br />