SNMP协议,zabbix使用及邮件短信等通知报警

(一)、描述常见监控系统及SNMP协议

在运维领域,监控系统即用于监控生产环境所使用的硬件、软件或者是业务的运行情况的报警系统。其能够对生产环境所产生的异常作出报警,使得管理员能够及时获知报警信息,保证业务的正常运行。

  • 采样:
  • 存储:
  • 展示:
  • 报警:

常见的开源监控项目:

  • cacti,nagios;
  • zabbix
  • ganglia

SNMP: 简单网络管理协议; 基于UDP协议来提供服务;目前基本所有网络设备都自带SNMP协议.

  • 模式分类: 读(get, getnext), 写(set), 陷阱(trap)
  • 对应端口: 161/udp(agent), 162/udp
  • 对应的版本: v1: 1989 v2c: 1993 v3: 1998
  • MIB: Managerment Information Base
  • OID: Object ID (对象标识符)

(二)、搭建企业级zabbix,实现自动以邮件和短信报警

(1)、准备环境

CentOS7.4三台主机,其中一台server,另外两台做为被监控主机,分别对应node1和node2

1).所有机器同步服务器时间,配置epel以及yum源,关闭防火墙,三台机器可以互相通信.
[root@server ~]#ntpdate ntp1.aliyun.com
[root@server ~]#yum install epel-release -y
[root@server ~]#systemctl stop firewalld.service
[root@server ~]#getenforce
Disabled
2).各主机配置架构信息
机器名称 IP配置信息 机器性质 备注信息
server 192.168.8.103 zabbix-server 开启监控功能
node1 192.168.8.104 zabbix-agent 启动
node2 192.168.8.105 zabbix-agent 启动

(2)、Zabbix的安装

1).去zabbix官网下载rpm包到本地
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

各个主机对应需要安装的程序包,并依次安装

  • Server: zabbix-server-mysql, zabbix-get
  • Web GUI: zabbix-web, zabbix-web-mysql
  • Agent: zabbix-agent, zabbix-sender
  • Proxy: zabbix-proxy
[root@server ~]#yum install zabbix-server-mysql zabbix-get -y
2).配置数据库

安装数据库mysql

[root@server ~]#yum install mariadb-server -y
[root@server ~]#systemctl start mariadb.service
[root@server ~]#systemctl enable mariadb.service

配置数据库服务端文件

[root@server ~]#vim /etc/my.cnf.d/server.cnf
[mysqld]
skip_name_resolve=on     # 跳过主机名解析
innodb_file_per_table=on    

重启数据库

[root@server ~]#systemctl restart mariadb.service
[root@server ~]#ss -tnl
State      Recv-Q Send-Q                   Local Address:Port                                  Peer Address:Port              
LISTEN     0      50                                   *:3306                                             *:*                  

创建zabbix数据库对应账号

MariaDB [(none)]> CREATE DATABASE zabbix CHARSET 'utf8';
MariaDB [(none)]> GRANT ALL ON zabbix.* TO 'zbxuser'@'192.168.%.%' IDENTIFIED BY 'zbxpass';
MariaDB [(none)]> flush privileges;    #刷新授权

查找zabbix对应的数据库表

[root@server ~]#rpm -ql zabbix-server-mysql
/etc/logrotate.d/zabbix-server
/etc/zabbix/zabbix_server.conf
/usr/lib/systemd/system/zabbix-server.service
/usr/lib/tmpfiles.d/zabbix-server.conf
/usr/lib/zabbix/alertscripts
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-4.0.4
/usr/share/doc/zabbix-server-mysql-4.0.4/AUTHORS
/usr/share/doc/zabbix-server-mysql-4.0.4/COPYING
/usr/share/doc/zabbix-server-mysql-4.0.4/ChangeLog
/usr/share/doc/zabbix-server-mysql-4.0.4/NEWS
/usr/share/doc/zabbix-server-mysql-4.0.4/README
/usr/share/doc/zabbix-server-mysql-4.0.4/create.sql.gz    #对应的zabbix的sql表脚本
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix

解压并且导入到数据库

[root@server ~]#gzip -d /usr/share/doc/zabbix-server-mysql-4.0.4/create.sql.gz
[root@server ~]#mysql -uzbxuser -h192.168.8.104 -pzbxpass zabbix < /usr/share/doc/zabbix-server-mysql-4.0.4/create.sql

