zabbix实现自定义监控

实现自定义监控项实例

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=[email protected]                     #发送的邮件地址
set smtp=smtp.sina.com                                   #外部smtp服务器的地址
set smtp-auth-user=[email protected]    #外部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 被服务器垃圾邮件屏蔽
View Code

  发送邮件脚本的实现

[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/目录下
shell版本
[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 = '[email protected]'

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 = '[email protected]'

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 [email protected] "测试" 'test'

测试参数为三个,分别为收件人邮箱地址,邮件标题,邮件内容

测试的时候如果出现错误提示缺少smtplib,解决方法为使用pip进行安装:pip install smtplib
python脚本

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

 向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.修改触发器表达式触发报警发送邮件

    

 

猜你喜欢

转载自www.cnblogs.com/yxh168/p/9929452.html