Docker快速部署Zabbix7.0
Docker快速部署Zabbix7.0教程
[https://www.cnblogs.com/lwops/p/18701410 "发布于 2025-02-06 17:16"]
本教程基于Centos7。其余Linux发行版操作理论上无特别差异。
安装准备
关闭Selinux
#临时关闭
setenforce 0
#永久关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
关闭防火墙(方便测试)
systemctl stop firewalld
关闭防火墙自启动
systemctl disable firewalld
安装Docker
执行如下命令,即可自动Docker安装
curl -fsSL https://get.Docker.com | bash -s Docker --mirror Aliyun
启动Docker
systemctl start Docker
设置开机自启动
systemctl enable Docker
查看Docker状态
systemctl status Docker
看到如下图信息,即Docker环境已准备完毕_
拉取所需镜像
#由于国内环境原因,目前访问Docker镜像仓库可能会存在问题,这里采用国内加速器进行镜像拉取
#Mysql
Docker pull Dockerpull.org/mysql:8.4
Docker pull Docker.io/library/mysql:8.4
#Zabbix server
Docker pull Dockerpull.org/zabbix/zabbix-server-mysql:7.0.6-centos
Docker pull Docker.io/zabbix/zabbix-server-mysql:7.0.6-centos
#Zabbix web
Docker pull Dockerpull.org/zabbix/zabbix-web-nginx-mysql:7.0.6-centos
Docker pull Docker.io/zabbix/zabbix-web-nginx-mysql:7.0.6-centos
启动Mysql服务
创建存储卷
docker volume create -d local mysql_data
docker volume create -d local mysql_logs
docker volume create -d local mysql_conf
查看所有数据卷
docker volume ls
创建Docker网络
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
启动Mysql服务
- 数据库名:zabbix
- 数据库用户:zabbix
- 数据库密码:P@ssw0rd
- 数据库root密码:P@sswOrd
docker run -itd --name=mysql -v mysql_data:/var/lib/mysql -v mysql_logs:/var/log/mysql -v mysql_conf:/etc/mysql -e MYSQL_DATABASE="zabbix" -e MYSQL_PASSWORD="P@ssw0rd" -e MYSQL_ROOT_PASSWORD="P@sswOrd" --restart=always --network=zabbix-net -p 3306:3306 mysql:8.4
启动Zabbix server服务
创建存储卷
docker volume create -d local zabbix_server
启动Zabbix server服务
docker run -itd --name zabbix-server -v zabbix_server:/etc/zabbix -e DB_SERVER_HOST="mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="P@ssw0rd" -e MYSQL_ROOT_PASSWORD="P@sswOrd" --network=zabbix-net -p 10051:10051 --restart=always zabbix/zabbix-server-mysql:7.0.6-centos
启动Zabbix web服务
启动Zabbix web服务
docker run -itd -e PHP_TZ="Asia/Shanghai" -e ZBX_SERVER_HOST="zabbix-server" -e DB_SERVER_HOST="mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="P@ssw0rd" -e MYSQL_ROOT_PASSWORD="P@sswOrd" -p 80:8080 --network=zabbix-net --restart=always zabbix/zabbix-web-nginx-mysql:7.0.6-centos
至此,Zabbix已部署完毕,访问虚拟机IP进行测试即可(默认账密 Admin/zabbix)
Zabbix设置飞书机器人告警通知
步骤:
• 飞书创建群组-添加自定义机器人,复制自定义机器人的webhook地址;
• zabbix服务器脚本目录下新建feishu.py脚本,并配置webhook地址;
• 创建zabbix报警媒介类型,用户添加报警媒介;
• 创建动作,配置操作。
1.飞书创建群组添加自定义机器人
飞书PC端==>>创建群组
打开群组设置==>>添加“自定义机器人”
设置机器人名称、描述,复制保存生成的webhook地址。
2.创建飞书脚本文件
登录zabbix服务器,进入到/usr/lib/zabbix/alertscripts/目录,新建feishu.py文件。
vi /usr/lib/zabbix/alertscripts/feishu.py
添加以下内容:
#!/usr/bin/python3
import requests
import json
import sys
import os
import datetime
url = "webhook地址" #你复制的webhook地址粘贴进url内
def send_message(message):
payload_message = {
"msg_type": "text",
"content": {
"text": message
}
}
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=json.dumps(payload_message))
return response
if __name__ == '__main__':
text = sys.argv[1]
send_message(text)
添加执行权限
chmod +x /usr/lib/zabbix/alertscripts/feishu.py
3.添加zabbix报警媒介
创建报警媒介类型,参数添加:{ALERT.MESSAGE}
用户内添加报警媒介
根据需求配置需要告警的级别
添加完成后点击更新
4.创建动作并配置
创建动作
操作配置-下图是配置完成的样子
具体每项配置详情
设置通知用户,触发的脚本名称,消息内容
问题主题
异常通知: {EVENT.NAME}
消息内容
告警主机:{HOSTNAME1}
告警时间:{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{EVENT.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢复主题
恢复通知: {EVENT.NAME}
恢复信息内容
告警主机:{HOSTNAME1}
告警时间:{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{EVENT.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
点击保存即可
5.告警媒介测试,及常见错误处理
测试告警媒介
成功则会将消息通过群机器人发送。
常见错误:
1.python3路径错误
feishu.py脚本的第一句配置的python3路径不对需要手动重新手动指定
找到当前系统python3的路径替换feishu.py脚本中的第一行
#!/usr/bin/python3
[root@Zabbix alertscripts]# whereis python3
python3: /usr/local/bin/python3.8 /usr/local/bin/python3.8-config /usr/local/bin/python3 /usr/local/lib/python3.8
2.python3环境没有安装requests模块
使用pip3安装requests模块
`[root@Zabbix alertscripts]# pip3 install requests`