登录mysql查看是否导入成功

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| zabbix             |
+--------------------+
MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> SHOW TABLES;
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
| actions                    |
| alerts                     |

(3)、配置server端

修改server端的配置文件

[root@server ~]#cd /etc/zabbix/
[root@server zabbix]#cp zabbix_server.conf{,.bak}
[root@server zabbix]#grep -i "^####" zabbix_server.conf
############ GENERAL PARAMETERS #################
############ ADVANCED PARAMETERS ################
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######

编辑server端配置文件

[root@server zabbix]#vim zabbix_server.conf
ListenPort=10051
SourceIP=192.168.8.103
DBHost=192.168.8.103       #数据库对外的主机
DBName=zabbix               #数据库名称
DBUser=zbxuser              #数据库用户
DBPassword=keer             #数据库密码
DBPort=3306

开启zabbix-server端的服务

[root@server zabbix]#systemctl start zabbix-server.service
[root@server zabbix]#systemctl enable zabbix-server.service
[root@server zabbix]#ss -tnl
State       Recv-Q Send-Q                           Local Address:Port                                          Peer Address:Port              
LISTEN      0      128                                          *:10051 

(4)、配置web Gui

解决依赖关系

[root@server ~]#yum install httpd php php-mysql php-mbstring php-gd php-bcmatch php-ldap php-xml -y

安装web gui

[root@server ~]#yum install zabbix-web zabbix-web-mysql -y

配置php时区参数

[root@server ~]#cd /etc/httpd/conf.d/
[root@server conf.d]#cp zabbix.conf{,.bak}
[root@server conf.d]#vim zabbix.conf
php_value date.timezone Asia/Shanghai

启动web服务

[root@server ~]#systemctl start httpd.service
[root@server ~]#systemctl enable httpd.service
[root@server ~]#ss -tnl
LISTEN     0      128                             :::80                                          :::* 

(5)、浏览器访问并进行配置

使用浏览器登录url: 192.168.8.103/zabbix

zabbix登录

检查依赖关系是否正常


依赖关系

数据库信息登录设置


数据库信息

数据库信息

检查信息

配置完成

登录zabbix主页面
默认用户名为: admin 密码为: zabbix


zabbix登录界面

zabbix主页

(6)、配置agent端

server端设置完毕后,我们需要在被监控的主机安装agent,设置好对应的server信息,然后添加到server端中.

1).在监控主机安装zabbix
[root@node1 ~]#rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
[root@node1 ~]#yum install zabbix-agent zabbix-sender -y
2).修改配置文件
[root@node1 ~]#rpm -ql zabbix-agent
/etc/logrotate.d/zabbix-agent
/etc/zabbix/zabbix_agentd.conf
/etc/zabbix/zabbix_agentd.d
/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
/usr/lib/systemd/system/zabbix-agent.service
/usr/lib/tmpfiles.d/zabbix-agent.conf
/usr/sbin/zabbix_agentd
/usr/share/doc/zabbix-agent-4.0.4
/usr/share/doc/zabbix-agent-4.0.4/AUTHORS
/usr/share/doc/zabbix-agent-4.0.4/COPYING
/usr/share/doc/zabbix-agent-4.0.4/ChangeLog
/usr/share/doc/zabbix-agent-4.0.4/NEWS
/usr/share/doc/zabbix-agent-4.0.4/README
/usr/share/man/man8/zabbix_agentd.8.gz
/var/log/zabbix
/var/run/zabbix

备份配置文件

[root@node1 ~]#cd /etc/zabbix
zabbix_agentd.conf  zabbix_agentd.d
[root@node1 zabbix]#cp zabbix_agentd.conf{,.bak}
zabbix_agentd.conf  zabbix_agentd.conf.bak  zabbix_agentd.d

编辑配置文件项

[root@node1 zabbix]#vim zabbix_agentd.conf
[root@node1 zabbix]#grep -i "^####" zabbix_agentd.conf
############ GENERAL PARAMETERS #################
##### Passive checks related    #被动模式
##### Active checks related    #主动模式
############ ADVANCED PARAMETERS #################
####### USER-DEFINED MONITORED PARAMETERS #######
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######

[root@node1 zabbix]#vim zabbix_agentd.conf
Server=192.168.8.103       #哪个服务器
ListenPort=10050            #自己监听的端口
ListenIP=0.0.0.0            #自己监听的地址,0.0.0.0表示本机所有地址

