赞
踩
zabbix自定义监控项,使用钉钉报警机器人发送告警信息
环境准备
操作系统:Windows 10
虚拟机为:VMware 17.0.0
linux系统:rockylinux-8.8-x86_64
网卡:NAT模式
[root@localhost ~]# hostnamectl set-hostname zabbix
[root@zabbix ~]# sed -ri "s,^(SELINUX=).*,\1disabled," /etc/selinux/config # 禁用SELinux
[root@zabbix ~]# systemctl stop firewalld # 停止firewalld
[root@zabbix ~]# yum -y install vim
[root@zabbix ~]# yum -y install bash-completion
配置zabbix的yum仓库
[root@zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/8/x86_64/zabbix-release-6.4-1.el8.noarch.rpm
[root@zabbix ~]# dnf clean all
安装zabbix
[root@zabbix ~]# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent mysql-server langpacks-zh_CN
将PHP切换到版本7.4 新版本的zabbix需要执行这一步
[root@zabbix ~]# dnf module switch-to php:7.4
[root@zabbix ~]# systemctl enable mysqld --now
创建用户以及配置权限
[root@zabbix ~]# mysql -uroot
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'zabbix123';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
解释:创建一个名为zabbix的数据库,字符集为utf8mb4,校对规则为utf8mb4_bin
创建一个zabbix用户,只能本机登入,密码为zabbix123
给zabbix用户授予所有权限,但只能本机连接
二进制日志,允许用户创建或修改存储函数
验证一下,是否可以正常登入数据库,再继续之后的步骤
[root@zabbix ~]# mysql -uzabbix -pzabbix123 -hlocalhost zabbix
将数据导入数据库,需要一些时间,耐心等待
[root@zabbix ~]# gzip -d /usr/share/zabbix-sql-scripts/mysql/server.sql.gz
[root@zabbix ~]# mysql -uzabbix -pzabbix123 zabbix < /usr/share/zabbix-sql-scripts/mysql/server.sql
配置数据库密码
[root@zabbix ~]# sed -ri '129s,.*(DBPassword=),\1zabbix123,' /etc/zabbix/zabbix_server.conf
配置主机名,添加自己的IP
[root@zabbix ~]# sed -ri '182s,(Hostname=).*,\1zabbix,' /etc/zabbix/zabbix_agentd.conf
[root@zabbix ~]# sed -ri '117s](.*)]\1,192.168.91.137]' /etc/zabbix/zabbix_agentd.conf
配置nginx展示zabbix
[root@zabbix ~]# sed -i '2,3s/^#//' /etc/nginx/conf.d/zabbix.conf
启动相关服务
[root@zabbix ~]# systemctl enable zabbix-server --now
[root@zabbix ~]# systemctl enable zabbix-agent --now
[root@zabbix ~]# systemctl enable nginx --now
[root@zabbix ~]# systemctl enable php-fpm --now
ip叫端口访问,例如我的ip是192.168.91.137,那么我的网址就是:http://192.168.91.137:8080
选择 Chinese(zh_CN) 将语言改为中文
数据库密码:zabbix123
Zabbix主机名称:zabbix
用户名:Admin 首字母大写
密码:zabbix 全小写
Zabbix server 是默认就有的
添加完成
提示
在添加Zabbix主机时,如果没有为其配置任何监控项(item),那么Zabbix将无法收集该主机的任何数据,因此其可用性图标将保持灰色。您需要为该主机添加至少一个监控项,以便Zabbix可以开始收集数据并评估其可用性
创建key的语法:UserParameter=自定义key值,命令 # 命令的执行结果,是key的值
创建自定义配置文件。文件名自定义。
[root@zabbix ~]# vim /etc/zabbix/zabbix_agentd.d/usercnt.conf
# 用户数量
UserParameter=usercnt,sed -n '$=' /etc/passwd
[root@zabbix ~]# systemctl restart zabbix-agent.service
验证
# 1. 安装zabbix-get
[root@zabbix ~]# yum install -y zabbix-get
# 2. 获取监控项的值 -s 和 -k
[root@zabbix ~]# zabbix_get -s 127.0.0.1 -k usercnt
26
[root@zabbix ~]# zabbix_get -s 192.168.91.137 -k usercnt
26
建什么群,随意,本人建的是普通群
电脑版本的钉钉,至少需要再添加二个其他人,才能创建,使用手机版的钉钉,一个人就可以建群,
如果和我一样,只是测试,可以创建好之后,把这两个人又移出去。
把这个 Webhook 复制保存好,点击完成即可
https://oapi.dingtalk.com/robot/send?access_token=ec0b619468ae57b58ce653e1fe8cf813746e8e0202b40370ca903ec1ba82e317
安装钉钉机器人脚本需要用到的模块
[root@zabbix ~]# yum install python3-pip
[root@zabbix ~]# pip3 install requests
编写钉钉机器人脚本
[root@zabbix ~]# vim /usr/lib/zabbix/alertscripts/dingalert.py #!/usr/bin/env python3 import json import requests import sys def send_msg(url, remiders, msg): headers = {'Content-Type': 'application/json; charset=utf-8'} data = { "msgtype": "text", "at": { "atMobiles": remiders, "isAtAll": False, }, "text": { "content": msg, } } r = requests.post(url, data=json.dumps(data), headers=headers) return r.text if __name__ == '__main__': msg = sys.argv[1] remiders = [] url = '钉钉机器人Webhook地址' # 注意此处需输入自己的机器人webhook地址 print(send_msg(url, remiders, msg))
添加执行权限
[root@zabbix ~]# chmod +x /usr/lib/zabbix/alertscripts/dingalert.py
测试消息,必须包含刚才设置的关键字:warn
[root@zabbix ~]# /usr/lib/zabbix/alertscripts/dingalert.py 'warn: 这是一条测试消息'
{"errcode":0,"errmsg":"ok"}
点击更新,就添加好了
[root@zabbix ~]# useradd user01
[root@zabbix ~]# useradd user02
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。