12月26日任务
19.12 添加自定义监控项目
19.13/19.14 配置邮件告警
19.15 测试告警
19.16 不发邮件的问题处理
添加自定义监控项目
zabbix可以自定义监控项目,满足个性化的需求。例如网站注册量、访问量等具体监控项目就需要编写相关的脚本来监控数据,以满足具体应用的需求。
实例:监控某台web的80端口连接数,并出图(步骤如下)
- zabbix监控中心创建监控项目
- 针对该监控项目以图形展现
客户端脚本编写
- 客户端上定义脚本
[root@client ~]# vim /usr/local/sbin/estab.sh#!/bin/bash##获取80端口转发连接数netstat -ant | grep ':80' | grep -c ESTABLISHED[root@client ~]# chmod 755 /usr/local/sbin/estab.sh
- 客户端上编辑配置文件
[root@client ~]# vim /etc/zabbix/zabbix_agentd.conf//增加UnsafeUserParameters=1 //表示使用自定义脚本UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh //自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,如果没有参数则可以省略,脚本为/usr/local/sbin/estab.sh//重启zabbix-agent服务[root@client ~]# systemctl restart zabbix-agent
- 到服务器端验证
//有值显示表示配置有效[root@server ~]# zabbix_get -s 192.168.65.134 -p 10050 -k 'my.estab.count'0
这里测试时最好保持防火墙、selinux的通畅
服务器端web配置
- 创建监控项
在web网页配置监控项配置-->主机-->client1--> 创建监控项
填写监控项名称及键值
监控项图形效果预览
- 创建触发器(报警)
选择触发条件
需要点击添加,使表达式生效
配置邮件告警
开启邮箱相关服务
登录你的163邮箱,点击设置-->POP3/SMTP/IMAP
,选中POP3/SMTP
和IMAP/SMTP
这2个服务。(开启IMAP/SMTP服务需要设置客户端授权码,该密码用于后续发邮件)
服务器web配置
创建报警媒介
服务器上编写发邮件脚本
# 脚本存放目录在zabbix_server.conf内定义了[root@server ~]# grep alert /etc/zabbix/zabbix_server.conf | grep -v "#"AlertScriptsPath=/usr/lib/zabbix/alertscripts[root@server ~]# cd /usr/lib/zabbix/alertscripts/# 编写脚本并赋予权限[root@server alertscripts]# vim mail.py#!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfrom email.MIMEText import MIMETextfrom email.MIMEMultipart import MIMEMultipartfrom subprocess import *def sendqqmail(username,password,mailfrom,mailto,subject,content): gserver = 'smtp.163.com' gport = 25 try: msg = MIMEText(unicode(content).encode('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" % errdef main(): to=sys.argv[1] subject=sys.argv[2] content=sys.argv[3] sendqqmail('18367826960@163.com','你的授权码','18367826960@163.com',to,subject,content)if __name__ == "__main__": main()[root@server alertscripts]# chmod 777 /usr/lib/zabbix/alertscripts/mail.py
- 脚本测试
[root@server alertscripts]# python mail.py 18367826960@163.com "test" "this is a test"
创建接收邮件的用户
- 配置用户
- 配置报警媒介
- 配置权限
这里需要到用户组内进行设置
创建告警动作
- 创建动作
维护状态 非在 维护 :在维护状态时不报警
- 修改操作: 修改默认信息为
HOST:{HOST.NAME} {HOST.IP}TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME}messages:{ITEM.NAME}:{ITEM.VALUE}ID:{EVENT.ID}
配置操作的细节
- 配置恢复操作(维护后)
最终告警配置
测试告警
这里在主机内新建一个触发器"负载"用于测试,并调整其监控项刷新时间为10s。
设置表达式{client1:system.cpu.load[percpu,avg1].last()}<1
点击监测中 --> 仪表盘
,问题出现,邮箱成功接收到告警邮件
问题处理
在测试中,由于我报警媒介类型设置中脚本名称写错导致邮件无法发送(报找不到文件错误),修改后正常接收邮件。
常用的排查错误的步骤:
-
告警媒介类型
脚本名称、参数及其顺序
-
邮件脚本
脚本存储路径、脚本是否可用、脚本权限
-
用户
用户群组设置、报警媒介选择、权限是否读写
-
动作
触发条件、操作、恢复操作是否配置正确
配置主动、被动模式
在主机(模板)的监控项内配置
默认是zabbix客户端
即被动模式;主动模式需要选择zabbix客户端(主动式)
。