ServerActive=192.168.8.103   #主动监控时的服务器是哪个
Hostname=192.168.8.104     #自己被server端识别的名称

启动agent端服务并查看端口是否正常启动

[root@node1 zabbix]#systemctl start zabbix-agent.service
[root@node1 zabbix]#systemctl enable zabbix-agent.service
[root@node1 zabbix]#ss -tnl
State      Recv-Q Send-Q               Local Address:Port                              Peer Address:Port              
LISTEN     0      128                              *:10050                                        *:* 

bode2也进行同样的操作,需要注意的是node2配置文件中的Hostname需要做对应的修改

server端和agent端到目前为止配置完成


(7)、监控页面详解

1).修改zabbix监控页面的相关配置项
image.png

image.png
2).创建主机以及主机群组

创建自己的主机组


image.png

image.png

image.png

创建node1主机


image.png

image.png

同样的方法创建node2主机
image.png
3).监控项(items)

创建node1的监控项


image.png

image.png

image.png

在服务器端可以通过命令查看key的取值是否正常,若正常说明上述key值可以正常被取到数据

[root@server ~]#zabbix_get -s 192.168.8.104 -p 10050 -k "net.if.in[ens33]"
8890633

可以看到ZBX选项变绿,说明数据已经取到

image.png

把node1添加到对应的graph中
image.png

利用cron功能,添加其他额外的数据图
image.png

注意:key也要做对应的修改

4).触发器(trigger)

当我们的采集的值定义完了以后,就可以来定义触发器
定义: 界定某特定的item采集到的数据的非合理区间或非合理状态,通常为逻辑表达式

逻辑表达式,阈值,通常用于定义书库的不合理区间; 条件满足时,TRUE, 表示PROBLEM状态, 反之,则OK状态;

  • OK --> PROBLEM
  • Recovery: PROBLEM -->OK

OK(不符合条件):正常状态 --> 较老的zabbix版本,其为FALSE;
PROBLEM(符合条件):非正常状态 --> 较老的zabbix版本,其为TRUE;

  • 一般,我们评定采样数值是否为合理区间的比较稳妥的方法是——根据最后N次的平均值来判定结果;这个最后N次通常有两种定义方式:
    • 最近N分钟所得结果的平均值
    • 最近N次所得结果的平均值

触发器的表达式:

{<server>:<key>.<function>(<parameter>)}<operator><constant>
  • server:主机名称;
  • key:主机上关系的相应监控项的key;
  • function:评估采集到的数据是否在合理范围内时所使用的函数,其评估过程可以根据采取的数据、当前时间及其它因素进行;
    目前,触发器所支持的函数有avg、count、change、date、dayofweek、delta、diff、iregexp、last、max、min、nodata、now、sum等
  • parameter:函数参数;大多数数值函数可以接受秒数为其参数,而如果在数值参数之前使用“#”做为前缀,则表示为最近几次的取值,如sum(300)表示300秒内所有取值之和,而sum(#10)则表示最近10次取值之和;
    此外,avg、count、last、min和max还支持使用第二个参数,用于完 成时间限定;例如,max(1h,7d)将返回一周之前的最大值;
      表达式所支持的运算符及其功能如下图所示:


    运算符

如何定义一个触发器
我们查看node1中的一个item项


image.png

15分钟统计到的数据值
从图中我们可以看到,最大值为7,最小值为3,平均值为5.36,我们实际定义6以上都为非正常的一个状态
下面我们定义一个触发器


image.png

image.png

image.png

生成触发器
image.png

查看触发器在graph中是否生效


image.png

触发器的依赖关系

我们的触发器彼此之间可能会存在依赖关系的,一旦某一个触发器被触发了,那么依赖这个触发器的其余触发器都不需要再报警。

  • 我们可以来试想一下这样的场景:
    我们的多台主机是通过交换机的网络连接线来实现被监控的。如果交换机出了故障,我们的主机自然也无法继续被监控,如果此时,我们的所有主机统统报警……想想也是一件很可怕的事情。要解决这样的问题,就是定义触发器之间的依赖关系,当交换机挂掉,只它自己报警就可以了,其余的主机就不需要在报警了。这样,也更易于我们判断真正故障所在。

注意:目前zabbix不能够直接定义主机间的依赖关系,其依赖关系仅能通过触发器来定义。

