Sep
21
虽然我们使用的腾讯云自带了一份监控,但是实在太弱,不好用(上次因为crontab导致postfix的maildrop把inode用光,腾讯云没有任何报警信息),所以我们额外搭建了一套Zabbix用于线上服务的监控,用来发现更细粒度的系统问题,例如io过载、cpu过载、内存不足、磁盘空间不足、服务down了之类的事件。
发现了事件需要及时报警,但是zabbix自带的那个邮件通知太弱(不支持需要用户名和密码的smtp服务器),所以需要自定义通知。zabbix文档在有对自定义通知的说明,但是太粗略了,折腾了好久终于搞明白,这里记录一下备查。
1. 编写通知发送脚本
参照Custom alertscripts,写一个脚本,接受三个命令行参数 "to subject body" (即收件人、标题、正文),把消息发送出去。例如我们的短信通知是这样的(注: message.test.com是我们内部的统一通知服务):
文件名: sms
除此之外我们还配置了通过 email、sentry 报警的脚本。
2. 将通知脚本置于 zabbix_server.conf 配置的 AlertScriptsPath 目录下
注意:必须在这个目录下、zabbix进程有执行权限
3. 在zabbix控制台配置通知脚本
4. 配置用户支持的通知方法
4. 配置触发器
5. 触发事件测试效果
根据情况启动若干个耗cpu的进程,例如:
$ cat /dev/urandom | md5sum
转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php 。
发现了事件需要及时报警,但是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
})
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.
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. (别漏了点这里!)
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了
#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订阅地址: https://www.felix021.com/blog/feed.php 。