Zabbix 是一个高度集成的企业级开源网络监控解决方案,提供分布式监控以及集中的 Web 管理界面。它可以对主机、网络设备、数据库性能等实时监控,利用可定制警告机制,保证维护人员快速解决问题;提供分析报表及实时的图形化数据处理,实现对主机 7×24 小时集中监控。Zabbix 通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置,通过 SNMP 协议传输,被监控对象只需要支持 SNMP 协议或者运行 Zabbix-agents 代理程序即可。
pfSense 支持 Zabbix 监控,下面在 pfSense 2.5(开发版)上介绍配置过程。本例中,Zabbix 服务器 IP 地址:192.168.100.98,pfSense 防火墙 LAN 接口地址:192.168.100.254。
一、搭建 Zabbix 服务器
在 Zabbix 官网 上,有不同 Linux 系统搭建 Zabbix 服务器的简要说明,我选用的操作系统为 Ubuntu,搭建过程如下:
安装 Zabbix 仓库
wget https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1+ubuntu20.04_all.deb dpkg -i zabbix-release_5.2-1+ubuntu20.04_all.deb apt update安装 Zabbix 服务器、前端、代理
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent安装数据库
apt install -y mysql-server初始化数据库,输入 root 账户的密码,其他设置如果没有特殊要求,建议都选 “y”。
mysql_secure_installation创建数据库
在数据库主机上运行以下命令,新建数据库:zabbix,用户名:zabbix,密码:password。mysql -uroot -p password create database zabbix character set utf8 collate utf8_bin; create user zabbix@localhost identified by 'password'; grant all privileges on zabbix.* to zabbix@localhost; quit;导入初始架构和数据
这里会提示输入新创建的密码。zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix配置数据库
编辑文件/etc/zabbix/zabbix_server.conf,将以下字段修改为:DBPassword=password由于文件为只读属性,在修改之前请执行以下命令:
sudo chmod 777 /etc/zabbix/zabbix_server.conf启动 Zabbix 服务器和代理进程
启动 Zabbix 服务器和代理进程,并使其在系统启动时启动。systemctl restart zabbix-server zabbix-agent apache2 systemctl enable zabbix-server zabbix-agent apache2- 登录 Zabbix 服务器
在浏览器输入http://服务器IP地址/zabbix进行访问。
默认的登录帐号和密码为Admin、zabbix。
二、安装 Zabbix 代理插件
登录到 pfSense 防火墙,然后导航至 “系统” -> “插件管理” -> “可用插件”。搜索 Zabbix 字段,会有几个不同的 Zabbix-Agent 版本。根据需要选择适合的 Zabbix 版本。如果服务器安装了 Zabbix 5.2,则必须选择 zabbix-agent5.2。

三、配置 Zabbix 代理
接下来,我们需要配置 Zabbix 代理并将其指向我们的服务器。导航到服务 -> Zabbix 代理。选中 “启用 Zabbix 代理服务” 选项,然后输入 Zabbix 服务器的 IP 地址、服务器活动,主机名输入 pfSense 防火墙的 FQDN,为了满足后面 Zabbix 服务器监控模板的设置要求,超时值设为 5,其他设置采用默认值,如下图所示。

本示例未选择任何加密选项。
注意,为了满足后面 Zabbix 服务器监控模板的设置要求,在 高级功能 > User Parameters 里,请填写如下内容:
AllowRoot=1
UserParameter=pfsense.states.max,grep "limit states" /tmp/rules.limits | cut -f4 -d ' '
UserParameter=pfsense.states.current,grep "current entries" /tmp/pfctl_si_out | tr -s ' ' | cut -f4 -d ' '
UserParameter=pfsense.mbuf.current,netstat -m | grep "mbuf clusters" | cut -f1 -d ' ' | cut -d '/' -f1
UserParameter=pfsense.mbuf.cache,netstat -m | grep "mbuf clusters" | cut -f1 -d ' ' | cut -d '/' -f2
UserParameter=pfsense.mbuf.max,netstat -m | grep "mbuf clusters" | cut -f1 -d ' ' | cut -d '/' -f4
UserParameter=pfsense.discovery[*],/usr/local/bin/php /root/scripts/pfsense_zbx.php discovery $1
UserParameter=pfsense.value[*],/usr/local/bin/php /root/scripts/pfsense_zbx.php $1 $2 $3
四、添加监控脚本
GitHub 下载适用 pfSense 的监控模板,如果不能访问 GitHub,点 这里 本地下载,解压缩备用,该模板的使用说明详见 README.md 文件。
进入 pfSense 的 shell 环境,执行以下命令:
mkdir /root/scripts
curl -o /root/scripts/pfsense_zbx.php https://raw.githubusercontent.com/rbicelli/pfsense-zabbix-template/master/pfsense_zbx.php如果你的网络环境不能正常访问 GitHub,可以使用 Winscp 将压缩包里的 pfsense_zbx.php 文件手动上传到 /root/scripts 目录。
五、添加防火墙规则
在内网访问,无需添加任何防火墙规则。如果 Zabbix 服务器在外部网络,必须在 WAN 接口上添加防火墙规则,以允许 Zabbix 主机访问 pfSense 的 10050 端口。转到防火墙 -> 规则 -> WAN,添加一个新规则,如下图所示。


六、添加主机到 Zabbix
要使用 Zabbix 监视 pfSense,我们需要将它添加到 Zabbix 服务器中。在添加之前,我们需要先添加适用 pfSense 的监控模板。登录到 Zabbix,导航到配置 -> 模板,点击右上角的导入,选中第四步下载的压缩包中的两个 xml 文件,上传到服务器。

下面添加主机。导航到配置 -> 主机,点击右上角的创建主机,根据提示输入各项参数。输入 pfSense 主机名,可见名称,添加合适的组(可以自己新建)。在 Interfaces 下面单击添加,然后输入 pfSense 的 IP 地址、访问端口,点击更新。

转到模板选项卡并链接新模板。选择 pfsense Active 和 pfsense active:OpenVPN server user Auth,单击添加。完成此操作后,等待系统收集统计数据,该过程可能需要花费数分钟。

七、使用 Zabbix 监控 pfSense
完成所有操作后,回到配置 -> 主机,将看到防火墙显示其所有应用程序、项目、触发器、图形等。单击图形可查看防火墙的各项状态。

导航到监测 -> 主机,选择 pfSense 防火墙和要查看的图表。如果正确完成所有操作,则会显示一些图表数据,如下图所示。



至此,Zabbix 监控 pfSense 配置完成。
觉得内容不错?我要