image.png

5).动作(Action)

定义: 我们需要基于一个对应的事件为条件来指明该做什么事,一般就是执行远程命令或者发警报。

  • 我们有一个告警升级的机制,所以,当发现问题的时候,我们一般是先执行一个远程操作命令,如果能够解决问题,就会发一个恢复操作的讯息给接收人,如果问题依然存在,则会执行发警报的操作,一般默认的警报接收人是当前系统中有的zabbix用户,所以当有人需要收到警报操作的话,我们则需要把它加入我们的定义之中。

  • 其次,每一个用户也应该有一个接收告警信息的方式,即媒介,就像我们接收短信是需要有手机号的一样。
    我们的每一个监控主机,能够传播告警信息的媒介有很多种,就算我们的每一种大的媒介,能够定义出来的实施媒介也有很多种。而对于一个媒介来说,每一个用户都有一个统一的或者不同的接收告警信息的端点,我们称之为目标地或者目的地。
    综上,为了能够发告警信息,第一,我们要事先定义一个媒介,第二,还要定义这个媒介上用户接收消息的
    端点。


现有的媒介类型:


image.png

Emali媒介里的分类:


image.png

定义一个媒介
image.png

image.png

定义一个动作
node1上安装redis服务,以port端口是否启用来做监控检测

[root@node1 ~]#yum install redis -y
[root@node1 ~]#vim /etc/redis.conf 
bind 0.0.0.0        #不做任何认证操作
[root@node1 ~]#systemctl start redis.service
[root@node1 ~]#ss -tnl
State      Recv-Q Send-Q               Local Address:Port                              Peer Address:Port              
LISTEN     0      128                              *:10050                                        *:*                  
LISTEN     0      128                              *:6379                                         *:* 
image.png

image.png

目前检测状态为up,端口检查正常启用中


image.png

定义触发器
image.png

image.png

image.png

手动关闭redis服务来检测触发器是否能生效

[root@node1 ~]#systemctl stop redis.service
image.png

image.png

image.png

重新启动redis


image.png

image.png

说明触发器可以正常工作

我们去定义action

第一步:如果不成功就远程执行重启命令

image.png

在agent端修改sudo配置权限并需要开启远程服务

[root@node1 ~]#visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
zabbix  ALL=(ALL)       NOPASSWD:ALL
[root@node1 ~]#vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1
LogRemoteCommands=1

第二步:如果上述不成功,则发送消息

image.png

image.png

第三步: 故障恢复后发送消息

image.png

尝试手动停止服务进行测试:

[root@node1 ~]#systemctl stop redis.service
image.png

image.png

6).图形(Graph)
  • 自定义图形中可以集中展示多个时间序列的数据流。支持“线状图(normal)”、“堆叠面积图(stacked)”、“饼图(pie)” 和“分离型饼图(exploded)”四种不同形式的图形。


    image.png

    image.png
7).趋势图形(screen)
image.png

image.png
7).模板
  • 每一个主机的监控项很多,我们一个个的添加实在很麻烦,我们可以把一个redis的监控项添加进一个模板里,这样更方便于我们以后的添加。


    image.png

使用node2监控主机导入现有的模板


image.png

image.png
8).宏(macro)
  • 宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式,而解释器或编译器在遇到宏时会自动进行这一模式替换。
  • zabbix有许多内置的宏,如{HOST.NAME}、{HOST.IP}、{TRIGGER.DESCRIPTION}、{TRIGGER.NAME}、{TRIGGER.EVENTS.ACK}等。
  • 宏一共有三种级别,分别是全局宏、模板宏、主机宏
    • 全局宏也可以作用于所有的模板宏和主机宏,优先级最低。
    • 模板宏则可以作用于所有使用该模板的主机,优先级排在中间。
    • 主机宏则只对单个主机有效,优先级最高。
  • 宏的类型分为系统内建的宏和用户自定义的宏。
    • 内建: {MACRO_NAME}
    • 自定义: {$MACRO_NAME}

定义一个宏


image.png

image.png

image.png

image.png

image.png

(三)、zabbix三种常用的报警方式

1).邮件报警

邮件报警配置有两种方式,一种是web端配置一个可以用的邮箱,一种是通过脚本发送报警邮件

(i).在web端配置一个可以用的外部邮箱,通过这个邮箱来发送报警邮件.

