zabbix 设置163报警邮箱


1.测试端口是否开放:

nc -w 2 smtp.exmail.qq.com 465 < /dev/null && echo “port is ok”

nc -w 2 smtp.exmail.qq.com 25 < /dev/null && echo “port is ok”

首先拿到163邮箱的授权码,邮箱设置–选择“POP/SMTP/IMAP”选项,选择“IMAP/SMTP服务”,点击开启,扫码页面可以选择扫码发送短信,或者点击下方“手动发送短信”,点击“我已发送”后,如果系统检测到用户成功发送短信,即获取到授权码。授权码可以在多个第三方客户端使用。

2.配置163邮箱

zabbix路径:/usr/lib/zabbix/,执行:

certutil -A -n “GeoTrust SSL CA - G3” -t “Pu,Pu,Pu” -d /usr/lib/zabbix/.certs./ -i /usr/lib/zabbix/.certs./163.crt

certutil: unable to open “/usr/lib/zabbix/.certs./163.crt” for reading (-5950, 2).

没有到.certs 目录下执行或者certs不可读

cd .certs/

certutil -A -n “GeoTrust SSL CA - G3” -t “Pu,Pu,Pu” -d ./ -i 163.crt

Notice: Trust flag u is set automatically if the private key is present.

依然报错;

echo “hehe” | mail -v -s “test” abc1@qq.com

Resolving host smtp.163.com . . .Could not resolve host: smtp.163.com

Vim /etc/mail.rc

set from=邮箱地址

set smtp=smtps://smtp.163.com:465

set smtp-auth-user=账号名不要加@

set smtp-auth-password=授权码

set smtp-auth=login

set ssl-verify=ignore

=后面不要“”

测试发邮件:

echo “邮件正文” | mail -s “ZABBIX-TEST” cxxx@163.com

Resolving host smtp.163.com . . . done.

Connecting to 103.74.29.40:465 . . . connected.

Error initializing NSS: Unknown error -8015.

Error initializing NSS: Unknown error -8015.

“/root/dead.letter” 11/320

. . . message not sent.

很莫名奇妙,最终在root下面生产.certs,首先在/root下生成相应文件,在copy到zabbix路径下面;

cd /root

mkdir .certs

echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’ > /root/.certs/163.crt

depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA

verify return:1

depth=1 C = US, O = DigiCert Inc, CN = GeoTrust RSA CN CA G2

verify return:1

depth=0 C = CN, ST = zhejiang, L = hangzhou, O = “NetEase (Hangzhou) Network Co., Ltd”, CN = *.163.com

verify return:1

DONE

certutil -A -n “GeoTrust SSL CA” -t “C,,” -d /root/.certs -i /root/.certs/163.crt

certutil -A -n “GeoTrust Global CA” -t “C,,” -d /root/.certs -i /root/.certs/163.crt

Cd .certs

certutil -A -n “GeoTrust SSL CA - G3” -t “Pu,Pu,Pu” -d /root/.certs/./ -i /root/.certs/163.crt

Notice: Trust flag u is set automatically if the private key is present.

ls /root/.certs/

163.crt cert8.db key3.db secmod.db

certutil -L -d /root/.certs

Certificate Nickname Trust Attributes

​ SSL,S/MIME,JAR/XPI

GeoTrust SSL CA P,P,P

cp -a /root/.certs/ /etc/zabbix/ && cd /etc/zabbix && chmod 777 -R .certs

tail -10f /etc/mail.rc

set from=email@163.com

set smtp=smtps://smtp.163.com:465

set smtp-auth-user=用户名不带@

set smtp-auth-password=授权码

set smtp-auth=login

set ssl-verify=ignore

set nss-config-dir=/etc/zabbix/.certs

echo “邮件正文” | mail -s “ZABBIX-TEST” cxxx@163.com

成功了;

Zabbix安装,参照官网https://www.zabbix.com/cn/download

或者网上一大堆源码安装教程;

3.邮件报警配置:

Zabbix5.0安装调试完毕,邮件系统发送,给多用户发送遇到了问题,期初创建了多个用户,用163邮件通知,也有sendmail脚本通知,钉钉通知脚本都用过,

