Sep 21

Zabbix自定义通知 不指定

felix021 @ 2016-9-21 04:20 [IT » 软件] 评论(0) , 引用(0) , 阅读(2003) | Via 本站原创 | |
  虽然我们使用的腾讯云自带了一份监控,但是实在太弱,不好用(上次因为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

转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: http://www.felix021.com/blog/feed.php
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   *非必须
网址   电邮   [注册]