网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus

admin 2024年12月31日23:05:11评论12 views字数 5913阅读19分42秒阅读模式

大家好,我是小斐呀。

上一期完善了基于 SNMP Exporter 对飞塔防火墙的指标采集,之前立了个 Flag 要使用 SNMP Exporter 完成对国内主流品牌网络设备的指标采集,以方便星球好友都可以把网络设备这块监控告警平滑迁移到 Prometheus 体系中,拥抱 Prometheus 就是指标监控领域的金标准,这期基于 SNMP Exporter 对华为防火墙的指标采集,从而实现对华为防火墙在 Prometheus 体系中的监控告警。

致力于打造 Prometheus 不适合网络设备监控的模版(目前有很多网络设备模版,特别是国内设备),全面淘汰 zabbix 从而使指标监控达到统一体系,也使的学习投入成本更低,适用面更广,一套监控满足所有场景。

环境介绍

采集之前,简单看看基础架构组成:

网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus

如果计划后续需要使用夜莺的告警,同时数据需要经过夜莺的话,可以把架构改造为如下方式:

网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus

夜莺对接这三个时序库的配置如下:

第一步:修改夜莺的主配置文件 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

网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus

VictoriaMetrics single node

网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus

GreptimeDB

网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus

以上时序库的选择可根据自身企业实际情况做针对性的选择组合即可。

华为防火墙部署模式是 NAT 模式,双机热备未启用单节点运行,固件版本是 V600R007C20 系列,这里使用的是 USG6000E 系列防火墙,理论上下面的采集配置支持所有 USG 型号,实际情况待测试。现在需要把华为防火墙的 SNMP 开启:

网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus

部署好 SNMP Exporter 的配置生成器,开始通过生成器生成最终指标采集配置。

配置生成

华为的配置主要有以下几大指标模块:

网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus

这些模块采集的都是最佳实践中比较常用的指标,如果需要更多其他非常见指标,可以做一些自定义的采集,下面我呈现下相关的生成器配置文件,可自行对最终的采集配置文件进行自定义生成(只列出系统模块):

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 下的生成器生成最终的采集配置文件即可,生成步骤如下:

  1. 把需要的华为防火墙的 mib 文件,包含公共的和私有的,我网盘已提供全面的;
  2. 使用 SNMP Exporter 源码构建生成器二进制文件;
  3. 编写生成器配置文件,也就是上面的 yaml 文件,我定义这个 yaml 文件名称为 generator_usg6000e.yml ;
  4. 使用生成器二进制文件以及对应的参数去生成最终的采集配置文件。

如下所示,我把华为防火墙所有的 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 和节点名称都是正常:

网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus

最终得到的 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/ 目录下,启动并运行测试如下:

网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus

抓取配置

打开 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

面板展示

最终面板呈现如下所示,截取了系统和接口相关的:

网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus
网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus
网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus
网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus
网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus

基于 SNMP Exporter 实现对华为防火墙在 Prometheus 体系下的监控告警适配,当然不仅仅是网络监控了,还有更多如中间件监控、数据库监控、应用监控,主机监控等等,只不过哪些都标准化了,没什么好说的,更多内容可公众号私信联系我。

📣欢迎朋友们关注公众号📢📢:【网络小斐】!

🙋‍♂️有想法的朋友也可以加我沟通,朋友🔘做个点赞之交!😂😂 欢迎点赞 👍、收藏 💗、关注 💡 三连支持一下,我们下期见~✨

原文始发于微信公众号(网络小斐):网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheus

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月31日23:05:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   网络监控:如何把硬件监控从Zabbix平滑迁移到Prometheushttps://cn-sec.com/archives/3576072.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息