zabbix简单应用
1、zabbix server部署
1.1、官方安装步骤
https://www.zabbix.com/cn/download
硬件有所需求:
建议内存4G,cpu8核
搭建yum源仓库,建议更换为国内镜像网址
a. Install Zabbix repository
官方手册https://www.zabbix.com/documentation/5.0/manual/installation/install_from_packages
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
# dnf clean all
b. 安装Zabbix server,Web前端,agent,用于监控自身
# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent
c. 创建初始数据库
官方手册https://www.zabbix.com/documentation/5.0/manual/appendix/install/db_scripts
Make sure you have database server up and running.
在数据库主机上运行以下代码。
# mysql -uroot -ppassword
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
导入初始架构和数据,系统将提示您输入新创建的密码。
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Disable log_bin_trust_function_creators option after importing database schema.
# mysql -uroot -ppasswordmysql> set global log_bin_trust_function_creators = 0;
# mysql> quit;
d. 为Zabbix server配置数据库
编辑配置文件 /etc/zabbix/zabbix_server.conf
DBPassword=password
e. 为Zabbix前端配置PHP
编辑配置文件 /etc/php-fpm.d/zabbix.conf uncomment and set the right timezone for you.
; php_value[date.timezone] = Europe/Riga
f. 启动Zabbix server和agent进程
启动Zabbix server和agent进程,并为它们设置开机自启:
# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm
g.访问连接zabbix
nginx: ip,直接访问网站或ip
apache: ip/zabbix,访问的是网站下的子目录
1.2、具体部署
二进制安装
10.0.0.100:LANP+zabbix,ubuntu2004,zabbix agent2
被管理主机 zabbix agent2
DNS
注意:部署过程中会自动安装apache,与nginx端口冲突,ubuntu需要对其进行停止服务
#准备zabbix
[root@ubuntu2004 ~]#wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb
[root@ubuntu2004 ~]#dpkg -i zabbix-release_5.0-1+focal_all.deb
[root@ubuntu2004 ~]#sed -i.bak 's#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#' /etc/apt/sources.list.d/zabbix.list #更换为国内镜像地址
[root@ubuntu2004 ~]#apt update
[root@ubuntu2004 ~]#apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-agent2 -y
#准备mysql
[root@ubuntu2004 ~]#apt -y install mysql-server
[root@ubuntu2004 ~]#cat << EOF | mysql
create database zabbix character set utf8mb4 collate utf8_bin; #创建数据库
create user zabbix@localhost identified by '123456'; #创建账号
grant all privileges on zabbix.* to zabbix@localhost; #授权
EOF
[root@ubuntu2004 ~]#zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123456 zabbix
#配置zabbix连接数据库
[root@ubuntu2004 ~]#vim /etc/zabbix/zabbix_server.conf
# DBHost=localhost #数据库主机地址
DBName=zabbix #数据库名称
DBUser=zabbix #数据库用户名
# DBPassword= #密码
[root@ubuntu2004 ~]#sed -i.bak '/^# DBPassword/c DBPassword=123456' /etc/zabbix/zabbix_server.conf
#更改nginx,把注释取消并更改域名
[root@ubuntu2004 ~]#vim /etc/zabbix/nginx.conf
# listen 80;
# server_name example.com;
[root@ubuntu2004 ~]#sed -i.bak '/^server/a\ listen 80;\n server_name zabbix.wang.com;' /etc/zabbix/nginx.conf
#更改php时区,看需求
[root@ubuntu2004 ~]#vim /etc/zabbix/php-fpm.conf
; php_value[date.timezone] = Europe/Riga
[root@ubuntu2004 ~]#sed -i.bak '/date.timezone/c php_value[date.timezone] = Asia/Shanghai' /etc/zabbix/php-fpm.conf
#停止apache2
[root@ubuntu2004 ~]#systemctl disable --now apache2
#启动
systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm
systemctl enable zabbix-server
systemctl is-enable zabbix-server zabbix-agent nginx php7.4-fpm #可查看是否开机自启
#访问
zabbix.wang.com
#登录,默认有个用户名Admin,密码zabbix,可更改
1.3、安装中文包
会有所乱码,且翻译会有所错误,汉化不彻底
yum -y install labgpacks-zh_CN
apt -y install language-pack-zh-hans
解决方法,把Windows的字体代替zabbix的字体
[root@ubuntu2004 ~]#cd /usr/share/zabbix/assets/fonts/
[root@ubuntu2004 fonts]#mv graphfont.ttf graphfont.ttf.bak
#选择想要的Windows的字体文件拷贝到该目录下并命名为原来的名字,Windows路径在
C:\Windows\Fonts
#也可win+r输入fonts
[root@ubuntu2004 fonts]#cp msyh.ttc graphfont.ttf #注意是使用cp,不能使用mv
2、安装zabbix agent
用于监控其他主机
2.1、自定义模板和监控项
- 先在被监控的主机上写一个监控项的名称,创建监控项,且指明监控项是从哪里获取相对应的值
- 在zabbix server上创建自定义的监控项模板,将自定义的监控项加入自定义模板,关联到被监控的主机上
- 在哪台被监控主机上创建的自定义监控项只能关联监控在哪台主机
- 新创建的监控项可加入原先已关联的自定义模板中,直接使用
#在agent上
[root@rocky8 ~]#vim /etc/zabbix/zabbix_agent2.d/user_login_count.conf #固定路径下创建.conf结尾的文件,将自定义的监控项写入在文件即可
UserParameter=<key>,<shell command> #注意大小写前面是监控项名称,后面是如何获取相对应的值
UserParameter=user.login.count,who | wc -l #当前连接数
UserParameter=test[*],echo $1 #把*的值赋于$1,
UserParameter=test[*],echo $1 $2 .. $n #多个key的集合
UserParameter=test[xyz],echo $1 #$1等于xyz,可多个
UserParameter=test[xyz,123],echo $1 $2 #$1等于xyz,$2等于123
UserParameter=tcp.state[*], netstat -nat | grep -c $1 #仅支持$1位置参数
UserParameter=tcp.state[*],fork /data/a.sh
[root@rocky8 ~]#zabbix_agent2 -t user.login.count #-t测试结果
[root@rocky8 ~]#zabbix_agent2 -t tcp.state[LISTEN]
[root@rocky8 ~]#systemctl restart zabbix-server.service #在agent端重启服务后,server端即可拿到自定义监控项语句
[root@ubuntu2004 ~]#zabbix_get -s 10.0.0.8 -k user.login.count #仅限手动敲
#在server的web页面上添加自定义模板
配置模板-->配置模板-->创建模板-->自定义模板名称;群组Templates-->主机监控项-->创建监控项-->自定义名称;类型是zabbix客户端;键值指定为自定义监控项的名称user.login.count;新的应用集,相当于归类;测试get value查看结果,添加即可-->主机关联模板-->查看监控-->找到所需模板,创建监控项,依次添加tcp.state[LISTEN]里面*的键值,添加入模板
#在其他主机也需使用该模板的话,需要将agent客户端的自定义监控项文件/etc/zabbix/zabbix_agent2.d/user_login_count.conf共享,拷贝过去,否则将无法使用
模板和zabbix版本相关联,不同版本不兼容
可先在测试机上,安装相同版本zabbix服务器,导入模板再升级版本,升级后再导出
升级:重新安装新版本的二进制包即可
2.1.1、监控内存
UserParameter=mem_use_precent,free | awk 'NR==2{print $3/$2*100}'
UserParameter=mem_unuse_precent,free | awk 'NR==2{print 100-($3/$2*100)}'
2.1.2、监控项的值映射
如状态码200对应显示ok
#创建值映射
管理-->一般-->界面设置-->值映射
#使用值映射,关联模板
在模板中,查看值,选择自定义的值映射
2.1.3、触发器
达成某些条件触发某些动作,定义条件
2.1.3.1、严重性
严重性 | 颜色 |
---|---|
未分类 | 灰色 |
信息 | 浅蓝色 |
警告 | 黄色 |
一般严重 | 橙色 |
严重 | 浅红色 |
灾难 | 红色 |
严重性功能
- 通过不同的颜色区分不同的严重程度
- 报警音频,不同的音频代表不同的严重程度
- 用户媒介,不同的用户媒介(通知渠道)代表不同的严重程度。例如,短信-高严重性, email -其他。
- 不同的严重性通过触发器执行对应的条件动作
2.1.3.2、定义触发器
a、表达式
if判断语句
官方文档
https://www.zabbix.com/documentation/5.0/zh/manual/config/triggers/expression
b、常用函数
函数名称 | 说明 | 范例 |
---|---|---|
avg() | 监控项的平均值 | avg(#5)→最新5个值的平均值 avg(1h)→最近一小时的平均值 avg(1h,1d)→一天前的一小时内的平均值 |
min() | 监控项的最小值 | CPU使用率最近5分钟的最小值大于6 system.cpu.load.min(5m)>6 CPU最近5次最小的值大于2 system.cpu.load.min(#5)>2 |
max() | 监控项的最大值 | max(#5)→最新5个值的最大值 max(1h)→最近一小时的最大值 |
last() | 最后的第几个值 | 注意last的#num参数和在其它函数中的作用不同 例如:返回值 3,7,2,6,9 last() 通常等同于last(#1) last(#5) 表示第五个最新值,注意:不是五个最新值 last(#2) 将返回值为7,last(#5)返回值为9 last(#10,30)表示每隔30s采样一次,取倒数第10个值 |
diff() | 比对上一次文件的内容 | 返回值为1,表示发生变化,返回值为0,表示没有变化 |
nodata() | 监控一段时间内是否返回数据 | 时间不少于30秒,因为timer处理器每30秒调用次 返回1 -指定评估期没有接收到数据 返回0-其它 |
c、常见运算符
加减乘除,大于等于小于,负数,逻辑运算与或非
not, and and or运算符区分大小写,而且必须为小写。它们也必须被空格或括号包围。
所有运算符中,除了-和not ,都有左到右的关联性。- 和not是非结合的(意味着-(-1)和not (not 1)应该用-1 and not not 1代替).
- <,<=,.>.>=,=, <>如果指定的关系为真,运算符将会在触发器表达式中产生’1’。如果指定的关系为假,则返回’0’。如果至少有一个运算数未知,则结果未知;
- and对于已知的运算对象,如果两个运算对象的比较不等于"0",则运算符将会在触发器表达式中产生"1",否则,它产生"0";对于末知的运算对象,如果两个运算对象的比较等于"0",则会产生“0",否则,则会产生"Unknown";
- or对于已知的运算对象,如果其中任意一个运算对象的比较不等于"0", 则运算符会在触发器表达式中产生"1”,否则,它产生"0";对于未知的运算对象进行"or”运算,则只有当一个运算对象的比较不等于"0",才会产生"1",否则,它会产生"Unknown";
- 如果操作数的值不等于"0",则已知操作数的逻辑否定运算符not的结果是"0”;如果操作数的值等于"0",则为"1"。对于末知的操作数not产生"Unknown"。
d、具体实现
#定义表达式
##www.zabbix.com处理器负载过高
{www.zabbix.com:system.cpu.load[all,avg1].last()}>5
#主机www.zabbix.com,监控项system.cpu.load,监控项取值[all,avg1]:一分钟内的平均值,最新获取的值last(),判断>5
#判断当前主机一分钟之内最新、最近获取的处理器负载值大于5时
{www.zabbix.com:system.cpu.load[all,avg1].last()}>5 or {www.zabbix.com:system.cpu.load[all,avg1].min(10m)}>2
#当前处理器负载大于5或者最近10分钟内最小值大于2,表达式为true
#在web页面:模板-->创建触发器-->名称描述,表达式添加,定义严重性-->可选恢复表达式,用于定义问题解决条件
#报警依赖关系:例如当服务器宕机时,端口也是不打开的,两个地方都设置有触发器时会有两次报警,有所影响排查,建立依赖关系可以仅进行服务器宕机报警,减少报警影响
2.2、监控linux
#准备zabbix agent2
[root@ubuntu2004 ~]#wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb
[root@ubuntu2004 ~]#dpkg -i zabbix-release_5.0-1+focal_all.deb
[root@ubuntu2004 ~]#sed -i.bak 's#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#' /etc/apt/sources.list.d/zabbix.list #更换为国内镜像地址
[root@ubuntu2004 ~]#apt update
[root@ubuntu2004 ~]#apt install zabbix-agent2 -y
#更改配置
[root@ubuntu2004 ~]#vim /etc/zabbix/zabbix_agent2.conf
Server=127.0.0.1,10.0.0.8,10.0.0.0/24 #授权谁能监控我
#更改其指向为zabbix server监控端服务器,写域名的话要DNS解析或者更改/etc/hosts文件,也可网卡DNS指向
Hostname=Zabbix server #agent服务器的主机名
[root@ubuntu2004 ~]#sed -i.bak '/^Server=/c Server=10.0.0.100' /etc/zabbix/zabbix_agent2.conf
[root@ubuntu2004 ~]#systemctl restart zabbix-agent2.service
#在zabbix server上将zabbix agent2加入监控栏,在zabbix server的web页面操作
配置-->主机-->创建主机、添加主机-->指定监控服务,即创建监控项,可通过模板Template OS Linux by Zabbix agent进行添加常规监控项,也可看需求自定义添加-->也可批量导入或者全克隆已添加的主机
2.3、监控Windows
流程
- 安装agent,指定zabbix server地址
- 在zabbix server上添加被监控的主机,web页面
- 实验需要可更改缩短采样时间,模板全选,更新间隔,批量更新
- 在被监控的主机上指定监控项,可用模板
- web页面查看
在官网,下载zabbix agent,Windows的msi版本
https://cdn.zabbix.com/zabbix/binaries/stable/5.0/5.0.35/zabbix_agent2-5.0.35-windows-amd64-openssl.msi
注意:这个包安装后删除会删除不干净,会影响到下一次安装
在安装过程中会需要指定zabbix server服务器的信息
cmd查找services.msc,找到zabbix agent2可查看相关信息,如配置文件存放路径,后续需更改服务器地址可在里面进行更改
可通过模板Template OS Windows by Zabbix agent添加监控项,也可自定义
检测工具:命令行的工具,可用于检测agent是否健康,结合监控项来用
[root@ubuntu2004 ~]#apt -y install zabbix-get
[root@ubuntu2004 ~]#zabbix_get -s 10.0.0.18 -k agent.ping #判断是否可连接,返回结果1
1
2.4、监控nginx应用
使用模板Template App Nginx by HTTP,监控nginx的状态页面status
[root@10.0.0.8 ~]#vim /etc/nginx/nginx.conf
location /basic_status { #注意zabbix的宏定义监控的是basic_status,因此搭建的状态页面名称也得是这个,除非更改宏定义
stub_status;
allow 10.0.0.100; #白名单
deny all;
}
[root@10.0.0.8 ~]#systemctl restart nginx
2.5、监控php状态页
使用模板Template App PHP-FPM by Zabbix agent
[root@10.0.0.8 ~]#vim /etc/php-fpm.d/www.conf
listen = 127.0.0.1:9000 #更改为监听端口9000,而不是走sock文件
pm.status_path = /status #取消该行注释,注意页面名称和zabbix的宏定义相同
ping.path = /ping #取消注释开启ping功能
[root@10.0.0.8 ~]#mv /etc/nginx/conf.d/php-fpm.conf{,.bak} #如不是编译安装的php,会自动添加这两个配置文件,需更改
[root@10.0.0.8 ~]#mv /etc/nginx/default.d/php.conf{,.bak}
[root@10.0.0.8 ~]#systemctl restart php-fpm.service
[root@10.0.0.8 ~]#vim /etc/nginx/nginx.conf
location ~ ^/(.*\.php|ping|status)$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
[root@10.0.0.8 ~]#systemctl restart nginx
2.6、监控java程序
监控流程
- zabbix-server 通知 zabbix-Java-Gateway需要获取监控主机的哪些监控项
- Zabbix-Java-Gateway 通过 JMX 协议请求采集 Java进程数据
- Java程序通过 JMX 协议返回数据给 zabbix-Java-Gateway
- zabbix-Java-Gateway 最终返回数据给 zabbix-server
- zabbix-server 对采集的JAVA 数据进行存储,然后进行 Web 展示
以tomcat为例
2.6.1、开启JMX功能
[root@tomcat ~]#vim /usr/local/tomcat/bin/catalina.sh
.......
# -----------------------------------------------------------------------------
#添加下一行
CATALINA_OPTS="$CATALINA__OPTS
-Dcom.sun.management.jmxremote #启用远程监控JMX
-Djava.rmi.server.hostname=10.0.0.18 #是tomcat主机自己的IP地址,不是zabbix服务器的地址
-Dcom.sun.management.jmxremote.port=12345 #默认启动的JMX端口号,要和zabbix添加主机时候的端口一致即可
-Dcom.sun.management.jmxremote.authenticate=false #不使用用户名密码
-Dcom.sun.management.jmxremote.ssl=false" #不使用ssl认证
# OS specific support. $var _must_ be set to either true or false.
.......
[root@tomcat ~]#systemctl restart tomcat
2.6.2、部署java-gateway
监听端口10052
部署在zabbix server和java app之间
官方步骤
https://www.zabbix.com/cn/download
a. 安装 Zabbix 存储库
https://www.zabbix.com/documentation/5.0/manual/installation/install_from_packages
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
# dnf clean all
b. 安装 Zabbix java gateway
# dnf install zabbix-java-gateway
c. 启动Zabbix java网关进程
启动Zabbix java网关进程,并使其在系统启动时启动。
# systemctl restart zabbix-java-gateway
# systemctl enable zabbix-java-gateway
原理和安装zabbix差不多,装仓库,改仓库指向加速,安装包,可将其和zabbix server部署在同一主机上,节省资源
#将java-gateway和zabbix server部署在同一主机上,在前面已部署zabbix server
[root@zabbix-server ~]#yum -y install zabbix-java-gateway
[root@zabbix-server ~]#systemctl enable --now zabbix-java-gateway.service
2.6.3、配置zabbix server
[root@zabbix-server ~]#vim /etc/zabbix/zabbix_server.conf
# JavaGateway= #指定java gateway主机
JavaGateway=127.0.0.1
# StartJavaPollers=0 #开启java Poller进程数,用0个进程来干活,该数字和java程序数量有一定关联
StartJavaPollers=1
[root@zabbix-server ~]#systemctl restart zabbix-server.service
关联模板
系统内置模板:
Template App Generic Java JMX
Template App Apache Tomcat JMX
注意:关联主机时interfaces选择JMX类型接口
2.7、监控网络设备,硬件
SNMP协议,简单网络管理协议,NMS和Agent
MIB管理信息库
在被管理端
打开路由器管理页面–>设备管理–>SNMP–>启用SNMP功能,常用v2c版本–>设置团体(用户名和密码认证)
测试是否可连接
yum -y install net-snmp-utils
apt -y install snmp
[root@zabbix-server ~]#snmpwalk -v 2c -cpublic 10.1.84.1 .1.3.6.1.2.1.1.5.0
SNMPv2-MIB::sysName.0 = STRING: H3C
#-cpublic 指定团体名(用户名,在SNMP中设置的)
#-v 2c 指定版本
#10.1.84.1 主机或者说设备ip
#.1.3.6.1.2.1.1.5.0 所需查看的OID,显示设备主机名
在zabbix管理页面关联设备
配置–>主机–>创建主机–>interfaces选择SNMP类型接口,注意地址是否能ping通,指定版本,团体名(SNMP的密码)–>关联模板,内置模板:Template Module Generic SNMP,也可自定义–>更改宏的值( **{$SNMP_COMMUNITY}**的值,即用户名 )
3、主动模式和被动模式
以agent端的角度来说,默认使用被动模式,主动模式为agent端主动向server 端发送监控情况,主动模式主要是指监控项
具体实现
#在agent上
[root@rocky8 ~]#vim /etc/zabbix/zabbix_agent2.conf
ServerActive=10.0.0.8 #主动模式指向更改为 Zabbix Server的IP或FQDN域名
Hostname=10.0.0.18 #当前主机的IP,此项必须和Zabbix Server中设置的主机名称相同
[root@rocky8 ~]#systemctl restart zabbix-agent2.service
在zabbix的web管理页面,配置–>主机/模板
创建监控项时,更改类型选择主动式,也可全克隆原有的模板进行更改,批量更新即可,注意命名加个active,便于区分
降低服务器压力
#步骤
agent端
1 ServerActive=zabbix Server的地址
2 Hostname=服务器的Web上名称一致
3 restart服务
服务器端
5 添加主机 名称=Hostname和客户端相同
6 关联模板,包括的监控项是主动模式
4、告警通知
- 邮件
- 微信
- 短信
4.1、邮件通知
邮箱需要开启SMTP功能,在邮箱设置开启,也可用脚本来发送邮件
1、开启SMTP功能,该邮箱将用于发送告警邮件
2、创建告警媒介,用于指定谁来发送邮件
管理–>报警媒介–>创建或更改–>message templates报警模板,以什么样的形式展示报警信息
#邮件
[root@rocky8 ~]#cat /etc/mail.rc |grep ^set.*
set from=3400153712@qq.com #SMTP电邮,邮箱地址
set smtp=smtp.qq.com #SMTP服务器
set smtp-auth-user=3400153712@qq.com #认证用户名称,邮箱名
set smtp-auth-password=gioslfwbbzgucjoo #认证密码,即授权码
#端口:25不加密,465是加密端口
3、指定接收邮件报警
管理–>用户–>报警媒介–>指定类型,即所创建的告警媒介,收件人地址
4、创建动作
触发器发生后所需执行的动作
配置–>动作–>创建动作
- 也可使用脚本来发送邮件,需事先搭建好脚本,将脚本存放路径在 /usr/lib/zabbix/alertscripts/ 下;创建新媒介,类型选脚本
- 可搭配分级告警
4.2、微信告警
1、注意使用的是企业微信,在网页版管理后台里的应用管理,创建新的小程序,用于引用企业微信来发送信息
- 地址:https://work.weixin.qq.com/wework_admin/frame#index
- 该应用的可见范围决定后续发送消息谁能接收
2、创建完成留意在新创建的小程序中搭配企业可信IP,新功能,否则无法连接,类似白名单
3、需要记住新创建的小程序的AgentId和Secret的值,相当于密钥,还有就是企业id,在我的企业里面
AgentId:1000002
Secret:TgRbp97V1Pm5Tgim_Tj3vZSFFF88abW7WNazWaOOV0o
企业ID:wwc2b01ed403f39fe2
4、搭建脚本,存放路径在 /usr/lib/zabbix/alertscripts/ 下
[root@rocky8 ~]#cat /usr/lib/zabbix/alertscripts/wechat.sh
#!/bin/bash
CorpID="wwc2b01ed403f39fe2" #我的企业下面的CorpID
Secret="TgRbp97V1Pm5Tgim_Tj3vZSFFF88abW7WNazWaOOV0o" #创建的应用那里的Secret
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
Token=$(/usr/bin/curl -s -G $GURL |awk -F\": '{print $4}'|awk -F\" '{print $2}')
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"
function body(){
local int agentid=1000002 #改为AgentId 在创建的应用那里看
local UserID=$1 #发送的用户帐号名,位于$1的字符串,给谁发,谁来接收,写的是个人信息里的账号
local PartyID=2 #通讯录中的部门ID
local Msg=$(echo "$@" | cut -d" " -f3-)
printf '{\n'
printf '\t"touser": "'"$UserID"\"",\n"
printf '\t"toparty": "'"$PartyID"\"",\n"
printf '\t"msgtype": "text",\n'
printf '\t"agentid": "'"$agentid"\"",\n"
printf '\t"text": {\n'
printf '\t\t"content": "'"$Msg"\""\n"
printf '\t},\n'
printf '\t"safe":"0"\n'
printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
#测试
[root@rocky8 alertscripts]#chmod +x wechat.sh
[root@rocky8 alertscripts]#./wechat.sh Wei 微信告警测试标题 告警测试信息
5、在zabbix的管理页面添加报警媒介
管理–>创建新媒介–>名称,类型选脚本,指定脚本名称,添加参数–>定义报警内容格式
#参数,注意顺序是结合脚本的,不可打乱
{ALERT.SENDTO}--收件人媒介
{ALERT.SUBJECT}--通知主题,因为微信没有主题,此项无效,可以不填写
{ALERT.MESSAGE}--通知内容
6、关联用户
用户–>报警媒介,类型选微信告警,指定收件人即企微账号–>定义动作
4.3、短信告警
购买,申请短信条数–>申请短信模板,记下模板CODE留作使用–>搭建脚本–>创建媒介,指定参数–>关联用户,或者添加动作后再关联。Custom message选定,主题是模板CODE,注意内容和模板匹配,消息是短信模板内置变量