大家好,我是小斐呀。
上一期完善了基于 SNMP Exporter
对飞塔防火墙的指标采集,之前立了个 Flag
要使用 SNMP Exporter
完成对国内主流品牌网络设备的指标采集,以方便星球好友都可以把网络设备这块监控告警平滑迁移到 Prometheus
体系中,拥抱 Prometheus
就是指标监控领域的金标准,这期基于 SNMP Exporter
对华为防火墙的指标采集,从而实现对华为防火墙在 Prometheus
体系中的监控告警。
致力于打造 Prometheus
不适合网络设备监控的模版(目前有很多网络设备模版,特别是国内设备),全面淘汰 zabbix
从而使指标监控达到统一体系,也使的学习投入成本更低,适用面更广,一套监控满足所有场景。
环境介绍
采集之前,简单看看基础架构组成:
如果计划后续需要使用夜莺的告警,同时数据需要经过夜莺的话,可以把架构改造为如下方式:
夜莺对接这三个时序库的配置如下:
第一步:修改夜莺的主配置文件 etc/config.toml
中的 Pushgw.Writers
,这个配置是为了把流转到夜莺的指标数据写入对应的时序库中
# Prometheus
[[Pushgw.Writers]]
Url = "http://127.0.0.1:9090/api/v1/write"
# VictoriaMetrics single node
[[Pushgw.Writers]]
Url = "http://127.0.0.1:8428/api/v1/write"
# GreptimeDB
[[Pushgw.Writers]]
Url = "http://127.0.0.1:4000/v1/prometheus/write"
第二步:打开浏览器访问夜莺的 web
页面添加数据源,这个配置是为了在夜莺管理界面中能够查询对应时序库中的数据
点击 集成中心 > 数据源 > 新增 > 选择数据源类型 > Prometheus Like
Prometheus
VictoriaMetrics single node
GreptimeDB
以上时序库的选择可根据自身企业实际情况做针对性的选择组合即可。
华为防火墙部署模式是 NAT
模式,双机热备未启用单节点运行,固件版本是 V600R007C20
系列,这里使用的是 USG6000E
系列防火墙,理论上下面的采集配置支持所有 USG
型号,实际情况待测试。现在需要把华为防火墙的 SNMP
开启:
部署好 SNMP Exporter
的配置生成器,开始通过生成器生成最终指标采集配置。
配置生成
华为的配置主要有以下几大指标模块:
这些模块采集的都是最佳实践中比较常用的指标,如果需要更多其他非常见指标,可以做一些自定义的采集,下面我呈现下相关的生成器配置文件,可自行对最终的采集配置文件进行自定义生成(只列出系统模块):
auths:
usg6000e:
version:2
community:public
modules:
usg6000e_system:
walk:
# 单节点
# sysName 系统名称 类型:字符串
-1.3.6.1.2.1.1.5
# sysUpTime 系统启动时间 单位为百分之一秒
-1.3.6.1.2.1.1.3
# sysDescr 系统的文字描述 版本信息 类型:字符串
-1.3.6.1.2.1.1.1
# entPhysicalSoftwareRev 器件的软件版本号
-1.3.6.1.2.1.47.1.1.1.1.10
# entPhysicalName 实体名称 类型:字符串
-1.3.6.1.2.1.47.1.1.1.1.7
# entPhysicalSerialNum 设备序列号 类型:字符串
-1.3.6.1.2.1.47.1.1.1.1.11
# hwEntityCpuUsage 实体CPU实时利用率百分比 单位:%
-1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5
# hwEntityMemUsage 实体内存实时利用率百分比 单位:%
-1.3.6.1.4.1.2011.5.25.31.1.1.1.1.7
# hwEntityTemperature 实体温度 读取的是温度传感器测量温度的最高值 单位:°C
-1.3.6.1.4.1.2011.5.25.31.1.1.1.1.11
# hwEntityUpTime 实体启动时间 单位:秒
-1.3.6.1.4.1.2011.5.25.31.1.1.1.1.10
# hwHardDiskSN 硬盘SN
-1.3.6.1.4.1.2011.5.25.31.1.1.24.1.2
# hwHardDiskType 硬盘类型
-1.3.6.1.4.1.2011.5.25.31.1.1.24.1.3
# hwHardDiskCapacity 硬盘容量 单位:GB
-1.3.6.1.4.1.2011.5.25.31.1.1.24.1.4
# hwHardDiskUsage 硬盘使用率 单位:%
-1.3.6.1.4.1.2011.5.25.31.1.1.24.1.5
# hwHardDiskUsageThreshold 硬盘使用率告警阈值
-1.3.6.1.4.1.2011.5.25.31.1.1.24.1.6
# ipInHdrErrors 协议错误丢包
-1.3.6.1.2.1.4.4
max_repetitions:25
retries:3
timeout:5s
allow_nonincreasing_oids:false
use_unconnected_udp_socket:false
lookups:
-source_indexes:[entPhysicalIndex]
lookup:entPhysicalName
# 如果新的索引唯⼀ 可以删除原来的索引
# 这里 entPhysicalIndex 索引可以删除 把 entPhysicalName 作为索引 因为值唯一
# drop_source_indexes: true
overrides:
entPhysicalName:
type:DisplayString
ignore:true
entPhysicalSerialNum:
type:DisplayString
ignore:false
regex_extracts:
'':
-regex:'(.*)'
value:'$1'
sysDescr:
type:DisplayString
ignore:false
entPhysicalSoftwareRev:
type:DisplayString
ignore:false
hwHardDiskSN:
type:DisplayString
ignore:false
hwHardDiskType:
type:DisplayString
ignore:false
filters:
dynamic:
# 这里可以根据实体名称动态剔除
-oid:1.3.6.1.2.1.47.1.1.1.1.7
targets:
-"1.3.6.1.2.1.47.1.1.1.1.11"
-"1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5"
-"1.3.6.1.4.1.2011.5.25.31.1.1.1.1.7"
-"1.3.6.1.4.1.2011.5.25.31.1.1.1.1.11"
values:["RPU"]
-oid:1.3.6.1.2.1.47.1.1.1.1.7
targets:
-"1.3.6.1.4.1.2011.5.25.31.1.1.1.1.10"
-"1.3.6.1.2.1.47.1.1.1.1.10"
values:["^USG.*"]
-oid:1.3.6.1.4.1.2011.5.25.31.1.1.24.1.2
targets:
-"1.3.6.1.4.1.2011.5.25.31.1.1.24.1.2"
-"1.3.6.1.4.1.2011.5.25.31.1.1.24.1.3"
-"1.3.6.1.4.1.2011.5.25.31.1.1.24.1.4"
-"1.3.6.1.4.1.2011.5.25.31.1.1.24.1.5"
-"1.3.6.1.4.1.2011.5.25.31.1.1.24.1.6"
values:["^.+$"]
...
如何使用
使用 SNMP Exporter
下的生成器生成最终的采集配置文件即可,生成步骤如下:
-
把需要的华为防火墙的 mib
文件,包含公共的和私有的,我网盘已提供全面的; -
使用 SNMP Exporter
源码构建生成器二进制文件; -
编写生成器配置文件,也就是上面的 yaml 文件,我定义这个 yaml 文件名称为 generator_usg6000e.yml
; -
使用生成器二进制文件以及对应的参数去生成最终的采集配置文件。
如下所示,我把华为防火墙所有的 mib
文件放入对应的目录下 /opt/snmp_exporter/generator/huawei/mibs/firewall
,把 generator_usg6000e.yml
放入 /opt/snmp_exporter/generator/huawei/conf
目录下,执行如下命令生成即可:
/opt/snmp_exporter/generator/generator --fail-on-parse-errors generate -m /opt/snmp_exporter/generator/huawei/mibs/firewall -g /opt/snmp_exporter/generator/huawei/conf/generator_usg6000e.yml -o /opt/snmp_exporter/generator/huawei/conf/snmp_usg6000e.yml
如果输出的信息没有任何报错,那就代表配置文件语法没有任何问题, oid
和节点名称都是正常:
最终得到的 snmp_usg6000e.yml
文件就是采集配置文件,可直接放在 SNMP Exporter
下加载执行。
Tips:建议每个配置文件都单独定义好,模块名称不要有重复,这样加载采集的的时候即可加载多种品牌定义的配置文件。
运行采集
把生成好的配置文件 snmp_usg6000e.yml
放入指定的加载配置文件的文件夹中,如下所示:
将 snmp_exporter
的作为服务运行,新建服务启动文件 /etc/systemd/system/snmp_exporter.service
[Unit]
Description=snmp_exporter
After=network.target
[Service]
ExecStart=/opt/snmp_exporter/snmp_exporter --config.file=/opt/snmp_exporter/conf/snmp_*.yml --snmp.module-concurrency=3
Restart=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:"huawei"
scrape_interval:15s
scrape_timeout:10s
file_sd_configs:
-files:
-/etc/victoriametrics/vmagent/usg6000e.yml
# refresh_interval: 2m # vmagent 不支持这个参数
metrics_path:/snmp
relabel_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:usg6000e_interface,usg6000e_system,usg6000e_session
# 认证模块名称,如果团体名或认证信息不对,需要修改认证模块中的验证信息
auth:usg6000e
# 下面三个标签是自定义,可随意删除或添加
brand:Huawei
role:firewall
region:hangzhou
targets:
-172.16.10.111# 华为防火墙管理IP
-172.16.10.100# 华为防火墙管理IP
面板展示
最终面板呈现如下所示,截取了系统和接口相关的:
基于 SNMP Exporter
实现对华为防火墙在 Prometheus
体系下的监控告警适配,当然不仅仅是网络监控了,还有更多如中间件监控、数据库监控、应用监控,主机监控等等,只不过哪些都标准化了,没什么好说的,更多内容可公众号私信联系我。
📣欢迎朋友们关注公众号📢📢:【网络小斐】!
🙋♂️有想法的朋友也可以加我沟通,朋友🔘做个点赞之交!😂😂 欢迎点赞 👍、收藏 💗、关注 💡 三连支持一下,我们下期见~✨
原文始发于微信公众号(网络小斐):网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论