Zabbix是一个高度集成的企业级开源网络监控解决方案,提供分布式监控以及集中的Web管理界面。zabbix可以对主机、网络设备、数据库性能等实时监控,利用可定制警告机制,来保证维护人员快速解决问题;提供分析报表及实时的图形化数据处理,实现对主机7×24小时集中监控。 Zabbix通过C/S模式采集数据,通过B/S模式在Web端展示和配置,通过SNMP协议传输,被监控对象只需要支持SNMP协议或者运行Zabbix—agents代理程序即可。
pfSense支持Zabbix监控,下面在pfsense2.5(开发版)上介绍配置过程。本例中,Zabbix服务器IP地址:192.168.100.98,pfSense防火墙LAN接口地址:192.168.100.254。
一、搭建Zabbix服务器
在Zabbix官网上,有不同linux系统搭建Zabbix服务器的简要说明,我选用的操作系统为Ubuntu,搭建过程如下:
1、安装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
2、安装Zabbix服务器、前端、代理
# apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent
3、安装数据库
# apt install -y mysql-server
初始化数据库,输入root账户的密码,其他设置如果没什么特殊要求,建议都选”y”
# mysql_secure_installation
4、创建数据库
在数据库主机上运行以下命令,新建数据库:zabbix,用户名:zabbix,密码:password
# mysql -uroot -p password mysql> create database zabbix character set utf8 collate utf8_bin; mysql> create user zabbix@localhost identified by 'password'; mysql> grant all privileges on zabbix.* to zabbix@localhost; mysql> quit;
5、导入初始架构和数据
这里会提示输入新创建的密码。
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
6、配置数据库
编辑文件 /etc/zabbix/zabbix_server.conf,将以下字段修改为:
DBPassword=password
由于文件为只读属性,在修改之前请执行以下命令:
Sudo chmod 777 /etc/zabbix/zabbix_server.conf
7、启动Zabbix服务器和代理进程
启动Zabbix服务器和代理进程,并使其在系统启动时启动。
# systemctl restart zabbix-server zabbix-agent apache2 # systemctl enable zabbix-server zabbix-agent apache2
8、登录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的监控模板,如果不能访问GitHup,点这里本地下载,解压缩备用,该模板的使用说明详见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
如果你的网络环境不能正常访问GitHup,可以使用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配置完成。