zabbix报警的方式一般可以有短信、邮件、微信等方式.

一、zabbix邮件报警

配置邮件报警的步大致的步骤是:

  • 配置外部邮箱、然后准备一个可以发邮件的脚本,可以是bash、python、php等
  • 创建一个报警媒介类型   ( 相当于建立一个发送 报警的通道 )
  • 针对用户选择创建好的报警媒介
  • 配置动作 ( 触发器、操作条件)

1、配置外部邮箱、准备发邮件的脚本

首先你要有一个外部邮箱用来报警邮件,我这里是163的,然后一定要开启授权,这样才能连到163的邮件服务器。登陆mail.163.com, 设置 ---》 常规设置 ---》 客户端授权码

zabbix 配置告警 zabbix配置短信报警_发送短信

在zabbix-server服务器上配置邮件客户端,这样就能连到163的邮件服务器

# yum install mailx dos2unix -y

vim /etc/mail.rc                                            # 在最近后面添加如下

set from=xxxxxxxxx@163.com        # 发件人邮箱
set smtp=smtp.163.com             # 发件人smtp服务器
set smtp-auth-user=xxxxxx         # 发件人(用户)
set smtp-auth-password=xxxxx      # 密码
set smtp-auth=login               # 认证登陆
set ssl-verify=ignore             # 忽略ssl验证

准备发邮件的脚本,要放到zabbix_server.conf中的AlertScriptsPath路径下面并且有执行的权限, 我这里是/usr/lib/zabbix/alertscripts,也可以根据你的需求自己定义

# cd /usr/lib/zabbix/alertscripts

编写报警邮件脚本(vim zabbix-sendmail.sh)如下:

#!/bin/bash

MAIL_FILE="/tmp/.zabbix_mail_file"         #  此文件需要对启动zabbix-server的用户有写入的权限,否则邮件的内容是空的,先创建
sendto=$1
subject=$2

echo "$3" > $MAIL_FILE
dos2unix -k $MAIL_FILE

mail -s "$subject" "$sendto" < $MAIL_FILE

添加执行权限,否则发不了邮件

# chown zabbix.zabbix zabbix_sendmail.sh 
# chmod u+x zabbix_sendmail.sh

测试邮件脚本是否可用发送邮件,如果可以才能进行下一步配置

./zabbix_sendmail.sh 你的邮箱 主题 我的内容

2、创建报警媒介类型

管理 ===》 报警媒介类型  ===》 创建媒体类型

zabbix 配置告警 zabbix配置短信报警_发送短信_02

3、用户选择创建好的媒体介质类型

管理 ==》 用户  ==》 报警媒介,在手机人中指定邮箱,多个以逗号隔开。这里有个建议是可以填qq邮箱,这样间接的可以在微信里看到报警的邮件

zabbix 配置告警 zabbix配置短信报警_发邮件_03

4、配置动作

配置  == 》 动作  ==》 创建动作

zabbix 配置告警 zabbix配置短信报警_vim_04

zabbix 配置告警 zabbix配置短信报警_发送短信_05

zabbix 配置告警 zabbix配置短信报警_zabbix 配置告警_06

配置完成后,模拟一个agent断开告警,然后在报表---动作日志里面查看有没有相关的动作

zabbix 配置告警 zabbix配置短信报警_发邮件_07

再看下能不能收到邮件

zabbix 配置告警 zabbix配置短信报警_zabbix 配置告警_08

二、zabbix短信报警

短信报警和邮件报警差不多

  • 首先要有短信网关,准备一个可以发送短信的脚本,什么语言的都可以
  • 创建一个报警媒介类型   ( 相当于建立一个发送 报警的通道 )
  • 针对用户选择创建好的报警媒介
  • 配置动作 ( 触发器、操作条件)

我这里用发送短信的脚本如下,其它的和邮件报警一样

zabbix 配置告警 zabbix配置短信报警_vim_09

zabbix 配置告警 zabbix配置短信报警_zabbix 配置告警_10

#!/usr/bin/env python3
# coding:utf-8

"""
调用短信网关接口发短信
"""

import sys

try:
    import requests
except ImportError:
    sys.exit("Error: requests library must be installed: pip install requests.")


def send_msg(mobile, message):
    """
    发送短信功能
    parmas: mobile  对方手机号
    parmas: message 短信内容
    return: json
    """
    message = message.encode('gb2312')
    payload = {
        'UserID': 'xxxxxx',
        'Account': 'xxxxxx',
        'Password': 'xxxxxx',
        'Content': message,
        'Phones': mobile
    }

    try:
        r = requests.get(
            'http://www.lanz.net.cn/LANZGateway/DirectSendSMSs.asp', params=payload
        )
       print('发送成功')
    except Exception as err:
        print('发送失败')

if __name__ == '__main__':
    
    filename = sys.argv[0] 
    argvs = sys.argv[1:]
    mobile = argvs[0]
    message = '【zabbix告警】\n' +  argvs[2]
    send_msg(mobile=mobile, message=message)

View Code

模拟测试,看有没有收到短信

zabbix 配置告警 zabbix配置短信报警_zabbix 配置告警_11

小结: 生产环境最好可用企业邮箱比较好,免费的邮箱很容易发不出邮件。