zabbix使用企业微信机器人报警及中文乱码解决

前言:

传统企业微信创建应用方式报警目前已收费 采用免费方式 企微机器人

一、企业微信设置

企业微信创建报警机器人

如何设置群机器人 -帮助中心-企业微信

wechat.py文件留存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import requests
import json
import sys

# 机器人的webhook地址
API_URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=42d6sdhfj0205-77c0-4ef6-b903-2953bd705a65"

# HTTP请求头部信息
HEADERS = {
'Content-Type': 'application/json;charset=utf-8'
}

# 定义发送消息的函数
def send_text(text):
# 构建消息体
texts = {
"msgtype": "text",
"text": {
"content": text
}
}
# 发送HTTP POST请求
response = requests.post(API_URL, json=texts, headers=HEADERS)
# 打印响应内容(一般用于调试)
print(response.content)

# 如果该文件被直接执行,则从命令行接收一个参数并将其发送到机器人的webhook地址
if __name__ == '__main__':
if len(sys.argv) != 2:
print("Usage: python send_text.py <text>")
sys.exit(1)
text = sys.argv[1] # 获取命令行参数
send_text(text) # 发送消息



二、zabbix设置

https://www.cnblogs.com/xiykj/p/18075308

  • 脚本上传在服务器目录:/usr/lib/zabbix/alertscripts/wechat.py
  • 脚本名称与后端脚本一致

1、管理 > 媒介

脚本参数:{ALERT.MESSAGE}

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/11/image_27569bb10a7b517c588e991a55b3076f.png

2、配置 > 动作 > 触发器动作 > 创建动作微信告警

动作

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/11/image_24b86c8fafc0c9377f51fdc138baa7be.png

2.1、操作(报警发送定义)

主题

1
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

消息

1
2
3
4
5
6
7
8
9
告警主机:{HOSTNAME1}
告警地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

2.2、操作(报警恢复定义)

主题

1
故障恢复{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}已恢复!

消息

1
2
3
4
5
6
7
8
9
恢复告警主机:{HOSTNAME1}
告警地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

3、管理 > 用户

设置报警媒介微信报警

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/11/image_6ef34bc43ecb4959cb775b2900463692.png

三、设置中文及解决中文乱码

zabbix图形界面显示方框+zabbix web页面不支持中文 - GEGEWU- - 博客园

1、zabbix不支持中文切换

1
2
# 安装中文支持包language-pack-zh-hans:
sudo apt-get install language-pack-zh-hans

2、中文乱码解决

https://github.com/zznn-cloud/zznn-cloud-blog-images/raw/main/Qexo/24/11/image_f5f4b7bd2107721e3babedd0bc6bda81.png

2.1、从Windows系列系统复制一种中文字体:

  • windows存放字体目录C:\Windows\Fonts复制一个中文字 SIMKAI.TTF
    字体留存onedrive

查看zabbix安装路径的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 或者直接 
whereis zabbix
find / -name "fornts "
# 搜索目录
find / -name "graphfont.ttf"
# 备份原字体文件
cp /usr/share/zabbix/assets/fonts/graphfont.ttf{,.bak} (ubuntu部署所在目录)
# 上传中文字体文件到该目录
rz
# 删除软连接默认字体文件
rm -f graphfont.ttf
# 将上传的字体文件重命名为
mv SIMKAI.TTF graphfont.ttf
# 授予权限 刷新web页面此时生效
chmod 777 graphfont.ttf

备注

  • ls -l可以看到默认文件已配置软连接

2、修改php配置文件(错误配置不操作)

1
2
3
4
5
6
7
8
9
10
11
12
# zabbix使用的是php配置文件: /usr/share/zabbix/include/defines.inc.php
# 备份
cp /usr/share/zabbix/include/defines.inc.php{,.bak}
vim /usr/share/zabbix/include/defines.inc.php

# 找到ZBX_GRAPH_FONT_NAME ZBX_FONT_NAME 并修改对应的内容
# 原内容如下:
define(‘ZBX_GRAPH_FONT_NAME’, ‘DejaVuSans’);
define(‘ZBX_FONT_NAME’, ‘DejaVuSans’);
# 修改成以下内容:
define(‘ZBX_GRAPH_FONT_NAME’, ‘simsun’);
define(‘ZBX_FONT_NAME’, ‘simsun’);

备注:这里不需要添加文件后缀名

最后重启:systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm