docker搭建zabbix
一、撰写配置
撰写docker-compose.yml文件
version: '3.5'
services:
mysql-server:
image: mysql:8.0.30
environment:
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_passwd
MYSQL_ROOT_PASSWORD: zabbix_passwd
volumes:
- mysql_data:/var/lib/mysql
networks:
- zbx_net
zabbix-server:
image: zabbix/zabbix-server-mysql:latest
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_passwd
depends_on:
- mysql-server
ports:
- "10051:10051"
networks:
- zbx_net
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:latest
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_passwd
ZBX_SERVER_HOST: zabbix-server
PHP_TZ: Asia/Shanghai
ports:
- "8080:8080"
- "8443:8443"
depends_on:
- zabbix-server
networks:
- zbx_net
zabbix-agent:
image: zabbix/zabbix-agent:latest
environment:
ZBX_SERVER_HOST: zabbix-server
ZBX_HOSTNAME: docker-agent
depends_on:
- zabbix-server
networks:
- zbx_net
networks:
zbx_net:
driver: bridge
volumes:
mysql_data:
启动Zabbix服务
在docker-compose.yml
文件所在目录,运行以下命令来启动Zabbix:
docker-compose up -d
这将启动Zabbix Server、Zabbix Web Interface、MySQL数据库和Zabbix Agent容器。你可以使用docker ps
命令查看运行的容器。
4. 访问Zabbix Web界面
Zabbix Web界面默认运行在容器的8080端口和8443端口。你可以通过浏览器访问以下URL来访问Zabbix:
http://<你的服务器IP>:8080
初始的登录用户名为Admin
,密码为zabbix
。
二、 安装windows终端的zabbix agent代理
1、选择对应版本的agent
2、点击下载
3、进行安装
注意:这里的hostname记住,到server上面填加写,两个ip都填写server的IP
默认安装目录C:\Program Files\Zabbix Agent\,需要记住次安装目录(可修改),手动启动时需要进入此目录启动客户端
三. 检查是否启动
打开windows命令行终端使用命令netstat -an 查看
看到在监听10050端口就是正常启动啦,下面手动启动就不用管啦,做个了解。因为windows安装好会自行启动的。
五. 手动启动方式
在windows中安装zabbix-agent默认会自己启动,如果没启动的话这时候就需要手动启动。
在cmd命令终端进入安装的目录里,我的示例如下:
C:\Users\Administrator>d:
D:>cd /Zabbix Agent
D:\Zabbix Agent>
现在就要输入命令进行一些操作
启动服务:
net start "Zabbix Agent"
停止服务:
net stop "Zabbix Agent"
检查 Zabbix Agent 状态
查看服务状态:
sc query "Zabbix Agent"
#D:\Zabbix Agent 目录就是我的安装目录里,这里我进入到我的安装目录里执行
卸载服务:
D:\Zabbix Agent> zabbix_agentd.exe --uninstall
日志查看
查看 Zabbix Agent 日志文件以排查问题:
D:\Zabbix Agent> zabbix_agentd.log
六 .创建被监控主机
打开虚拟机监控server主机,进入到web页面
2、添加主机(创建主机),选择数据采集—主机—点击右上角创建主机
添加主机的主机名称要和zabbix agent配置文件中的一致
选择合适的群组(可自定义)
问题一:Zabbix Server容器(zabbix-zabbix-server-1
)已经退出,状态码为Exited (1)
,这通常意味着容器启动过程中遇到错误,
页面显示:
查看zabbix-zabbix-server-1日志
cannot use database "zabbix": its "users" table is empty (is this the Zabbix proxy database?)
得知:Zabbix Server无法使用数据库“zabbix”,因为users
表是空的。这通常意味着Zabbix数据库没有被正确初始化,或者初始化过程中出现了问题
解决方法:
1、删除并重新创建数据库
首先,删除现有的 zabbix
数据库,并重新创建它:
mysql -uroot -p
在 MySQL 提示符下执行以下命令:
DROP DATABASE IF EXISTS zabbix;
CREATE DATABASE zabbix CHARACTER
问题二:重置 Zabbix Web 界面密码
如果你无法登录并且忘记了密码或账户被锁定,可以通过以下步骤重置 Zabbix Web 界面的管理员密码:
1、进入 MySQL 容器
-
获取容器 ID:
docker ps
-
进入 MySQL 容器:
docker exec -it zabbix-mysql-server-1 /bin/bash
2、重置管理员密码
-
登录 MySQL:
mysql -uzabbix -p
输入密码:
zabbix_passwd
-
选择 Zabbix 数据库:
USE zabbix;
-
更新管理员密码:
UPDATE users SET passwd=md5('new_password') WHERE alias='Admin';
这里的
new_password
是你要设置的新密码。 -
退出 MySQL:
EXIT;
-
退出容器:
exit
3. 检查用户是否被锁定
如果账户被锁定,你可以通过更新数据库表来解锁账户:
-
登录 MySQL:
docker exec -it zabbix-mysql-server-1 /bin/bash mysql -uzabbix -p
-
选择 Zabbix 数据库:
USE zabbix;
-
查看用户状态:
SELECT * FROM users WHERE alias='Admin';
查找
alias='Admin'
的行,查看failedlogin
和status
字段。 -
解锁账户: 如果
status
字段为1
,则表示账户被锁定。你可以将其更改为0
来解锁:UPDATE users SET status=0 WHERE alias='Admin';
-
退出 MySQL:
EXIT;
-
退出容器:
exit
问题三:zabbix-zabbix-server-1仍重启,但是zabbix界面能登录进去
报错: 1:20240814:073838.167 using configuration file: /etc/zabbix/zabbix_server.conf 1:20240814:073838.262 1:20240814:073838.262 Unable to start Zabbix server due to unsupported MySQL database version (5.07.44). 1:20240814:073838.262 Must be at least (8.00.30). 1:20240814:073838.262 Use of supported database version is highly recommended. 1:20240814:073838.262 Override by setting AllowUnsupportedDBVersions=1 in Zabbix server configuration file at your own risk. 1:20240814:073838.262 1:20240814:073838.271 Zabbix Server stopped. Zabbix 7.0.2 (revision d1b0c33).
Zabbix Server 在启动时遇到了 MySQL 数据库版本不支持的问题。当前使用的 MySQL 版本是 5.7.44,而 Zabbix 7.0.2 需要至少 MySQL 8.0.30 版本。
解决方法
有两种解决方案:
1. 升级 MySQL 版本
最推荐的做法是升级 MySQL 到 Zabbix 兼容的版本(至少 8.0.30)。升级 MySQL 版本后,Zabbix Server 应该能够正常启动。(直接修改docker-compose.yml文件中mysql部分也可)
升级 MySQL 的步骤如下:
- 备份当前数据库。
- 移除旧的 MySQL 版本。
- 安装 MySQL 8.0.30 或更高版本。
- 恢复数据库,并确保配置与新的 MySQL 版本兼容。
- 重新启动 Zabbix Server。
2. 使用不支持的数据库版本(不推荐)
如果你暂时不能升级 MySQL,且愿意承担潜在的风险,你可以在 zabbix_server.conf
文件中添加以下配置来强制使用不支持的数据库版本:
AllowUnsupportedDBVersions=1
编辑 zabbix_server.conf
文件,添加该行后保存并退出,然后重启 Zabbix Server:
nano /etc/zabbix/zabbix_server.conf
添加上述配置并保存,之后重启服务:
systemctl restart zabbix-server
或者在 Docker 环境中:
docker restart zabbix-zabbix-server-1
请注意,这种方法可能会带来不稳定性或其他问题,因此仅在没有其他选择时使用。
问题四:服务器安装zabbix agent,zabbix显示不可用
报错问题:Zabbix agent is not available (for 3m)
原因:zabbix的配置文件没有更改正确的服务器指向
解决方法:修改正确服务器指向,重启zabbix-agent
# 修改zabbix agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
# 将 Zabbix_Server_IP 替换为你的 Zabbix Server 的 IP 地址。
Server=Zabbix_Server_IP(192.168.3.22)
# 设置为该 Agent 所在机器的主机名,确保与 Zabbix Server 上配置的主机名一致。(hostname查看)
Hostname=Your_Hostname
# 重启 Zabbix Agent 并设置为开机自启动。
sudo systemctl restart zabbix-agent
sudo systemctl enable zabbix-agent