设置了3种通知方式:163邮件通知,钉钉报警给机器人,sendmail脚本发送报警;

1)163邮件通知:

消息模版:

问题:

主题:

TRIGGER.STATUS,服务器:HOSTNAME1,发生:TRIGGER.NAME

消息:

告警主机:HOST.NAME

告警IP:HOST.IP

告警时间:EVENT.DATE-EVENT.TIME

告警等级:TRIGGER.SEVERITY

告警信息:TRIGGER.NAME:ITEM.VALUE

问题详情:ITEM.NAME:ITEM.VALUE

当前状态:TRIGGER.STATUS:ITEM.VALUE

事件ID:EVENT.ID

——-FROM ZABBIX 平台——-163邮局—-

问题恢复:

主题:

恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME} 已恢复!

消息:

告警主机: {HOSTNAME1}

主机地址: {HOST.IP}

告警等级: {TRIGGER.SEVERITY}

监控项目: {TRIGGER.KEY1}

问题详情: {ITEM.NAME}:{ITEM.VALUE}

当前状态: {TRIGGER.STATUS}: {ITEM.VALUE1}

告警信息: {TRIGGER.NAME}

告警时间: {EVENT.DATE} {EVENT.TIME}

事件ID: {EVENT.ID}

——来自zabbix监控平台–163邮局—–

问题更新:

Updated problem in {EVENT.AGE}: {EVENT.NAME}

消息:

{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.

{EVENT.UPDATE.MESSAGE}

Current problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}.

——来自zabbix监控平台–163邮局—–

2)Sendmail.sh

脚本:

\#!/bin/bash

\#export.UTF-8

FILE=/var/log/zabbix/mailtmp.txt

echo "$3" >$FILE

dos2unix -k $FILE

/bin/mail -s "$2" $1 < $FILE

\#!/bin/bash

\#messages=`echo $3 | tr '\r\n' '\n'`

\#subject=`echo $2 | tr '\r\n' '\n'`

\#echo "${messages}" | mail -v -s "${subject}" $1 >>/var/log/zabbix/mailx.log 2>&1

消息模版基本一致;

3)钉钉告警:

钉钉脚本:

\#!/usr/bin/env python

\#coding:utf-8

\#zabbix钉钉报警

import requests,json,sys,os,datetime

webhook="https://oapi.dingtalk.com/robot/send?access_token=21211212111abcababcb..."    #说明:这里改为自己创建的机器人的webhook的值,钉钉个人现在不好申请了;

user=sys.argv[1]

text=sys.argv[3]

data={

  "msgtype": "text",

  "text": {"content": text

  },

  "at": {"atMobiles": [

​      user

​    ],"isAtAll": True

  }

}

headers = {'Content-Type': 'application/json'}

x=requests.post(url=webhook,data=json.dumps(data),headers=headers)

if os.path.exists("/usr/local/zabbix/log/ding.log"):

  f=open("/usr/local/zabbix/log/ding.log","a+")

else:

  f=open("/usr/local/zabbix/log/ding.log","w+")

f.write("\n"+"--"*30)

if x.json()["errcode"] == 0:

  f.write("\n"+str(datetime.datetime.now())+"   "+str(user)+"   "+"发送成功"+"\n"+str(text))

  f.close()

else:

  f.write("\n"+str(datetime.datetime.now()) + "   " + str(user) + "   " + "发送失败" + "\n" + str(text))

  f.close()

Zabbix_server.conf

设置脚本路径:AlertScriptsPath=/usr/lib/zabbix/alertscripts

ExternalScripts=/usr/lib/zabbix/externalscripts

所监控的服务器设置监控脚本:/etc/zabbix/zabbix_agentd.conf

# UserParameter=

UserParameter=dis.process,/usr/lib/zabbix/alertscripts/discovery_process.sh

UserParameter=proc.check[*],/usr/lib/zabbix/alertscripts/process_check.sh $1 $2 $3

遇到问题:邮件只能发送给admin,建立的其他用户一直没收到邮件,后来添加到admin用户以后可以收到,其他用户没收到邮件挺奇怪的事情,现在没头绪。


文章作者: 云上的小雨滴
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 云上的小雨滴 !
评论
  目录