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
Zabbix Ports 配置

按如图配置,选中 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-frontendarrow-up-right 查看,该网站提供了最新的包信息和兼容性说明。

或者使用 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 配置相关的参考文献,供读者进一步查阅,这些资料提供了更深入的数据库配置说明。

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

将生产环境 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 过程中如遇到问题,可以查看相关日志文件进行排查。本节还列出了一些待完善的事项。

日志

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

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

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

待解决

以下是一些有待完善的问题,供读者参考和进一步探索。

  • 中文显示乱码

  • 部分监控项未显示

  • HTTP 等安全配置有待完善

参考文献

以下是与 Zabbix 相关的参考文献,供读者进一步学习和查阅。

课后习题

  1. 将本文中尚未在 FreeBSD 上实现的那些监控模块重新实现。

  2. 重写一个新的完全面向 FreeBSD 的监控模板。

  3. 完善 Zabbix 的简体中文翻译,贡献至上游。

最后更新于