每个被监控节点安装zabbix客户端

1)下载并安装zabbix源:

[root@nginx-master ~]# rpm -ivh https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

2)安装zabbix-agent代理软件:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
[root@nginx-master ~]# yum install zabbix-agent -y 

3)更改配置文件:

[root@nginx-slave ~]# vim /etc/zabbix/zabbix_agentd.conf
------------------------- 配置信息--------------------------------
97   Server=192.168.115.0/24            #zabbix_server的IP
138  ServerActive=192.168.115.0/24   #zabbix_server的IP
149  Hostname=nginx-master        #重要:主机名

4)启动zabbix客户端

[root@nginx-master ~]# systemctl start zabbix-agent                       
[root@nginx-master ~]# systemctl enable zabbix-agent 

注:这里只演示一个节点,其余的节点同理!

触发器实现邮件报警和微信报警

触发器的介绍

报警流程:定义条件---满足条件----马上触发---实现报警

实现邮件报警

1)过滤zabbix主配置文件

[root@zabbix-master ~]# grep '^[^#].*' /etc/zabbix/zabbix_server.conf

2)找到并进入AlertScriptsPath所对应的目录

[root@zabbix-master ~]# vim /etc/zabbix/zabbix_server.conf

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第1张

3)在此目录下创建一个Python脚本

[root@zabbix-master ~]# cd /usr/lib/zabbix/alertscripts
[root@zabbix-master alertscripts]# vim mail.py 

脚本信息如下:

#!/usr/bin/python
#coding:utf-8

from email.mime.text import MIMEText
from email.header import Header
import smtplib
import sys

# 个人邮件信息,在邮箱设置里必须开启SMTP
smtpaddr = 'smtp.163.com'
myemail = 'xxxxx@163.com'
# 注意:此密码是授权码如果是163的话
password = 'xxxx'

# 第一是接收的邮件是什么,第二是邮件的主题,第三是正文(内容)
recvmail = sys.argv[1]
subject = sys.argv[2]
content = sys.argv[3]

msg = MIMEText("""%s"""%(content),"plain","utf-8")
msg['Subject'] = Header(subject,'utf-8').encode()
msg['From'] = myemail
msg['to'] = recvmail
try:
   server = smtplib.SMTP()
   server.connect(smtpaddr,"25")
   server.login(myemail,password)
   server.sendmail(myemail,recvmail.split(','),msg.as_string())
   server.quit
   print("success")
except Exception as e:
        print("fail:"+str(e))

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第2张

[root@zabbix-master alertscripts]# chmod +x mail.py

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第3张

4)配置好脚本后,用命令发送邮件测试

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第4张
3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第5张
邮箱发送完成!

5)创建报警媒介

默认的报警媒介类型有3种,我们可以创建一个名为“邮箱”的媒介类型,以脚本的方式进行创建,脚本名称为mail.py。

脚本参数添加两项一个是{ALERT.SENDTO}发送给谁的,{ALERT.SUBJECT},还有一个是{ALERT.MESSAGE}发送的内容。

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第6张

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第7张

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第8张

给用户添加报警媒介时指定严重性级别

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第9张

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第10张

创建邮件报警就已经完成初步阶段,触发报警请往下看web主页监测

实现微信报警

注:请自行创建企业微信,这里已经创建好了。

1)找到并进入AlertScriptsPath所对应的目录

 [root@zabbix-master ~]# cd /usr/lib/zabbix/alertscripts  

2)在此目录下创建一个Python脚本

[root@zabbix-master alertscripts]# vim weixin.py
------------------------------脚本信息----------------------------
#!/usr/bin/env python
# encoding: utf-8
import json
import sys
import urllib,urllib2

#需要三个变量corpid、corpsecret、agentid
agentid = '企业微信的AgentId'
corpid = '企业ID'
corpsecret = '企业微信的Secret'

#获取tocken,存在my_tocken里面
gettoken_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
token_file = urllib2.urlopen(gettoken_url)
token_data = token_file.read().decode('utf-8')
token_json = json.loads(token_data)
my_token = token_json['access_token']

#利用获取到的tocken发送微信信息
touser=sys.argv[1]
content=sys.argv[2]
post_content={
        "touser":touser,
        "agentid":agentid,
        "msgtype": "text",
        "text": {
                "content":content,
        }
 }

json_content = json.dumps(post_content)

url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' +my_token
response = urllib2.urlopen(url,json_content)
print(response.read().decode('utf-8'))

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第11张

3)测试发送微信信息

[root@zabbix-master ~]# cd /usr/lib/zabbix/alertscripts
[root@zabbix-master alertscripts]# ./weixin.py 企业微信号 'test'  

4)添加报警媒介类型

创建一个名为“微信报警”的媒介类型,以脚本的方式进行创建,脚本名称为 weixin.py。

脚本参数添加两项一个是{ALERT.SENDTO}发送给谁的,还有一个是{ALERT.MESSAGE}发送的内容。

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第12张

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第13张

注:将两个常用报警方式添加好之后,接下来就可以创建触发器和动作来实现报警。

创建主机及web主页监控

这是我们前面配置好的nginx高可用反向代理的web主页,直接监测VIP。

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第14张

先创建一台被监控主机

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第15张

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第16张

添加一个web场景

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第17张
3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第18张
3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第19张

创建触发器

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第20张
3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第21张

创建动作
注:当条件满足触发器时——实现的动作

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第22张
3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第23张
3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第24张

注:我们这里选择的是微信报警方式,邮件报警则选择“仅送到:邮件报警”

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第25张

测试报警

然后我们查看一下监控的数据(检测中->web检测),当我们看到响应代码为200时表示检测成功了。

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第26张

接下来模拟主页访问不了,是否触发报警。

[root@web1 html]# rm -rf index.html 

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第27张

当HTTP状态码不是200时,则触发报警,请自行了解HTTP状态码。

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第28张

此时告警信息已经发送到我们的企业微信里了,恢复之后也会发送一条恢复信息,请自行实验。

3. 【详细到哭系列】Zabbix监控并且实现各种报警 Linux 第29张

到此就完成了邮件(邮件自行测试)和微信报警。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