zabbix是一个很好的监控报警工具,之前的文章我们已经介绍了zabbix的安装过程。
zabbix的消息报警也很灵活,通过下面脚本,我们可以实现将zabbix的报警消息推送的云之家(金蝶的一款企业沟通应用),实现下面这种效果的报警消息。
下面的脚本共分3部分:
- [zabbix_script]从zabbix获取数据写入数据库的脚本
- [crontab]从数据库读数据post到api的脚本
- [web]接收post来的数据后转发到云之家的脚本
下图是该工具结构:
附上文件:
附上数据库创建脚本:
/* SQLyog Ultimate v11.24 (32 bit) MySQL - 5.1.73 : Database - alarm_yzj ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; CREATE DATABASE /*!32312 IF NOT EXISTS*/`alarm_yzj` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `alarm_yzj`; /*Table structure for table `alarm` */ DROP TABLE IF EXISTS `alarm`; CREATE TABLE `alarm` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID', `from` tinyint(3) unsigned NOT NULL COMMENT '来源,哪个系统的报警。', `from_server` char(20) DEFAULT '' COMMENT '来源机器名称,可空。', `create_time` int(11) unsigned NOT NULL COMMENT '消息创建时间', `to` tinyint(3) unsigned NOT NULL COMMENT '接收方的ID。', `level` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '警报的级别:1通知,2警告,3严重,4非常严重,5灾难。', `msg` text NOT NULL COMMENT '消息内容,由报警方提出。', `msg_type` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '消息类型(普通消息为1,故障后需要恢复的消息请使用2和3):1消息,2故障,3恢复', `sent` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0未发送,1已发送。', `sent_response` text COMMENT '发消息进程发送消息后的返回值,只用于发送消息后的update操作。', `sent_time` int(11) NOT NULL DEFAULT '0' COMMENT '发送消息的时间。', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;