使用zabbix http方案提高报警速度及dashboard

今天聊一下,关于zabbix二次开发的一些事情。


有两种想法用来提高zabbix的报警告警的速度,试想下,在一个互联网公司那么多的业务,每个业务人员大约都可以收到500多封的邮件,这是最少的了。一些互联网公司邮件用的不是linux方案的postfix,而是微软的exchange,毕竟这个oa集成方便。这东西速度确实堪忧,我们这边smtp连过去,然后发邮件,一般用时在3.5s左右。zabbix对于每次报警都是fork一个进程,这开销有点大了。。。所以我们用zabbix来模拟zabbix http报警接口方案,我们把报警耗时间的动作扔给报警平台处理,我这边就简单的http post数据。

第一个是:

从数据库里面取出来,触发报警的时候,不要选择报警方式,就让他把结果给入库。我们起一个进程,专门从库里面取数据,然后告警。


mysql> 
mysql> desc alerts;
+-------------+---------------------+------+-----+---------+-------+
| Field       | Type                | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+-------+
| alertid     | bigint(20) unsigned | NO   | PRI | NULL    |       |
| actionid    | bigint(20) unsigned | NO   | MUL | NULL    |       |
| eventid     | bigint(20) unsigned | NO   | MUL | NULL    |       |
| userid      | bigint(20) unsigned | YES  | MUL | NULL    |       |
| clock       | int(11)             | NO   | MUL | 0       |       |
| mediatypeid | bigint(20) unsigned | YES  | MUL | NULL    |       |
| sendto      | varchar(100)        | NO   |     |         |       |
| subject     | varchar(255)        | NO   |     |         |       |
| message     | text                | NO   |     | NULL    |       |
| status      | int(11)             | NO   | MUL | 0       |       |
| retries     | int(11)             | NO   |     | 0       |       |
| error       | varchar(128)        | NO   |     |         |       |
| nextcheck   | int(11)             | NO   |     | 0       |       |
| esc_step    | int(11)             | NO   |     | 0       |       |
| alerttype   | int(11)             | NO   |     | 0       |       |
+-------------+---------------------+------+-----+---------+-------+
15 rows in set (0.00 sec)

mysql> 
mysql> desc media;
+-------------+---------------------+------+-----+-----------------+-------+
| Field       | Type                | Null | Key | Default         | Extra |
+-------------+---------------------+------+-----+-----------------+-------+
| mediaid     | bigint(20) unsigned | NO   | PRI | NULL            |       |
| userid      | bigint(20) unsigned | NO   | MUL | NULL            |       |
| mediatypeid | bigint(20) unsigned | NO   | MUL | NULL            |       |
| sendto      | varchar(100)        | NO   |     |                 |       |
| active      | int(11)             | NO   |     | 0               |       |
| severity    | int(11)             | NO   |     | 63              |       |
| period      | varchar(100)        | NO   |     | 1-7,00:00-24:00 |       |
+-------------+---------------------+------+-----+-----------------+-------+
7 rows in set (0.00 sec)

mysql> 


还有一种比较干脆,写一个脚本,他主要是把系统给的三个参数,传给python写的http api上,然后让报警中心来进行告警。 这样就可以为zabbix提供get post http报警接口了。



大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

发表评论

邮箱地址不会被公开。 必填项已用*标注