30.1 Zabbix 监控系统(基于 PostgreSQL)

Zabbix 是一款企业级分布式开源监控解决方案,可对网络设备、服务器、应用程序及云服务进行实时监控与告警。本节采用 Ports 方式,基于 PostgreSQL 给出完整安装与配置步骤。

安装 zabbix7-server

zabbix7-server 是服务器端(Zabbix Server),负责接收和处理监控数据,应安装在监控服务器上。

通过 pkg 安装将额外引入 MySQL 依赖,并可能导致绑定冲突,因此建议采用 Ports 方式安装,以更精确地控制依赖关系与配置选项。

# cd /usr/ports/net-mgmt/zabbix7-server/
# make config
Zabbix Ports 配置

依照图示配置,选中 PGSQL 选项后确认,随后执行编译安装命令,编译过程较为耗时:

安装 PostgreSQL

Zabbix 需要数据库以存储监控数据。

PostgreSQL 16 的安装、初始化及服务自启配置请参阅本书相关章节。

安装 Nginx

Zabbix 前端需要通过 Web 服务器访问。本节使用 Nginx 作为 Web 服务器。Nginx 的安装与服务自启配置请参阅本书相关章节。

安装 zabbix7-frontend

zabbix7-frontend 为 Web 前端(Zabbix Frontend),提供图形化的监控管理界面。

采用 pkg 安装:

上述安装过程将自动安装 PHP,本节安装的版本为 PHP 8.3。Zabbix 7.0.10 起也正式支持 PHP 8.4,如需使用可改用 zabbix7-frontend-php84 及相应的 php84 扩展包。具体可用版本可查阅 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:

守护进程

需将相关服务配置为系统启动时自动运行。

设置 PostgreSQL 数据库

需要在 PostgreSQL 中创建专门的数据库和用户供 Zabbix 使用,并导入 Zabbix 的初始数据。PostgreSQL 数据库初始化完成后,执行以下命令:

技巧

上述示例中的 your_strong_password 为占位符,需要替换为实际的强密码。

必须先退出当前会话,再以正确的用户权限继续后续操作:

参考文献

设置 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 文件,将:

修改如下:

提示

以上配置适用于本地开发测试环境。生产环境中建议:

  • 为 Zabbix Server、Agent 及 Web 前端之间的通信启用 TLS 加密

  • 使用 Nginx 反向代理配置 HTTPS,避免监控数据和登录凭证明文传输

配置 Nginx

需要配置 Nginx 以提供 Zabbix 前端的 Web 访问服务。备份原有 Nginx 主配置文件:

编辑 /usr/local/etc/nginx/nginx.conf 文件,替换原有内容,修改如下:

配置 PHP

需配置 PHP 以满足 Zabbix 前端的运行要求。

编辑 /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 后,可将界面语言设置为中文。

Zabbix 界面
Zabbix 中文配置
Zabbix 中文界面

故障排除与未竟事宜

Zabbix 运行过程中如果出现异常,可通过查看相关日志文件排查。本节同时列出了若干待完善的事项。

日志

Zabbix 的日志文件分布在以下路径。

  • 代理:/var/log/zabbix/zabbix_agentd.log 文件

  • 服务器端:/var/log/zabbix/zabbix_server.log 文件

  • PHP 相关错误:/var/log/nginx/error.log 文件

待解决

以下为若干待研究的问题:

  • 中文显示乱码;

  • 部分监控项未显示;

  • HTTP 等安全配置有待完善。

参考文献

最后更新于