大家好,我是小斐呀。
在前面的两篇文章中,我对国内企业常用的防火墙如何实现监控做了个简单分享,最近调研发现奇安信网神防火墙也比较常用,由于之前嘴硬立了 Flag
我是必须坚持分享完关于防火墙监控系列,然后就有了这篇分享,奇安信防火墙如何在 Prometheus
体系中实现监控告警。
为什么要做这个系列呢?国内很多厂商的网络设备底层基础类资料良莠不齐,不太重视,然后给我们用户使用并监控设置了太多的阻碍,而我就是想要打开这块不太涉及的领域,给需要监控国内各种网络设备的用户一道光,让网络设备这块监控在 Prometheus
体系下开箱即用。
本篇还是基于 SNMP Exporter
去采集奇安信网神防火墙指标数据,最近 SNMP Exporter
版本更新了,功能越来越丰富,附带的采集配置生成器支持的数据结构也越来越适合做 SNMP
协议的采集配置文件的生成工具,用起来越来越顺手,我计划后面会把 categraf
下的 SNMP
两者结合起来使用,把上千台网络设备的监控告警都迁移到 Prometheus
体系中。
环境介绍
还是延续上面两期的套路,采集之前,需要提前部署好整套架构的组件:
上面架构的告警可使用 Grafana
实现,如果习惯了告警规则配置文件,也可以添加 Alertmanager
组件实现告警。
如果已使用夜莺架构,喜欢使用夜莺的告警界面,同时数据需要经过夜莺的话,可以把架构改造为如下方式:
关于夜莺对接上面架构的三个时序库的配置,可以看下面这篇文章:
飞塔防火墙监控可以看下面这篇:
奇安信网神防火墙部署模式是 路由
模式,单节点运行,固件版本是 V3.6.6.0
系列,这里使用的是 网神SecGate3600
系列防火墙,理论上配置生成中列出的采集配置支持所有 网神系列
型号,现在需要把奇安信网神的 SNMP
开启:
首先需要把私有 MIB
库下载下来,结合公共 MIB
开始基于 SNMP Exporter
的 generator
写对应的采集配置,注意这里的采集配置不是最终的指标采集配置文件,只是一个中间态,是为了生成对应的指标采集配置文件而写的对应的生成器配置文件。
配置生成
奇安信网神防火墙的指标主要有以下几大指标模块:
其他没有更多指标可以拿的了,基本上我这里指标算是很全面的,就是是 Zabbix
上那种套用公共模版或者自动发现,也不一定有很全,或多或少有一些差距。下面我呈现下相关的生成器配置文件,可自行对最终的采集配置文件进行删减:
auths:# 认证模块名称secgate:# snmp v2c版本version:2# snmp 团体名community:publicmodules:# 奇安信网神 3600 防火墙系统模块secgate_system:walk:# sysUpTime 系统启动时间 单位:百分之一秒-1.3.6.1.2.1.1.3# deviceName 设备名称-1.3.6.1.4.1.32328.6.1.3# deviceSerial 设备序列号-1.3.6.1.4.1.32328.6.1.4# hardwareModel 硬件设备类型-1.3.6.1.4.1.32328.6.1.5# hardwareVersion 硬件版本-1.3.6.1.4.1.32328.6.1.6# softwareVersion 实际固件版本-1.3.6.1.4.1.32328.6.1.7# systemTemperature 系统温度 单位:摄氏度-1.3.6.1.4.1.32328.6.1.8# cpuPercentUsage CPU使用率 单位:%-1.3.6.1.4.1.32328.6.1.10.1.2# CFDiskCapacity CF 闪存总空间 单位:MB-1.3.6.1.4.1.32328.6.1.10.2.1# CFDiskPercentUsage CF 闪存使用率 单位:%-1.3.6.1.4.1.32328.6.1.10.2.2# hardDiskCapacity 硬盘总空间 单位:MB-1.3.6.1.4.1.32328.6.1.10.2.3# hardDiskPercentUsage 硬盘空间使用率 单位:%-1.3.6.1.4.1.32328.6.1.10.2.4# memoryCapacity 内存总空间 单位:MB-1.3.6.1.4.1.32328.6.1.10.3.1# memoryPercentUsage 内存使用率 单位:%-1.3.6.1.4.1.32328.6.1.10.3.2# NATPortPoolPercentUsage NAT端口池使用率 单位:%-1.3.6.1.4.1.32328.6.1.10.4.1# fanSpeedIndex 风扇下标-1.3.6.1.4.1.32328.6.1.10.5.1.1.1# fanSpeedDesc 风扇名称-1.3.6.1.4.1.32328.6.1.10.5.1.1.2# fanSpeedSpeed 风扇速度-1.3.6.1.4.1.32328.6.1.10.5.1.1.3# powerName 电源名称-1.3.6.1.4.1.32328.6.1.10.6.1# powerState 电源状态 normal-1.3.6.1.4.1.32328.6.1.10.6.2# powerCurr 当前功率 单位:W-1.3.6.1.4.1.32328.6.1.10.6.3max_repetitions:25retries:3timeout:5sallow_nonincreasing_oids:falseuse_unconnected_udp_socket:falselookups:-source_indexes:[fanSpeedIndex]lookup:fanSpeedDescoverrides:fanSpeedDesc:type:DisplayStringignore:truedeviceName:type:DisplayStringignore:falsedeviceSerial:type:DisplayStringignore:falsehardwareModel:type:DisplayStringignore:falsehardwareVersion:type:DisplayStringignore:falsesoftwareVersion:type:DisplayStringignore:falsepowerName:type:DisplayStringignore:falsepowerState:type:DisplayStringignore:falseregex_extracts:'':-regex:'normal'value:'1'-regex:'.*'value:'0'# 奇安信网神 3600 防火墙接口和光模块信息secgate_interface:walk:# ifDesc 接口名称-1.3.6.1.4.1.32328.6.2.3.1.1.2# ifInBps 接口入数据 单位:Bytes-1.3.6.1.4.1.32328.6.2.3.1.1.3# ifOutBps 接口出数据 单位:Bytes-1.3.6.1.4.1.32328.6.2.3.1.1.4# ifInPps 接口入数据包数-1.3.6.1.4.1.32328.6.2.3.1.1.5# ifOutPps 接口出数据包数-1.3.6.1.4.1.32328.6.2.3.1.1.6# ifInPercent 接口入带宽使用率 单位:%-1.3.6.1.4.1.32328.6.2.3.1.1.7# ifOutPercent 接口出带宽使用率 单位:%-1.3.6.1.4.1.32328.6.2.3.1.1.8# infTransceiverName 接口光模块名称-1.3.6.1.4.1.32328.6.2.3.2.1.2# infTransceiverVendor 接口光模块厂商-1.3.6.1.4.1.32328.6.2.3.2.1.3# infTransceiverType 接口光模块类型-1.3.6.1.4.1.32328.6.2.3.2.1.4# infTransceiverWavelength 接口光模块波长 数据类型:字符串-1.3.6.1.4.1.32328.6.2.3.2.1.5# infTransceiverTemperature 接口光模块温度 单位:摄氏度-1.3.6.1.4.1.32328.6.2.3.2.1.6# infTransceiverVoltage 接口光模块电压 单位:V-1.3.6.1.4.1.32328.6.2.3.2.1.7# infTransceiverBiasCurrent 接口光模块电流 单位:mA-1.3.6.1.4.1.32328.6.2.3.2.1.8# infTransceiverTxPower 光模块发送功率 单位:dBm-1.3.6.1.4.1.32328.6.2.3.2.1.9# infTransceiverRxPower 光模块接收功率 单位:dBm-1.3.6.1.4.1.32328.6.2.3.2.1.10max_repetitions:25retries:3timeout:5sallow_nonincreasing_oids:falseuse_unconnected_udp_socket:falselookups:-source_indexes:[ifIndex]lookup:ifDesc-source_indexes:[infTransceiverIndex]lookup:infTransceiverNameoverrides:ifDesc:type:DisplayStringignore:trueinfTransceiverName:type:DisplayStringignore:trueinfTransceiverWavelength:type:DisplayStringignore:falseinfTransceiverTemperature:type:DisplayStringignore:falseregex_extracts:'':-regex:'(.*)'value:'$1'infTransceiverVoltage:type:DisplayStringignore:falseregex_extracts:'':-regex:'(.*)'value:'$1'infTransceiverBiasCurrent:type:DisplayStringignore:falseregex_extracts:'':-regex:'(.*)'value:'$1'infTransceiverTxPower:type:DisplayStringignore:falseregex_extracts:'':-regex:'(.*)'value:'$1'infTransceiverRxPower:type:DisplayStringignore:falseregex_extracts:'':-regex:'(.*)'value:'$1'# 奇安信网神 3600 防火墙会话和设备数据模块secgate_session:walk:# sessionMaxNumber 会话最大数-1.3.6.1.4.1.32328.6.2.1.1# sessionCurrentNumber 当前会话总数-1.3.6.1.4.1.32328.6.2.1.2# sessionCreateNumber 当前新建会话总数-1.3.6.1.4.1.32328.6.2.1.3# sysInBps 当前设备入口带宽 单位:Bytes-1.3.6.1.4.1.32328.6.2.2.1# sysOutBps 当前设备出口带宽 单位:Bytes-1.3.6.1.4.1.32328.6.2.2.2# sysInPps 当前设备入口数据包-1.3.6.1.4.1.32328.6.2.2.3# sysOutPps 当前设备出口数据包-1.3.6.1.4.1.32328.6.2.2.4# sysInDiscards 当前设备入口丢包数-1.3.6.1.4.1.32328.6.2.2.5# sysOutDiscards 当前设备出口丢包数-1.3.6.1.4.1.32328.6.2.2.6# sysInErrors 当前设备入口错包数-1.3.6.1.4.1.32328.6.2.2.7# sysOutErrors 当前设备出口错包数-1.3.6.1.4.1.32328.6.2.2.8# sysTotalDrops 当前设备总删除包-1.3.6.1.4.1.32328.6.2.2.9# ifDescr 接口名称-1.3.6.1.2.1.2.2.1.2# ifAdminStatus 接口管理状态-1.3.6.1.2.1.2.2.1.7# ifOperStatus 接口工作状态 对于VPN Tunnel接口只能显示管理状态-1.3.6.1.2.1.2.2.1.8# ifHighSpeed 接口定义的速率 正整数 单位-Mbps-1.3.6.1.2.1.31.1.1.1.15max_repetitions:25retries:3timeout:5sallow_nonincreasing_oids:falseuse_unconnected_udp_socket:falselookups:# 最终的采集配置文件生成后,需要把 ifDescr 改为 ifDesc-source_indexes:[ifIndex]lookup:ifDescroverrides:filters:dynamic:# 这里可以根据接口管理状态动态剔除手动 shutdown 接口的指标-oid:1.3.6.1.2.1.2.2.1.7targets:-"1.3.6.1.2.1.2.2.1.2"-"1.3.6.1.2.1.2.2.1.7"-"1.3.6.1.2.1.2.2.1.8"-"1.3.6.1.2.1.31.1.1.1.15"values:["1","2"]# 奇安信网神 3600 防火墙HA模块secgate_ha:walk:# HAState 本端HA开启状态-1.3.6.1.4.1.32328.6.11.1# HACommPort 本端HA 端口-1.3.6.1.4.1.32328.6.11.2# HAInterface 本端HA接口-1.3.6.1.4.1.32328.6.11.3# HAIp 本端HA的IP-1.3.6.1.4.1.32328.6.11.4# HAPeerIP HA对端的IP-1.3.6.1.4.1.32328.6.11.5# HASyncConfig HA配置同步状态-1.3.6.1.4.1.32328.6.11.6# HASyncRTO HA配置RTO状态-1.3.6.1.4.1.32328.6.11.7# HAAsymmetric -1.3.6.1.4.1.32328.6.11.8# HAGroupMngState 索引:HAGroupID-1.3.6.1.4.1.32328.6.11.9.1.1.2# HAGroupForwardState-1.3.6.1.4.1.32328.6.11.9.1.1.3# HAGroupSyncCfgState-1.3.6.1.4.1.32328.6.11.9.1.1.4# HAGroupSyncRtoState-1.3.6.1.4.1.32328.6.11.9.1.1.5# HAGroupPri-1.3.6.1.4.1.32328.6.11.9.1.1.6# HAGroupCurrentPri-1.3.6.1.4.1.32328.6.11.9.1.1.7# HAGroupAdverInterval-1.3.6.1.4.1.32328.6.11.9.1.1.8# HAGroupPreemptMode-1.3.6.1.4.1.32328.6.11.9.1.1.9# HAGroupPreemptDelay-1.3.6.1.4.1.32328.6.11.9.1.1.10max_repetitions:25retries:3timeout:5sallow_nonincreasing_oids:falseuse_unconnected_udp_socket:falselookups:overrides:HAState:type:DisplayStringignore:falseregex_extracts:'':-regex:'enable'value:'1'-regex:'disable'value:'0'HAInterface:type:DisplayStringignore:falseHAIp:type:DisplayStringignore:falseHAPeerIP:type:DisplayStringignore:falseHASyncConfig:type:DisplayStringignore:falseregex_extracts:'':-regex:'enable'value:'1'-regex:'disable'value:'0'HASyncRTO:type:DisplayStringignore:falseregex_extracts:'':-regex:'enable'value:'1'-regex:'disable'value:'0'HAAsymmetric:type:DisplayStringignore:falseregex_extracts:'':-regex:'enable'value:'1'-regex:'disable'value:'0'
如何使用
使用 SNMP Exporter
下的生成器生成最终的采集配置文件即可,生成步骤如下:
把需要的奇安信网神防火墙的 mib
文件,包含公共的和私有的,我网盘已提供全面的;使用 SNMP Exporter
源码构建生成器二进制文件;编写生成器配置文件,也就是上面的 yaml 文件,我定义这个 yaml 文件名称为 generator_secgate.yml
;使用生成器二进制文件以及对应的参数去生成最终的采集配置文件。
如下所示,我把华为防火墙所有的 mib
文件放入对应的目录下 /opt/snmp_exporter/generator/qianxin/mibs/firewall
,把 generator_secgate.yml
放入 /opt/snmp_exporter/generator/qianxin/conf
目录下,执行如下命令生成即可:
/opt/snmp_exporter/generator/generator --fail-on-parse-errors generate -m /opt/snmp_exporter/generator/qianxin/firewall -g /opt/snmp_exporter/generator/qianxin/conf/generator_secgate.yml -o /opt/snmp_exporter/generator/qianxin/conf/snmp_secgate.yml
如果输出的信息没有任何报错,那就代表配置文件语法没有任何问题, 相关 oid
和节点名称都是正常:
最终得到的 snmp_secgate.yml
文件就是采集配置文件,可直接放在 SNMP Exporter
下加载执行。
运行采集
把生成好的配置文件 snmp_secgate.yml
放入指定的加载配置文件的文件夹中,如下所示:
将 snmp_exporter
的作为服务运行,新建服务启动文件 /etc/systemd/system/snmp_exporter.service
[Unit]Description=snmp_exporterAfter=network.target[Service]ExecStart=/opt/snmp_exporter/snmp_exporter --config.file=/opt/snmp_exporter/conf/snmp_*.yml --snmp.module-concurrency=3Restart=on-failure[Install]WantedBy=multi-user.target
把 snmp_fortigate.yml
放入 /opt/snmp_exporter/conf/
目录下,启动并运行测试如下:
抓取配置
打开 SNMP Exporter
调试 web
页面后,测试编写的指标模块是否符合自己的需求,并且数据返回是否正常,当这些步骤完成后,我们就要把数据采集到时序库中,由于 SNMP Exporter
是基于 pull
模式,需要配置 job_name
以定时抓取指标数据存入时序库中,实现数据的持久化。
Prometheus 时序库:编写 prometheus.yml
文件,在scrape_configs
下添加job_name
;VictoriaMetrics 时序库:我习惯在前面添加 vmagent
使用vmagent
配置job_name
。
job_name
配置如下所示:
scrape_configs:-job_name:"qianxin"scrape_interval:15sscrape_timeout:10sfile_sd_configs:-files:-/etc/victoriametrics/vmagent/qianxin.yml# refresh_interval: 2m # vmagent 不支持这个参数metrics_path:/snmprelabel_configs:-source_labels:["__address__"]target_label:__param_target-source_labels:["__param_target"]target_label:instance-target_label:__address__replacement:172.17.40.13:9116-source_labels:["module"]target_label:__param_module-source_labels:["auth"]target_label:__param_auth
由于上面使用了文件服务发现,我们需要在目录 /etc/victoriametrics/vmagent
下添加定义飞塔防火墙的信息 usg6000e.yml
文件模版内容如下:
-labels:module:secgate_system,secgate_interface,secgate_sessionauth:secgatebrand:Qianxinrole:firewallregion:hangzhoutargets:-172.18.10.111# 奇安信防火墙管理IP-172.18.10.100# 奇安信防火墙管理IP
面板展示
最终面板呈现如下所示,截取了系统和接口相关的:
基于 SNMP Exporter
目前已完成实现对华为、华三、天融信、安恒、深信服、奇安信、山石网科、飞塔等防火墙在 Prometheus
体系下的监控告警适配,更多内容可公众号私信联系我。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...