第1步: 添加报警媒介


image.png

image.png

第2步: 用户配置
管理-用户-Admin


image.png

第3步: 创建一个动作
image.png

故障发生邮件内容:

故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机IP地址:{HOST.CONN}
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}


image.png

故障恢复邮件内容:
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
告警主机IP地址:{HOST.CONN}
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
image.png

(ii).通过脚本发送报警邮件

1、使用linux系统的用户账号发送,例如zabbix的账号邮箱地址为zabbix@<主机名>.localdomain,很多外部邮箱会将其视为垃圾邮件。
2、配置一个外部邮箱地址,发送报警邮件。
由于linux系统的用户邮箱有可能会被视为垃圾邮件,所以我们这里使用一个外部邮箱发送报警。
第1步: 安装mailx工具,通过此工具来发送邮件

[root@server ~]#yum install mailx -y

第2步: 修改/etc/mail.rc, 添加一个外部的smtp服务器地址、账号密码等

[root@server ~]#cp /etc/mail.rc /etc/mail.rc.bak
[root@server ~]#vim /etc/mail.rc

添加具体的参数

set from=xxxx@126.com
set smtp=smtp.126.com
set smtp-auth-user=xxxx@126.com
set smtp-auth-password=xxxxxxxx
set smtp-auth=login

第3步: 通过命令发送邮件测试

[root@server ~]#echo "hello,test"|mail -s "title" linuxtest0717@163.com
测试邮箱

第4步: 编写邮件发送脚本
确认zabbix_server.conf配置文件里以下目录是否已开启,如果没有需要添加下面这行。

AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@server ~]#vim /usr/lib/zabbix/alertscripts/mail.sh
#!/bin/bash
messages=`echo $3 | tr '\r\n' '\n'`

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

echo "${messages}" | mail -s "${subject}" $1 >>/tmp/sendmail.log 2>&1

更改脚本属主并赋予可以执行的权限

[root@server ~]#chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts
[root@server ~]#chown zabbix:zabbix /usr/lib/zabbix/alertscripts/mail.sh
[root@server ~]#chmod +x /usr/lib/zabbix/alertscripts/mail.sh
[root@server ~]#ll /usr/lib/zabbix/alertscripts/mail.sh
-rwxr-xr-x 1 zabbix zabbix 42 Feb 25 18:26 /usr/lib/zabbix/alertscripts/mail.sh

测试脚本是否能够正常发送邮件

[root@server ~]#/usr/lib/zabbix/alertscripts/mail.sh linuxtest0717@163.com testtitle hello,test
image.png

第5步: 在zabbix中添加报警媒介

{ALERT.SENDTO} # 用户里定义的收件人地址
{ALERT.SUBJECT} # 邮件标题
{ALERT.MESSAGE} # 邮件内容


image.png

第6步: 用户配置


image.png

第7步: 创建动作
image.png

image.png

第8步: 模拟故障进行测试
[root@node1 ~]#systemctl stop redis.service
image.png

image.png

image.png

2、企业微信报警

第1步: 注册企业微信
浏览器打开(https://work.weixin.qq.com/) , 点击企业注册。
保存记录企业ID

企业ID

第2步: 创建一个报警监控的小程序
image.png

保存记录对应的Agentid和Secret
image.png

第3步: 创建企业微信部门,把需要监控报警的成员加入其中
image.png

第4步: 下载微信发送脚本

[root@server ~]#cd /tmp/
[root@server tmp]#git clone https://github.com/loong576/Wechat-Alert-for-Zabbix.git
[root@server tmp]#cp Wechat-Alert-for-Zabbix/wechat_alert.py /usr/lib/zabbix/alertscripts/
[root@server tmp]#chown zabbix:zabbix /usr/lib/zabbix/alertscripts/wechat_alert.py
[root@server tmp]#chmod +x /usr/lib/zabbix/alertscripts/wechat_alert.py

安装git命令

[root@server ~]#yum install git -y

安装requests模块

[root@server ~]#yum install python-pip -y
[root@server ~]#pip install --upgrade pip
[root@server tmp]#pip install requests

第5步: 修改wechat_alert.py脚本参数

[root@server tmp]#vim /usr/lib/zabbix/alertscripts/wechat_alert.py
if __name__ == '__main__':
    #Touser = sys.argv[1]
    Toparty = sys.argv[1]                         #web前端传过来的部门id
    Content = sys.argv[2]                         #web前端传过来的告警内容
    Corpid = "xxxxxxxxxxxxx"                  #企业ID
    Secret = "xxxxxxxxxxxxxx"
    Agentid = "xxxxxx"

第6步: 创建报警媒介

脚本参数这里只需要添加下面两个参数,收件人和报警内容
{ALERT.SENDTO}
{ALERT.MESSAGE}


image.png

第7步: 创建微信群组,用于接收报警


群组

第8步: 创建接收微信报警的用户,并加入刚建立的微信群组中
image.png

image.png

image.png

第9步: 创建报警动作active


image.png

故障发生邮件内容:
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机IP地址:{HOST.CONN}
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
image.png

故障恢复邮件内容:
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
告警主机IP地址:{HOST.CONN}
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}


