实现自定义监控项实例
1.创建主机组 2.创建主机 3.创建监控项 1.到需要监控的主机的agent中添加自定义的监控项目 cd /etc/zabbix/zabbix_agentd.d vi userparameter_mysql.conf UserParameter=监控项目名称,shell命名 UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive systemctl restart zabbix-agent 2.到zabbix server的主机上进行调试 zabbix_get -s 192.168.11.134 -k mysql.ping [root@node3 ~]# zabbix_get -s 192.168.11.134 -k mysql.ping sh: mysqladmin: 未找到命令 0 由此可以看出可以正常执行命令 同时返回的结果是一个字符串 这个命令执行的结果类型在创建触发器的时候十分有用
仪表盘配置步骤:
1.创建自定义监控项
信息类型的选择 需要根据shell命令执行的具体结果来确定 不能随便填写
2.根据自定义监控项创建触发器
表达式就是对获取对应监控项的值进行一些处理 根据处理后的值来判断是否进行告警操作
zabbix内置监控模板
zabbix实现脚本发送告警邮件
zabbix-server 服务器系统配置
[root@Zabbix ~]# yum -y install mail #如有mail命令则不用安装 [root@Zabbix ~]# vim /etc/mail.rc # Display the recipients of messages sent by the user himself in # header summaries. set showto # Automatically check for new messages at each prompt, but avoid polling # of IMAP servers or maildir folders. set newmail=nopoll # If threaded mode is activated, automatically collapse thread. set autocollapse # Hide some header fields which are uninteresting for most human readers. ignore received in-reply-to message-id references ignore mime-version content-transfer-encoding # Only include selected header fields when forwarding messages. fwdretain subject date from to # For Linux and BSD, this should be set. set from=richardcnhm@sina.com #发送的邮件地址 set smtp=smtp.sina.com #外部smtp服务器的地址 set smtp-auth-user=richardcnhm@sina.com #外部smtp服务器认证的用户名 set smtp-auth-password=123456 #外部smtp服务器认证的用户密码(如用163或qq邮箱则为授权码) set smtp-auth=login #邮件认证的方式 [root@Zabbix ~]# echo "邮件正文"|mail -s "邮件主题" 收件人地址 #发送邮件测试命令 [root@node3 ~]# echo "hello world aaaaa" |mail -s "aaaaa" 2228@163.com [root@node3 ~]# echo "hello world aaaaa" |mail -s "aaaaa" 1272@qq.com 发送邮件的标题为test 被服务器垃圾邮件屏蔽
发送邮件脚本的实现
[root@Zabbix ~]# yum -y install dos2unix [root@Zabbix ~]# vim /usr/lib/zabbix/alertscripts/mail.sh #!/bin/bash # use mailx to send mail # 20141127 carl 1st # PATH file=/tmp/zabbix_mail.txt echo "$3" > $file dos2unix -k $file /bin/mail -s "$2" $1 < $file # echo "$3" | mail -s "$2" $1 #注:使用dos2unix工具是为解决zabbix发送邮件出现乱码和收到的邮件是*.bin的情况 #$3 是前端定义的邮件内容,$2是前端定义的主题,$1是前端定义的收件人 [root@Zabbix alertscripts]# chmod 777 mail.sh [root@Zabbix alertscripts]# chown zabbix.zabbix mail.sh mail.sh必须存放在/usr/lib/zabbix/alertscripts/目录下
[root@zabbix alertscripts]# pwd /usr/lib/zabbix/alertscripts [root@zabbix alertscripts]# cat mail_qq.py #!/usr/bin/python #coding:utf-8 import smtplib from email.mime.text import MIMEText import sys mail_user = '111111111@qq.com' mail_pass = 'xxxxxxxxxxx' def send_mail(to_list,subject,content): me = "zabbix 监控告警平台"+"<"+mail_user+">" msg = MIMEText(content, 'plain', 'utf-8') msg['Subject'] = subject msg['From'] = me msg['to'] = to_list try: s = smtplib.SMTP_SSL("smtp.qq.com", 465) s.login(mail_user,mail_pass) s.sendmail(me,to_list,msg.as_string()) s.close() return True except Exception,e: print str(e) return False if __name__ == "__main__": send_mail(sys.argv[1], sys.argv[2], sys.argv[3]) mail_user为邮箱地址,mail_pass为邮箱服务商提供的客户端授权码,获得授权码的方式也可以参考百度,要说明的是目前网易邮箱客户端授权码支持自定义,qq邮箱客户端授权码不支持自定义,需要生成、这里也附上使用163邮箱的脚本 [root@zabbix alertscripts]# cat mail_163.py #!/usr/bin/python #coding:utf-8 import smtplib from email.mime.text import MIMEText import sys mail_user = '1232323232@163.com' mail_pass = 'xxxxxxxxxx' def send_mail(to_list,subject,content): me = "zabbix 监控告警平台"+"<"+mail_user+">" msg = MIMEText(content, 'plain', 'utf-8') msg['Subject'] = subject msg['From'] = me msg['to'] = to_list try: s = smtplib.SMTP("smtp.163.com", 25) s.login(mail_user,mail_pass) s.sendmail(me,to_list,msg.as_string()) s.close() return True except Exception,e: print str(e) return False if __name__ == "__main__": send_mail(sys.argv[1], sys.argv[2], sys.argv[3]) 脚本编写完成之后需要为脚本添加执行权限 [root@zabbix alertscripts]# chmod +x mail_qq.py 3、测试 命令行测试脚本能否成功执行 [root@zabbix alertscripts]# ./mail_qq.py xxx@163.com "测试" 'test' 测试参数为三个,分别为收件人邮箱地址,邮件标题,邮件内容 测试的时候如果出现错误提示缺少smtplib,解决方法为使用pip进行安装:pip install smtplib
zabbix web控制台配置
1.添加报警媒介类型
#!/bin/bash #echo "this is zabbix msg" |mail -s "bbbbbbbbb" 127@qq.com echo $1 > /tmp/user echo $2 > /tmp/zhuti echo $3 > /tmp/neirong file=/tmp/zabbix_mail.txt echo "$3" > $file dos2unix -k $file /bin/mail -s "$2" $1 < $file
向sendmail脚本传递三个宏变量参数
1.{ALERT.SENDTO} 表示接收邮件的账号
2.{ALERT.SUBJECT} 表示发送邮件的标题
3.{ALERT.MESSAGE} 表示发送邮件的内容
2.添加动作
1.添加一个动作的触发条件
2.添加操作的详细步骤
zabbix内置的宏变量:
默认标题: 主机 {HOSTNAME} 在 {EVENT.DATE} {EVENT.TIME} 发生故障 {TRIGGER.NAME} {ITEM.VALUE}
告警主机:{HOSTNAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE}
事件ID:{EVENT.ID}
3.设置用户Admin的邮箱 用来接收报警信息邮件
4.修改触发器表达式触发报警发送邮件
zabbix实现钉钉告警
1.首先创建一个钉钉群 然后再在群里创建一个群机器人 获取一个web hook地址
2.编写发送钉钉发送消息脚本
[root@node3 alertscripts]# pwd
/usr/lib/zabbix/alertscripts
[root@node3 alertscripts]# chown -R zabbix:zabbix dingding.py
[root@node3 alertscripts]# chmod +x dinding.py
#!/usr/bin/python import sys import json import requests api_url="https://oapi.dingtalk.com/robot/send?access_token=d4a29054" headers={"Content-Type":"application/json;charset=utf-8"} def msg(text): json_text = { "msgtype":"text", "text": { "content":text }, "at":{ "atMobiles":[ # "13999999", ], "isAtAll":False } } print(requests.post(api_url,json.dumps(json_text),headers=headers).content) if __name__ == "__main__": text=sys.argv[1] msg(text) #调试 [root@node3 alertscripts]# python dingding.py [root@node3 alertscripts]# ./dingding.py ./dingding.py:行1: import: 未找到命令 ./dingding.py:行2: import: 未找到命令 ./dingding.py:行3: import: 未找到命令 import sys import json import requests #!/usr/bin/python import sys import json import requests
3.添加告警媒介类型
4.添加动作
5.添加用户报警媒介