17.4 Zabbix 监控系统(基于 PostgreSQL)
Zabbix 是一个开源的企业级监控解决方案,用于监控网络服务、服务器硬件及应用程序,其架构采用服务器-代理模式,能够实现全面的基础设施监控。
本文将介绍基于 PostgreSQL 数据库在 FreeBSD 上安装和配置 Zabbix 7 的方法。
安装 zabbix7-server
zabbix7-server 是服务器端(Zabbix Server),作为监控系统的核心组件。它负责接收和处理监控数据,应安装在监控服务器上,承担数据处理、告警生成等核心功能。
使用 pkg 安装会额外安装 MySQL,并可能导致绑定冲突,因此推荐使用 Ports 安装,这种方式可以更好地控制依赖关系和配置选项。首先进入对应的 Ports 目录并进行配置。
# cd /usr/ports/net-mgmt/zabbix7-server/
# make config
按如图配置,选中 PGSQL 后按回车键,然后执行编译安装命令,编译过程可能需要一定时间:
安装 PostgreSQL
Zabbix 需要数据库来存储监控数据,数据库是监控系统的重要组成部分,负责持久化存储所有监控指标和配置信息。
PostgreSQL 作为关系型数据库为 Zabbix 提供了可靠的数据存储支持。
请读者自行完成 PostgreSQL 16 的安装、初始化及服务自启,具体步骤可参考本书相关章节。
安装 Nginx
Zabbix 前端需要通过 Web 服务器访问,Web 服务器为用户提供了访问监控界面的入口。本节使用 Nginx 作为 Web 服务器。请读者自行完成 Nginx 的安装和服务自启,具体步骤可参考本书相关章节。
安装 zabbix7-frontend
zabbix7-frontend 是 Web 控制前端(Zabbix Frontend),为用户提供了图形化的监控管理界面,是用户与监控系统交互的主要方式。
使用 pkg 安装是最快捷的方式,能够自动处理依赖关系,执行以下命令即可:
上述安装过程会自动安装 PHP。本文中安装的版本是 PHP 8.3(写作本文时 PHP 8.4 可能导致错误)。具体可用版本可以到 zabbix7-frontend 查看,该网站提供了最新的包信息和兼容性说明。
或者使用 Ports 方式安装,这种方式提供了更大的配置灵活性,需要先进入对应的目录再执行编译安装命令:
PDO
Zabbix 前端需要通过 PHP 访问 PostgreSQL 数据库,因此需要安装相应的 PHP 数据库扩展,PDO(PHP Data Objects)是 PHP 中用于数据库访问的统一接口。注意所使用的 PHP 版本要与 Zabbix 前端兼容,这是确保系统正常运行的关键。
使用 pkg 安装 PHP 数据库扩展:
或者使用 Ports 方式安装 PHP 数据库扩展:
安装 zabbix7-agent
zabbix7-agent 是 Zabbix 的代理程序,负责在被监控主机上收集监控数据并发送给 Zabbix Server,是监控数据采集的关键组件。应安装在需要被监控的服务器上,可以部署在多台机器上实现分布式监控。
使用 pkg 安装 zabbix7-agent。
或者使用 Ports 方式安装 zabbix7-agent。
守护进程
为了确保 Zabbix 相关服务在系统启动时自动运行,保证监控系统的持续性和可靠性,需要将相关服务配置为开机自启,这是生产环境部署的标准做法。
设置 PostgreSQL 数据库
需要在 PostgreSQL 中创建专门的数据库和用户供 Zabbix 使用,并导入 Zabbix 的初始数据,这是配置监控系统数据库的必要步骤。请读者自行初始化 PostgreSQL 数据库后再执行以下命令:
必须退出再继续,确保使用正确的用户权限进行后续操作:
参考文献
以下是与 PostgreSQL 配置相关的参考文献,供读者进一步查阅,这些资料提供了更深入的数据库配置说明。
ShowMe.Codes. PostgreSQL15 Public Schema 没有权限问题解决[EB/OL]. (2024-01-01)[2026-03-25]. https://showme.codes/zh-cn/2024-01-01-postgresql15-public-schema-permission/. 详述了 PostgreSQL 15+ 中 public schema 权限变更及解决方案。
设置 Zabbix Server
需要配置 Zabbix Server 的主要配置文件,使其能够连接到 PostgreSQL 数据库,这是确保监控系统正常工作的关键配置步骤。
目录结构:
Zabbix Server 的主要配置文件位于 /usr/local/etc/zabbix7/zabbix_server.conf。
加入以下内容:
设置 Zabbix Agent
需要配置 Zabbix Agent 的主要配置文件,使其能够与 Zabbix Server 通信。Zabbix Agent 的配置文件位于 /usr/local/etc/zabbix7/zabbix_agentd.conf。
加入以下内容:
配置 Zabbix 前端
需要配置 Zabbix 前端的配置文件,使其能够连接到 PostgreSQL 数据库。Zabbix 前端配置文件模板位于 /usr/local/www/zabbix7/conf/zabbix.conf.php.example(Zabbix Frontend 配置模板)。
复制 Zabbix 示例配置文件为正式配置文件:
编辑 /usr/local/www/zabbix7/conf/zabbix.conf.php,将:
修改如下:
配置 nginx
需要配置 Nginx 来提供 Zabbix 前端的 Web 访问服务。备份原有 Nginx 主配置文件:
编辑 /usr/local/etc/nginx/nginx.conf 文件,清空原有内容,修改如下,
配置 PHP
需要对 PHP 进行配置,以满足 Zabbix 前端的运行要求。
编辑 /usr/local/etc/php.ini-production 文件
/usr/local/etc/php.ini-production 文件将生产环境 PHP 配置文件复制为默认配置文件:
编辑 /usr/local/etc/php.ini 文件:
找到
;date.timezone =修改为date.timezone = Asia/Shanghai(注意要删掉原来开头的;)找到
post_max_size = 8M修改为post_max_size = 16M找到
max_execution_time = 30,修改为max_execution_time = 300找到
max_input_time = 60,修改为max_input_time = 300
启动服务
所有配置完成后,需要按顺序启动相关服务,使 Zabbix 监控系统正常运行。
登录
服务启动成功后,可以通过浏览器访问 Zabbix Web 前端进行登录和配置。Zabbix Web 前端的默认用户名和密码如下:
用户名:
Admin密码:
zabbix

配置中文
登录 Zabbix 后,可以将界面语言配置为中文,方便使用。



故障排除与未竟事宜
在使用 Zabbix 过程中如遇到问题,可以查看相关日志文件进行排查。本节还列出了一些待完善的事项。
日志
代理:
/var/log/zabbix/zabbix_agentd.log服务器端:
/var/log/zabbix/zabbix_server.logPHP 相关错误:
/var/log/nginx/error.log
待解决
以下是一些有待完善的问题,供读者参考和进一步探索。
中文显示乱码
部分监控项未显示
HTTP 等安全配置有待完善
参考文献
以下是与 Zabbix 相关的参考文献,供读者进一步学习和查阅。
FreeBSD Foundation. Monitor Your Hosts with Zabbix[EB/OL]. [2026-03-25]. https://freebsdfoundation.org/our-work/journal/browser-based-edition/networking-10th-anniversary/practical-ports-monitor-your-hosts-with-zabbix/. 提供了 FreeBSD 上 Zabbix 监控部署的完整实践指南。
课后习题
将本文中尚未在 FreeBSD 上实现的那些监控模块重新实现。
重写一个新的完全面向 FreeBSD 的监控模板。
完善 Zabbix 的简体中文翻译,贡献至上游。
最后更新于