Zabbix 邮件报警、钉钉报警、微信报警
文章目录
- 一、部署server端和agent端
- 1、实验准备
- 2、部署zabbix-server【监控端】
- (1)安装zabbix-server
- (2)启动mariadb
- (3)准备数据库及授权
- (4)导入数据库文件
- (5)修改zabbix配置文件
- (6)启动zabbix-server
- (7)修改Apache配置文件,修改时区
- (8)启动Apache服务
- 3、部署zabbix-agent【被监控端】
- (1)安装zabbix-agent
- (2)zabbix-agent配置
- (3)启动zabbix-agent
- (4)准备网站测试环境(redis)
- 4、 实现对web服务器监控【监控端】
- (1)定义监控项
- (2)定义触发器
- (3)定义动作(action)
- 二、邮件报警
- 1、配置需要的邮件信息
- 2、zabbix监控端配置
- 3、web网页配置(脚本)
- (1)添加报警媒介
- (2)添加用户
- (3)创建动作
- (4)测试
- 3、另一种方式:web网页配置(电子邮件)
- 二、钉钉报警
- 三、微信报警
- 1、python报警监控脚本
- 2、zabbix 创建告警媒介
- 3、zabbix 添加告警用户
- 5.8 Zabbix 添加报警动作
- 5.9 测试微信报警
一、部署server端和agent端
1、实验准备
centos7.4 系统服务器2台、 一台作为监控服务器, 一台作为被监控节点, 配置好yum源、 防火墙关闭、 各节点时钟服务同步、 各节点之间可以通过主机名互相通信。
1)所有机器关闭防火墙和selinux
setenforing 0 (修改配置文件关闭)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld.service
2)根据架构图,实验基本设置如下:
机器名称 | IP配置 | 服务角色 | 备注 |
---|---|---|---|
server | 192.168.246.228 | zabbix-server | 开启监控功能 |
node1 | 192.168.246.226 | zabbix-agent-none1 | 开启 |
2、部署zabbix-server【监控端】
(1)安装zabbix-server
[root@youngfit ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[root@youngfit ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent httpd mariadb mariadb-server
(2)启动mariadb
[root@youngfit ~]# systemctl restart mariadb
[root@youngfit ~]# systemctl enable mariadb
(3)准备数据库及授权
[root@youngfit ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> \q
Bye
(4)导入数据库文件
[root@youngfit ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix
(5)修改zabbix配置文件
[root@youngfit ~]# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
注意删除前面的空格
(6)启动zabbix-server
[root@youngfit ~]# systemctl restart zabbix-server zabbix-agent //重启zabbix服务和agent
[root@youngfit ~]# systemctl enable zabbix-server zabbix-agent //设置为开机自启动
(7)修改Apache配置文件,修改时区
[root@youngfit ~]# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
(8)启动Apache服务
[root@youngfit ~]# systemctl restart httpd
[root@youngfit ~]# systemctl enable httpd
3、部署zabbix-agent【被监控端】
(1)安装zabbix-agent
[root@web1 ~]# rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[root@web1 ~]# yum -y install zabbix-agent
(2)zabbix-agent配置
[root@web1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=47.75.81.162 //zabbix-server IP 即监控端的IP
ServerActive=47.75.81.162 //zabbix-server IP 即监控端的IP
UnsafeUserParameters=1 是否限制用户自定义 keys 使用特殊字符 1是可以启用特殊字符 0是不可以启用特殊字符
EnableRemoteCommands=0 是否允许别人执行远程操作命令,默认是禁用的,打开的话会有安全风险.
(3)启动zabbix-agent
[root@web1 ~]# systemctl start zabbix-agent
[root@web1 ~]# systemctl enable zabbix-agent
(4)准备网站测试环境(redis)
如果已经在前安装redis,则不需要操作
首先,我们在agent端使用yum安装一下redis
:
[root@zabbix-agent-none1 ~]# yum -y install epel-release
[root@zabbix-agent-none1 ~]# yum install -y redis
修改一下配置文件:
[root@zabbix-agent-none1 ~]# vim /etc/redis.conf
bind 0.0.0.0 #不做任何认证操作
修改完成以后,我们启动服务,并检查端口:
[root@zabbix-agent-none1 ~]# systemctl start redis
[root@zabbix-agent-none1 ~]# netstat -lntp | grep redis
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1353/redis-server 0
4、 实现对web服务器监控【监控端】
接着,我们就可以去网站上来定义相关的操作了
(1)定义监控项
进入 配置 —> 主机 —> node1 —> 监控项(items)—> 创建监控项
填写完毕以后,我们点击下方的添加。
该监控项已成功添加。
我们可以去查看一下他的值:
检测中 —> 最新数据
(2)定义触发器
定义好了监控项以后,我们亦可来定义一个触发器,当服务有问题的时候,我们才能及时知道:
进入 配置 —> 主机 —> none1 —> 触发器(trigger)—> 创建触发器
填写完毕以后,我们点击下方的添加。
该触发器已成功添加。
我们去查看一下:
监测中 —> 最新数据
我们来手动关闭redis服务来检测一下:
[root@zabbix-agent-none1 ~]# systemctl stop redis
进入 监测中 —> 问题
可以看到,现在已经显示的是问题了。并且有持续的时间,当我们的服务被打开,会转为已解决状态:
[root@zabbix-agent-none1 ~]# systemctl start redis
(3)定义动作(action)
现在我们就可以去定义action了。
进入 配置 —> 动作 —> 创建动作(注意选择事件源为触发器)
我们可以进行操作添加:
我们可以看出,还需要在虚拟机上进行两项操作,一是修改sudo配置文件使zabbix用户能够临时拥有管理员权限;二是修改zabbix配置文件使其允许接收远程命令。我们进行如下操作:
[root@zabbix-agent-none1 ~]# visudo #相当于“vim /etc/sudoers”## Allow root to run any commands anywhereroot ALL=(ALL) ALLzabbix ALL=(ALL) NOPASSWD:ALL #添加的一行,表示不需要输入密码[root@zabbix-agent-none1 ~]# vim /etc/zabbix/zabbix_agentd.confEnableRemoteCommands=1 #允许接收远程命令LogRemoteCommands=1 #把接收的远程命令记入日志[root@zabbix-agent-none1 ~]# systemctl restart zabbix-agent.service
我们添加了第一步需要做的事情,也就是重启服务,如果重启不成功怎么办呢?我们就需要来添加第二步:
添加完成以后,我们可以看一下:
操作添加完了,如果服务自动恢复了,我们可以发送消息来提示:
至此,我们的动作设置完毕,可以点击添加了,添加完成会自动跳转至如下页面:
现在我们可以手动停止服务来进行测试:
[root@zabbix-agent-none1 ~]# systemctl stop redis.service
然后我们来到问题页面来查看,发现确实有问题,并且已经解决: 等一会
也可以去agent端查看端口是否开启:
[root@zabbix-agent-none1 ~]# systemctl stop redis
[root@zabbix-agent-none1 ~]# netstat -lntp | grep redis
[root@zabbix-agent-none1 ~]# netstat -lntp | grep redis
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1957/redis-server 0查看邮箱是否成功
[root@zabbix-server ~]# yum -y install mailx
[root@zabbix-server ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 1 message 1 unread
>U 1 zabbix@localhost.loc Thu Oct 10 00:51 21/865 "Resolved: redis service down"邮箱也已经成功
可以看出端口正常开启,我们的动作触发已经完成。
补充:我们也可以使用脚本来发送警报,我们的脚本存放路径在配置文件中可以找到,定义为:
AlterScriptsPath=/usr/lib/zabbix/alertscripts
然后我们将这个动作关闭掉为后期的邮件报警做准备。
二、邮件报警
1、配置需要的邮件信息
2、zabbix监控端配置
yum -y install mailxvim /etc/mail.rc
'//末尾添加'
set from=邮箱
set smtp=smtp.qq.com
set smtp-auth-user=邮箱
set smtp-auth-password=邮箱授权码
set smtp-auth=login
测试下邮件是否可以发送
echo "hello tomorrow" | mail -s "test" 邮箱
编写邮件脚本
cd /usr/lib/zabbix/alertscripts
vim mailx.sh
#!/bin/bash
#send mail
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1
创建日志文件并修改权限并测试
touch /tmp/mailx.log
chown -R zabbix.zabbix /tmp/mailx.log
chmod +x mailx.sh
chown -R zabbix.zabbix /usr/lib/zabbix/
sh mailx.sh 邮箱 zabbix "this is test"
3、web网页配置(脚本)
(1)添加报警媒介
管理 > 报警媒介类型 > 创建媒体类型
名称自定义,后面会用到 类型选择脚本 脚本名称是之前编辑的脚本名称 脚本的三个参数:
{ALERT.SENDTO}
{ ALERT.SUBJECT}
{ALERT.MESSAGE}
(2)添加用户
管理 > 用户 > 点击Admin > 报警媒介 > 添加
类型选择之前自定义的名称
收件人填自己邮箱
点击添加
点击更新
(3)创建动作
配置 > 动作 >创建动作 > 删除默认 > 创建动作
添加执行操作
注:也可以自定义消息内容
默认标题 {TRIGGER.STATUS}:{TRIGGER.NAME}
消息内容 告警主机:{HOST.NAME}告警IP:{HOST.IP}告警时间:{EVENT.DATE}-{EVENT.TIME}告警等级:{TRIGGER.SEVERITY}告警信息:{TRIGGER.NAME}-{ITEM.VALUE}事件ID:{EVENT.ID}
添加恢复操作
除了消息内容的模板,其他和上一步基本一致
默认标题 {TRIGGER.STATUS}:{TRIGGER.NAME}消息内容 恢复主机:{HOST.NAME}恢复IP:{HOST.IP}恢复时间:{EVENT.DATE}-{EVENT.TIME}恢复等级:{TRIGGER.SEVERITY}恢复信息:{TRIGGER.NAME}-{ITEM.VALUE}事件ID:{EVENT.ID}
最后再确认一下操作是不是都添加完成了,如果没完成是不会发送邮件的!!
(4)测试
被监控端停止sshd服务
systemctl stop redis
可以看到邮件已经发送过来了,并且仪表板的问题界面开始闪烁
重新开启服务后同样会有邮件发来
3、另一种方式:web网页配置(电子邮件)
二、钉钉报警
点击机器人的设置,把 webhook
的地址记录下来(很重要)
创建脚本,赋予执行权限
[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts
[root@zabbix-server alertscripts]# vim dingding.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Author: sxdswc999
import requests
import json
import sys
import osheaders = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "" #机器人的Webhook地址def msg(text):json_text= {"msgtype": "text","text": {"content": text},"at": {"atMobiles": ["" #手机号],"isAtAll": False}}print requests.post(api_url,json.dumps(json_text),headers=headers).contentif __name__ == '__main__':text = sys.argv[1]msg(text)
[root@zabbix-server alertscripts]# chmod +x dingding.py
安装python-pip和requests库
[root@zabbix-server alertscripts]# yum -y install epel-release
[root@zabbix-server alertscripts]# yum -y install python-pip
[root@zabbix-server alertscripts]# pip install requests
测试脚本是否可行
[root@zabbix-server alertscripts]# ./dingding.py 监控报警
{"errcode":0,"errmsg":"ok"}
pc端接收成功:
移动端App接收成功:
在监控页面创建媒介:
将Admin用户关联到此媒介:
收件人填钉钉的webhook
配置完成
三、微信报警
部门ID
AgentID和Secret
企业ID
1、python报警监控脚本
需要修改脚本中的四个信息:
self.__corpid = 'wwd5348195e1cdd809' //公司的corpid
self.__secret = '2QvlfpUxh4k-JeIuxVNmkh2N7ijfkCs1lzb4Tkgr6xQ' //应用的secret
'toparty':1, //部门id
'agentid':"1000002", //应用id
[root@zabbix-server ~]# vim /usr/lib/zabbix/alertscripts/wechat.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-import urllib,urllib2,json
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )class WeChat(object):__token_id = ''# init attributedef __init__(self,url):self.__url = url.rstrip('/')self.__corpid = 'wwd2385f23ad80ecef'self.__secret = '3gsEC6Mv3vQmdG5MOJBF65U0KzTl-1v2GKQhr479uso'# Get TokenIDdef authID(self):params = {'corpid':self.__corpid, 'corpsecret':self.__secret}data = urllib.urlencode(params)content = self.getToken(data)try:self.__token_id = content['access_token']# print content['access_token']except KeyError:raise KeyError# Establish a connectiondef getToken(self,data,url_prefix='/'):url = self.__url + url_prefix + 'gettoken?'try:response = urllib2.Request(url + data)except KeyError:raise KeyErrorresult = urllib2.urlopen(response)content = json.loads(result.read())return content# Get sendmessage urldef postData(self,data,url_prefix='/'):url = self.__url + url_prefix + 'message/send?access_token=%s' % self.__token_idrequest = urllib2.Request(url,data)try:result = urllib2.urlopen(request)except urllib2.HTTPError as e:if hasattr(e,'reason'):print 'reason',e.reasonelif hasattr(e,'code'):print 'code',e.codereturn 0else:content = json.loads(result.read())result.close()return content# send messagedef sendMessage(self,touser,message):self.authID()data = json.dumps({'touser':touser,'toparty':1,'msgtype':"text",'agentid':"1000002",'text':{'content':message},'safe':"0"},ensure_ascii=False)response = self.postData(data)print response
if __name__ == '__main__':a = WeChat('https://qyapi.weixin.qq.com/cgi-bin')a.sendMessage(sys.argv[1],sys.argv[3]
监控脚本测试:
注:Youngfit为上图的企业微信名 test为标题 yufei为内容,标题和内容均可自定义[root@youngfit ~]# /usr/lib/zabbix/alertscripts/wechat.py Youngfit test yufei
{u'invaliduser': u'', u'errcode': 0, u'errmsg': u'ok'}
2、zabbix 创建告警媒介
注:(以哪种方式发送报警信息,短信,脚本等等)
3、zabbix 添加告警用户
创建用户组:web-group,包含yangge、alice...等用户
创建用户:yangge、alice...等用户,并关联到微信告警
希望的结果是:发微信到组web-group,组中的用户yangge、alice都能收到
5.8 Zabbix 添加报警动作
如果希望中文显示:
告警主机: {HOST.NAME}
告警地址: {HOST.IP}
监控项目: {ITEM.NAME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}
5.9 测试微信报警
被监控端操作
[root@web1 ~]# systemctl stop httpd
Zabbix 邮件报警、钉钉报警、微信报警相关推荐
- Zabbix几分钟实现电话短信钉钉飞书微信报警
Zabbix是现在企业用的比较多的开源监控系统,Zabbix电话短信报警更是运维不可缺少的报警渠道. 前面一篇介绍了Zabbix5.4版本如何通过Spug推送助手发送电话短信报警,但用户反馈Zabbi ...
- zabbix3.4搭建钉钉报警
1.在钉钉群里添加一个自定义的机器 在设置说明中无需开启Outgoing机制 红色箭头指的信息很重要后面脚本会用到 2.后续的脚本用的是http://blog.51cto.com/m51cto/205 ...
- zabbix自定义报警——(邮箱,微信)
前言 看了很多其他人的博客,写了很多都有的用脚本的方式来实现邮箱报警,我觉得有点繁琐了,今天推荐一种不使用脚本的方式实现邮箱报警. zabbix安装部署参考: https://blog.csdn.ne ...
- oracle定时器定时删除30天前的数据_使用 TDengine 存储能耗数据并通过钉钉机器人接收报警信息...
小 T 导读:福建中海创集团(FUJIAN HISTRON)始创于1992年,是一家专业从事综合智能服务的大型企业集团.基于多年打造的"工业4.0"的核心技术.商业模式与产业链体系 ...
- zabbix4.0添加mysql报警_Zabbix 3.4.3实现企业微信报警
Zabbix 3.4.3实现企业微信报警 [日期:2017-11-08] 来源:Linux社区 作者:wzlinux [字体:大 中 小] 一.企业微信注册 微信的报警方式可以让我们随时随地接收到信 ...
- 【zabbix】自定义监控、邮件报警、企业微信报警、钉钉报警(详细)
环境说明 centos 7 版本 zabbix 6.0 版本 主机名 IP地址 备注 zabbix 192.168.10.150 服务端,同时自我监控 zabbix-2 192.168.10.151 ...
- 五分钟实现Zabbix电话、短信、邮件、钉钉、飞书、企业微信等机器人报警
Zabbix是现在企业用的比较多的开源监控系统,Zabbix电话短信报警更是运维不可缺少的报警渠道,假如半夜正在睡觉服务器异常了,这时候电话报警就非常必要. Spug推送助手针对常见的报警系统,内置好 ...
- zabbix配置步骤、操作及使用个人邮箱、企业微信、钉钉报警的配置
一.监控端配置 步骤: 1.去官网下载包,从而有zabbix.repo,更新yum源 2.yum安装zabbix-server-mysql zabbix-web-mysql zabbix-agent ...
- zabbix报警-邮件-钉钉
安装zabbix的时候已经配置了zabbix_server的脚本目录 AlertScriptsPath=/opt/app/zabbix/script 所以把邮件.钉钉.微信相关的脚本都放在/opt/z ...
最新文章
- 超简单的网页选项卡---jQuery
- 六种方法实现CSS三栏布局
- ar编码matlab仿真_matlab-ofdm通信链路仿真
- 几个网页制作的小技巧
- 结对编程:黄金点小游戏
- Java常用集合类:ArrayList
- qt种qdebug字符串_qDebug用法及中文乱码解决
- html下拉菜单换背景颜色,无下拉箭头的Select下拉框实现更换背景颜色
- mysql优化之insert/delete/update
- jQuery源码分析系
- 网上订餐系统python程序代码_网上订餐系统源代码
- 经典的战略管理和营销管理书《定位》
- 佳能Canon MF4700 一体机驱动
- word中的方括号怎么删_Word如何批量删除习题括号内答案
- 街头篮球服务器未响应,我的生涯我做主 《街头篮球》生涯联赛FAQ
- 测试每秒点击速度的软件,测试点击速度
- Mobaxterm X server远程Linux服务器使用浏览器(firefox或google chrome)
- 数组实现链表(C++代码+图解)
- kafka部署时出现的天坑
- Linux进程、线程模型,LWP,pthread_self()