【Zabbix】zabbix 原生linux命令部署 和docker部署
原生Linux部署灵活性高,适合复杂环境,但部署过程较繁琐。Docker部署便捷性高,易迁移,适合快速实现。
【Zabbix】Zabbix 保姆级安装指南:从零开始打造高效监控系统,轻松掌握运维利器!
Zabbix在原生Linux命令部署与Docker部署的对比:
原生Linux命令部署
-
特点:
- 直接在物理或虚拟机上安装Zabbix Server、Agent、Web界面等组件。
- 需要手动配置依赖项,如数据库(MySQL/PostgreSQL)和Web服务(Apache/Nginx)。
- 更灵活,可根据需求自定义环境和配置。
-
优势:
- 更深入的掌控:能精细调整系统和服务。
- 更适合复杂环境:适合特定的操作系统版本和硬件环境。
- 支持长期维护:适合长期运行的生产环境。
-
劣势:
- 安装和配置过程较繁琐,需要较高的运维技能。
- 升级或迁移时可能会耗费时间。
Docker部署
-
特点:
- 利用容器技术运行Zabbix Server、Agent和Web界面。
- 使用预构建的Docker镜像(官方或社区提供)。
-
优势:
- 快速部署:使用Docker Compose文件快速启动多个服务。
- 高度便携性:容器可轻松迁移到其他宿主机。
- 隔离性强:不同的服务运行在独立容器中,减少冲突。
-
劣势:
- 对Docker技术有一定要求。
- 容器化可能对性能有轻微影响,尤其是高负载环境。
- 适合短期使用或快速验证,但长期运行需要更好的容器管理方案(如Kubernetes)。
- 对比总结
| 特性 | 原生Linux部署 | Docker部署 |
|---|---|---|
| 安装复杂度 | 高 | 低 |
| 运行性能 | 高,直接运行在宿主机上 | 较高,需一定开销 |
| 灵活性 | 高 | 较低,受容器限制 |
| 迁移便捷性 | 较低 | 高 |
| 维护性 | 高(需手动管理) | 较高(容器管理简便) |
zabbix版本和源代码:zabbix源码网址
1. 安装 Docker 和 Docker Compose
确保服务器上已安装 Docker 和 Docker Compose。也可以使用默认的docker compose
如果未安装,可以参考官方文档:
Docker 安装指南
Docker-Compose 安装指南
创建目录
# 用于存储 Zabbix 服务器容器的配置文件等相关数据
mkdir -p /data2/zabbix/zabbix-server
# 用于存储 Zabbix 服务器容器中的告警脚本
mkdir -p /data2/zabbix/alertscripts
# 用于存储 Zabbix Web 容器中的字体文件
mkdir -p /data2/zabbix/fonts
# 用于存储 MySQL 数据库容器的数据文件
mkdir -p /data2/zabbix/db
mkdir -p /data2/zabbix/zabbix-server
mkdir -p /data2/zabbix/alertscripts
mkdir -p /data2/zabbix/fonts
mkdir -p /data2/zabbix/db
2. 编辑zabbix_server.conf
在项目目录中创建一个 docker-compose.yml 文件,并将以下内容粘贴到文件中:
LogType=console
DBHost=zabbix-mysql
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
User=zabbix
准备字体文件:下载 DejaVuSans.ttf 字体文件,并放到项目目录的 fonts 子目录中:
中文简体文件添加
从主机(C:\Windows\Fonts)上传一个.ttf的字体文件到/data2/zabbix/fonts目录
可使用rz命令,或者ftp,或远程传输工具(如:xftp)
并将文件名称改成DejaVuSans.ttf(yml文件中有指明)
3. 编写docker-compose.yml
services:
zabbix-web-nginx-mysql:
image: zabbix/zabbix-web-nginx-mysql:centos-5.2-latest
restart: always
environment:
- DB_SERVER_HOST=zabbix-mysql
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=root
- ZBX_SERVER_HOST=zabbix-server-mysql
ports:
- 8080:8080
volumes:
- /etc/localtime:/etc/localtime
- /data2/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf
networks:
- zbx_net
depends_on:
- zabbix-server-mysql
- zabbix-mysql
zabbix-mysql:
image: mysql:8.0.23
restart: always
ports:
- 3306:3306
environment:
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=root
command:
- mysqld
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8
- --collation-server=utf8_bin
volumes:
- /etc/localtime:/etc/localtime
- /data2/zabbix/db:/var/lib/mysql
networks:
- zbx_net
zabbix-java-gateway:
image: zabbix/zabbix-java-gateway:centos-5.2-latest
restart: always
volumes:
- /etc/localtime:/etc/localtime
networks:
- zbx_net
zabbix-server-mysql:
image: zabbix/zabbix-server-mysql:centos-5.2-latest
restart: always
volumes:
- /data2/zabbix/zabbix-server:/etc/zabbix
- /data2/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
- /etc/localtime:/etc/localtime
ports:
- 10052:10051
environment:
- DB_SERVER_HOST=zabbix-mysql
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=root
- ZBX_JAVAGATEWAY=zabbix-java-gateway
- ZBX_JAVAGATEWAY_ENABLE=true
- ZBX_JAVAGATEWAYPORT=10052
depends_on:
- zabbix-mysql
networks:
- zbx_net
zabbix-agent:
image: zabbix/zabbix-agent:centos-5.2-latest
restart: always
ports:
- 10050:10050
environment:
- ZBX_HOSTNAME=Zabbix server
- ZBX_SERVER_HOST=zabbix-server-mysql
- ZBX_SERVER_PORT=10052
networks:
- zbx_net
networks:
zbx_net:
driver: bridge
4. 启动docker compose
启动服务
在项目目录中运行以下命令启动所有服务:
#-d 参数表示在后台运行。
docker compose up -d
#检查容器状态:使用以下命令检查所有容器是否正常运行:up
docker ps
定义了一个完整的 Zabbix 监控系统,包括:
- Zabbix Web 前端(基于 Nginx 和 MySQL)
- Zabbix 服务器(基于 MySQL)
- Zabbix Java 网关
- Zabbix 代理
- MySQL 数据库
所有服务都连接到一个 Docker 网络 zbx_net,并且通过 depends_on 确保服务启动的顺序。通过挂载本地目录和文件,确保了数据的持久化和配置的自定义。
version: '3' # 使用 Docker Compose 版本 3
services:
zabbix-web-nginx-mysql:
image: zabbix/zabbix-web-nginx-mysql:centos-5.2-latest # Zabbix Web 前端,基于 Nginx 和 MySQL
restart: always # 容器总是自动重启,确保高可用性
environment:
- DB_SERVER_HOST=zabbix-mysql # 指定 MySQL 数据库服务器的主机名
- MYSQL_DATABASE=zabbix # 指定使用的数据库名称
- MYSQL_USER=zabbix # 指定数据库用户
- MYSQL_PASSWORD=zabbix # 指定数据库用户的密码
- MYSQL_ROOT_PASSWORD=root # 指定 MySQL root 用户的密码
- ZBX_SERVER_HOST=zabbix-server-mysql # 指定 Zabbix 服务器的主机名
ports:
- 8080:8080 # 将容器的 8080 端口映射到主机的 8080 端口,允许通过主机的 8080 端口访问 Zabbix Web 界面
volumes:
- /etc/localtime:/etc/localtime # 同步主机和容器的时间
- /data2/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf # 替换 Zabbix Web 界面中的字体文件
networks:
- zbx_net # 将容器连接到 zbx_net 网络
depends_on:
- zabbix-server-mysql # 依赖 Zabbix 服务器
- zabbix-mysql # 依赖 MySQL 数据库
zabbix-mysql:
image: mysql:8.0.23 # MySQL 数据库服务
restart: always # 容器总是自动重启
ports:
- 3306:3306 # 将容器的 3306 端口映射到主机的 3306 端口,允许通过主机的 3306 端口访问 MySQL 数据库
environment:
- MYSQL_DATABASE=zabbix # 指定创建的数据库名称
- MYSQL_USER=zabbix # 指定数据库用户
- MYSQL_PASSWORD=zabbix # 指定数据库用户的密码
- MYSQL_ROOT_PASSWORD=root # 指定 MySQL root 用户的密码
command:
- mysqld
- --default-authentication-plugin=mysql_native_password # 使用 MySQL 原生密码认证插件
- --character-set-server=utf8 # 设置服务器字符集为 UTF-8
- --collation-server=utf8_bin # 设置服务器排序规则为 UTF-8 二进制
volumes:
- /etc/localtime:/etc/localtime # 同步主机和容器的时间
- /data2/zabbix/db:/var/lib/mysql # 将 MySQL 数据目录挂载到本地,确保数据持久化
networks:
- zbx_net # 将容器连接到 zbx_net 网络
zabbix-java-gateway:
image: zabbix/zabbix-java-gateway:centos-5.2-latest # Zabbix Java 网关服务,用于监控 Java 应用程序
restart: always # 容器总是自动重启
volumes:
- /etc/localtime:/etc/localtime # 同步主机和容器的时间
networks:
- zbx_net # 将容器连接到 zbx_net 网络
zabbix-server-mysql:
image: zabbix/zabbix-server-mysql:centos-5.2-latest # Zabbix 服务器,基于 MySQL 数据库
restart: always # 容器总是自动重启
volumes:
- /data2/zabbix/zabbix-server:/etc/zabbix # 挂载 Zabbix 服务器的配置文件目录
- /data2/zabbix/alertscripts:/usr/lib/zabbix/alertscripts # 挂载 Zabbix 的告警脚本目录
- /etc/localtime:/etc/localtime # 同步主机和容器的时间
ports:
- 10052:10051 # 将容器的 10051 端口映射到主机的 10052 端口,允许通过主机的 10052 端口访问 Zabbix 服务器
environment:
- DB_SERVER_HOST=zabbix-mysql # 指定 MySQL 数据库服务器的主机名
- MYSQL_DATABASE=zabbix # 指定使用的数据库名称
- MYSQL_USER=zabbix # 指定数据库用户
- MYSQL_PASSWORD=zabbix # 指定数据库用户的密码
- MYSQL_ROOT_PASSWORD=root # 指定 MySQL root 用户的密码
- ZBX_JAVAGATEWAY=zabbix-java-gateway # 指定 Zabbix Java 网关的主机名
- ZBX_JAVAGATEWAY_ENABLE=true # 启用 Java 网关
- ZBX_JAVAGATEWAYPORT=10052 # 指定 Java 网关的端口
depends_on:
- zabbix-mysql # 依赖 MySQL 数据库
networks:
- zbx_net # 将容器连接到 zbx_net 网络
zabbix-agent:
image: zabbix/zabbix-agent:centos-5.2-latest # Zabbix 代理,用于在被监控的主机上收集数据
restart: always # 容器总是自动重启
ports:
- 10050:10050 # 将容器的 10050 端口映射到主机的 10050 端口,允许通过主机的 10050 端口访问 Zabbix 代理
environment:
- ZBX_HOSTNAME=Zabbix server # 指定 Zabbix 代理的主机名
- ZBX_SERVER_HOST=zabbix-server-mysql # 指定 Zabbix 服务器的主机名
- ZBX_SERVER_PORT=10052 # 指定 Zabbix 服务器的端口
networks:
- zbx_net # 将容器连接到 zbx_net 网络
networks:
zbx_net:
driver: bridge # 定义一个名为 zbx_net 的 Docker 网络,使用 bridge 驱动
5. 访问 Zabbix Web 界面
Zabbix Web 界面通过 zabbix-web-nginx-mysql 服务暴露在主机的 8080 端口。在浏览器中访问:
http://<你的服务器IP>:8080
例如,如果服务器 IP 是 10.0.0.15则访问:
http://10.0.0.15:8080
完成 Zabbix 安装向导
第一次访问 Zabbix Web 界面时,会自动进入安装向导。按照以下步骤完成配置:
参考:【Zabbix】Zabbix 保姆级安装指南:从零开始打造高效监控系统,轻松掌握运维利器!
完成安装
安装完成后,会显示一个确认页面。
点击 Finish,然后使用默认用户名和密码登录:
Username: Admin
Password: zabbix
总结:通过以上步骤,您可以成功使用 Docker Compose 部署 Zabbix 监控系统。部署完成后,可以通过 Zabbix Web 界面进行监控和管理。如果遇到问题,可以通过日志和配置文件进行排查。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)