image.png

第10步: 报警测试
[root@node1 ~]#systemctl stop redis.service
[root@node1 ~]#systemctl restart redis
QQ图片20190225214613.jpg

3、短信报警

短信报警借助于第三方平台,我们需要指定短信发送服务器,这里我们以中国网建SMS短信通为例,其官网地址如下:
http://sms.webchinese.com.cn/api.shtml](http://sms.webchinese.com.cn/api.shtml

第1步: 创建短信的发送脚本

[root@server ~]#vim /usr/lib/zabbix/alertscripts/sendSMS.sh

#!/bin/bash

# 脚本的日志文件
LOGFILE="/tmp/SMS.log"
:>"$LOGFILE"
exec 1>"$LOGFILE"
exec 2>&1

MOBILE_NUMBER=$1    # 手机号码
MESSAGE_UTF8=$3     # 短信内容
XXD="/usr/bin/xxd"
CURL="/usr/bin/curl"
TIMEOUT=5

# 短信内容要经过URL编码处理
MESSAGE_ENCODE=$(echo "$MESSAGE_UTF8" | ${XXD} -ps | sed 's/\(..\)/%\1/g' | tr -d '\n')

# Uid和Key的值需要自行修改,http://www.smschinese.cn/api.shtml
# Uid 网站用户名
# Key 接口秘钥
Uid="#############"    
Key="#############"   #接口秘钥可以在网站中查询到
# SMS API
URL="http://utf8.sms.webchinese.cn/?Uid=${Uid}&Key=${Key}&smsMob=${MOBILE_NUMBER}&smsText=${MESSAGE_ENCODE}"

# Send it
set -x
${CURL} -s --connect-timeout ${TIMEOUT} "${URL}"

第2步: 设置对应脚本的权限

[root@server ~]#touch /tmp/SMS.log
[root@server ~]#chown zabbix:zabbix /tmp/SMS.log
[root@server ~]#chown zabbix:zabbix /usr/lib/zabbix/alertscripts/sendSMS.sh
[root@server ~]#chmod +x /usr/lib/zabbix/alertscripts/sendSMS.sh

第3步: 查询接口秘钥


image.png

第4步: 测试短信发送是否正常

[root@server ~]#/usr/lib/zabbix/alertscripts/sendSMS.sh 185xxxxxxxx "" "尊敬的客户,您的订单已出库发货,正在配送中,请您耐心等待"

第5步: 创建报警媒介


image.png

第6步: 给用户添加报警媒介


image.png

image.png

第7步: 创建报警动作
image.png

image.png

第8步: 测试短信发送

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • Zabbix简介 Zabbix官方网站Zabbix中文文档 本文系统环境是CentOS7x86_64, Zabbi...
    Zhang21阅读 7,951评论 0 37
  • 1.写在前面 本文主要介绍的是zabbix的编译安装过程,包含它的基础环境LNMP,虽然zabbix官方一般推荐的...
    天之蓝色阅读 2,522评论 0 16
  • Zabbix简要介绍Zabbix的监控配置Zabbix的展示接口templates,模板macros,宏 一、Za...
    哈喽别样阅读 592评论 0 3
  • 运维人员必须熟悉的运维工具汇总: Bootstrapping:Kickstart、Cobbler、rpmbuild...
    91ea2f571442阅读 248评论 0 0
  • 概述 假设我们配置了一些监控项和触发器,现在当触发器状态改变时会获取一些发生的事件,是时候考虑下一步行动了。 我们...
    掀开绿罗裙阅读 5,290评论 0 0