添加自定义监控项目
场景:监控某台web的80端口连接数,并出图
方案:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现
1.针对上面解决方案我们分步分析,对于第一步需要在客户端定义脚本文件,/usr/local/sbin/estab.sh,内容如下:
#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
2.修改脚本权限:
chmod 755 /usr/local/sbin/estab.sh
3.客户端编辑配置文件 /etc/zabbix/zabbix_agentd.conf ,找到并修改以下参数:
UnsafeUserParameters=1 #表示使用自定义脚本
#自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,如果没有参数则可以省略,脚本为/usr/local/sbin/estab.sh
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
如图所示:
ps:需要注意iptables规则,以及脚本的执行权限是否755
4.重新客户端zabbix-agent
systemctl restart zabbix-agent
5.服务端进行验证
1)windows浏览器zabbix端创建监控项
下面红色的框内自定义名称即可,然后选择添加
2)创建图形
填写名称,选择监控项,最后选择添加按钮:
点击创建好的图形预览进行查看
3)创建触发器
选择告警,添加规则:比如最新的值大于200时告警,点击添加按钮保存
配置邮件告警
使用163或者QQ邮箱发告警邮件,本篇教程我们使用163邮箱;
1.登录163邮箱,点击设置选择下拉的POP3/SMTP/IMAP选项
2.检查两选项都已勾选
3.第一次开启需要客户端授权码,如图:
4.设置完成之后进来windows浏览器zabbix服务端,选择管理-->> 报警媒介类型
5.创建媒体类型
6.选择脚本,填写三个脚本参数:
- {ALERT.SENDTO} :接收邮箱地址
- {ALERT.SUBJECT} :主题
- {ALERT.MESSAGE} :邮件内容
7.服务端编写脚本mail.py
文件地址:/usr/lib/zabbix/alertscripts/mail.py
脚本内容:
#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from subprocess import *
def sendqqmail(username,password,mailfrom,mailto,subject,content):
gserver = 'smtp.163.com' #定义发件人服务器,网易邮箱smtp.163.com,腾讯邮箱smtp.qq.com
gport = 25
try:
# msg = MIMEText(unicode(content).encode('utf-8')) //如果发送的邮件有乱码,可以尝试把这行改成如下:
msg = MIMEText(content,'plan','utf-8')
msg['from'] = mailfrom
msg['to'] = mailto
msg['Reply-To'] = mailfrom
msg['Subject'] = subject
smtp = smtplib.SMTP(gserver, gport)
smtp.set_debuglevel(0)
smtp.ehlo()
smtp.login(username,password)
smtp.sendmail(mailfrom, mailto, msg.as_string())
smtp.close()
except Exception,err:
print "Send mail failed. Error: %s" % err
def main():
to=sys.argv[1]
subject=sys.argv[2]
content=sys.argv[3]
##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)
sendqqmail('你的邮箱@163.com','客户端授权码','你的邮箱@163.com',to,subject,content)
if __name__ == "__main__":
main()
#####脚本使用说明######
#1. 首先定义好脚本中的邮箱账号和密码
#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"
8.修改脚本权限
chmod 755 /usr/lib/zabbix/alertscripts/mail.py
9.测试一下是否能正常发送
python /usr/lib/zabbix/alertscripts/mail.py 自己的邮箱@163.com "i'm yolks" "bilibilibili"
效果图
10.windows浏览器端使用zabbix创建用户
选择红色标记出的位置,填写完成点击添加按钮完成用户添加
配置用户告警媒介,完成添加
还需要设置用户所属群组的权限,否则还是无法接收邮件
必须点击添加
查看是否显示为读写
11.添加动作
执行原理即: 先监控-->> 然后创建触发器 -->> 配置好收邮件的人信息及权限 -->> 动作(即触发之后的行为)
修改动作里的默认信息,内容如下:
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE} {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
并且修改操作细节
修改恢复操作,默认信息和上面代码一致
12.看到动作列表如下则准备工作完成
测试告警
为了测试告警,我们需要手动制造故障,以模拟实现告警功能;
1.创建自定义触发器:
2.默默喝杯水等几分钟,刷新下zabbix主页
不发邮件的问题处理
检查脚本,权限,查看教程对比检查问题