Zabbix6.0使用企业微信告警教程Zabbix5.x版本皆可参考
环境准备
#修改主机名(非必做操作,可以不做,为了方便)
#Zabbix-Server
[root@localhost ~]# hostnamectl set-hostname zabbix
#Zabbix-Agent
[root@localhost ~]# hostnamectl set-hostname agent
#Zabbix-Server
[root@zabbix ~]# vim /etc/hosts
10.128.0.0 zabbix
10.128.0.1 agent
#复制到agent节点
[root@zabbix ~]# scp /etc/hosts agent:/etc/hosts
#临时关闭+永久关闭
#Zabbix-Server
[root@zabbix ~]# setenforce 0
[root@zabbix ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#Zabbix-Agent
[root@agent ~]# setenforce 0
[root@agent ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
安装过程直接省略.....yum -y install 即可
一 企业微信部分
1-1 创建企业
1、如果没有测试的企业,可以选择注册一个企业,点开企业微信官网,选择企业微信注册
2、按照提示正常输入信息即可(创建完直接登录即可,什么认证都不需要)
3、登录后创建企业微信机器人
4、每个人的机器人信息都不一样,不要用我的,用自己的
二 Web服务部分
2-1 创建主机群组及主机
1、创建一个主机群组,名称随意
2、创建好监控主机(配置-主机-创建主机),名称随便写,点击下方的添加,写被监控节点的IP地址,端口默认是10050
2-2 创建模板
1、写好群组和名称即可
2-3 创建监控项
点击测试,看看是否可以获取到数据
2-4 创建触发器
这个地方选择我们刚才创建好的监控项就可以,结果就是触发条件,大于等于多少告警,或者其他条件
选好严重性,点击添加即可
2-5 关联模板
2-6 测试模板的监控项及触发器
a.在被检测机器,让CPU负载高一些,测试触发器是否生效(可以直接输入yes命令)
b.此处仪表盘有数据更新,代表监控项及触发器设置正确
2-7 创建告警媒介
1、Token的位置一定要注意,写自己的企业微信的Key,参考企业微信部分,还有脚本的位置也需要修改成自己的Key
var Wechat = {
token: null,
to: null,
message: null,
parse_mode: null,
sendMessage: function() {
var params = {
msgtype: "markdown",
chat_id: Wechat.to,
markdown: {
content:Wechat.message
},
disable_web_page_preview: true,
disable_notification: false
},
data,
response,
request = new CurlHttpRequest(),
url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=9bd583d5-96b3-49cc-8a9f-f2a01e7127e0';
if (Wechat.parse_mode !== null) {
params['parse_mode'] = Wechat.parse_mode;
}
request.AddHeader('Content-Type: application/json');
data = JSON.stringify(params);
// Remove replace() function if you want to see the exposed token in the log file.
Zabbix.Log(4, '[Wechat Webhook] URL: ' + url.replace(Wechat.token, '<TOKEN>'));
Zabbix.Log(4, '[Wechat Webhook] params: ' + data);
response = request.Post(url, data);
Zabbix.Log(4, '[Wechat Webhook] HTTP code: ' + request.Status());
Zabbix.Log(4, '[Wechat Webhook] response: ' + response);
try {
response = JSON.parse(response);
}
catch (error) {
response = null;
Zabbix.Log(4, '[Wechat Webhook] response parse error');
}
if (request.Status() !== 200 || response.errcode !== 0 || response.errmsg !== 'ok') {
if (typeof response.errmsg === 'string') {
throw response.errmsg;
}
else {
throw 'Unknown error. Check debug log for more information.'
}
}
}
}
try {
var params = JSON.parse(value);
if (typeof params.Token === 'undefined') {
throw 'Incorrect value is given for parameter "Token": parameter is missing';
}
Wechat.token = params.Token;
if (['Markdown', 'HTML', 'MarkdownV2'].indexOf(params.ParseMode) !== -1) {
Wechat.parse_mode = params.ParseMode;
}
Wechat.to = params.To;
Wechat.message = params.Subject + '\n' + params.Message;
Wechat.sendMessage();
return 'OK';
}
catch (error) {
Zabbix.Log(4, '[Wechat Webhook] notification failed: ' + error);
throw 'Sending failed: ' + error + '.';
}
2、点击我们刚才创建好的报警媒介后方的测试,测试JavaScript是否有问题
现象如下图,证明测试成功
2-8 编辑用户的告警媒介
1、这里的收件人写群机器人的名字就可以,类型的话写我们刚才创建的告警媒介,最后点击添加(添加好一定要点更新)
2-9 配置动作
1、这个地方动作的条件写我们做好的触发器、模板、主机即可
2、操作部分选好群组、用户即可,仅发送这个位置是我们写的触发媒介。主题及消息按照如下配置即可
主题:
### 【监控告警】主机: <font color="warning">{HOST.NAME}</font> IP地址:<font color="warning">{HOST.IP}</font>
消息:
>主机名称:**<font color="comment">{HOST.NAME}</font>**
>主机IP:<font color="comment">{HOST.IP}</font>
>告警时间:<font color="comment">{EVENT.DATE}-{EVENT.TIME}</font>
>问题名称:<font color="warning">{EVENT.NAME}</font>
>问题详情:<font color="comment">{ITEM.NAME}:{ITEM.VALUE}</font>
>目前状态:<font color="comment">{TRIGGER.STATUS}</font>
>操作数据:<font color="comment">{EVENT.OPDATA}</font>
其他两个一样的步骤
确保已启用即可
三 测试
终端执行yes命令,增强cpu负载
Web告警正常
查看Web页面告警
查看企业微信