标题:Zabbix自定义通知 出处:Felix021 时间:Wed, 21 Sep 2016 04:20:57 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?2168 内容:   虽然我们使用的腾讯云自带了一份监控,但是实在太弱,不好用(上次因为crontab导致postfix的maildrop把inode用光,腾讯云没有任何报警信息),所以我们额外搭建了一套Zabbix用于线上服务的监控,用来发现更细粒度的系统问题,例如io过载、cpu过载、内存不足、磁盘空间不足、服务down了之类的事件。   发现了事件需要及时报警,但是zabbix自带的那个邮件通知太弱(不支持需要用户名和密码的smtp服务器),所以需要自定义通知。zabbix文档在有对自定义通知的说明,但是太粗略了,折腾了好久终于搞明白,这里记录一下备查。 1. 编写通知发送脚本 参照Custom alertscripts,写一个脚本,接受三个命令行参数 "to subject body" (即收件人、标题、正文),把消息发送出去。例如我们的短信通知是这样的(注: message.test.com是我们内部的统一通知服务): 文件名: sms 引用 #!/usr/bin/python import sys import requests to = sys.argv[1] subject = sys.argv[2] body = sys.argv[3] message = '%s: %s' % (subject, body) print requests.post('http://message.test.com/sms/send', { 'request_source' : 'monitor', 'mobile' : to, 'message' : message }) 除此之外我们还配置了通过 email、sentry 报警的脚本。 2. 将通知脚本置于 zabbix_server.conf 配置的 AlertScriptsPath 目录下 注意:必须在这个目录下、zabbix进程有执行权限 3. 在zabbix控制台配置通知脚本 引用 Administration -> Media Types -> (右上角) Create Media Type Name: sms Type: Script Script name: sms (这里写脚本的名字就行,不用全路径) Enabled: 打勾 Save. 4. 配置用户支持的通知方法 引用 Administration -> Users -> 点击需要配置的用户(例如Admin) -> Media -> Add Type: sms Send to: 13800138000 (这就是脚本接受到第一个参数) When Active: 1-7, 00:00-24:00 (7*24,运维的悲剧) Use if severity: 根据情况勾选 Status: Enabled Add. Save. (别漏了点这里!) 4. 配置触发器 引用 Configuration -> Actions -> (右上角) create action #Action Name: send to sms #Operations (以下是参考选择) a) 点击New b) 添加收件人:Send to Users 右边的 Add 选择 Admin c) 选择通知方式:Send only to 选择 sms d) 点击Add e) 点击Save Add和Save都得点,否则就又2了 5. 触发事件测试效果 根据情况启动若干个耗cpu的进程,例如: $ cat /dev/urandom | md5sum Generated by Bo-blog 2.1.0