当前位置:首页 > 路由交换 > 正文

华三交换机监控可视化

聊聊华三交换机的监控模块,华为和华三在交换机这块也是分为园区和数据中心,但是两者在 oid 和 mib 上是有些差异的。

华为园区交换机和数据中心交换机的 oid 是有一些小异同的,比如华为园区的光模块 oid 和数据中心的光模块 oid 就有异同,光功率的单位和某些 oid 含义就发生了改变。

华三园区交换机和数据中心交换机的 oid 没有什么异同,只不过在固件版本是有一些异同,特别是 S10500 系列的 V5 固件和 V7 固件是有异同的,这个异同是指 V7 固件在 V5 固件的基础上新增了很多 oid 导致如果用同一个模块的,就会出现采集的指标不一定都一致,需要在采集模块上做文章,稍微指定一下不同版本的采集模块。

那如何区分呢,我这里有一个很简单的区分方式,交换机购买年份和固件年份就可以基本上确定, V7 固件几乎都是无缝支持,没有任何问题, V5 固件就需要看设备是什么年份的,十年前的设备肯定有所差异。


配置生成

使用配置之前需要了解下华三交换机的指标模块有哪些,分别都可以采集到什么指标:

华三交换机监控可视化

建议采集的时候根据单模块的响应时间来决定需要如何定义一个 job_name 的采集时间,有些模块如果你不关心,后续也不需要告警可以不用设置采集模块,要深入理解采集原理,正确设置 job_name 和对应资源交换机的关联关系,合理设置不同类型交换机采集时间,根据固件版本和采集响应时间分类采集 job_name 当然也可以根据标签来实现不同抓取间隔和超时时间纳入不同 job_name 下,这只是思路可自行探索。


如何使用

使用 SNMP Exporter 下的生成器生成最终的采集配置文件即可,步骤如下:

第一步:

我修复好的华三 V7 固件的 mib 文件导入固定目录下如下所示:


# private 目录下是华三 V7 的私有 mib 文件
# public 目录下是华三 V7 的公有 mib 文件
root@demo:/opt/snmp_exporter/generator/mibs/h3c# ls
private  public

第二步:

使用 SNMP Exporter 源码构建生成器二进制文件:


# 前提安装好 go 环境
wget https://gitee.com/robotneo/script/raw/master/install-go.sh
# 源码编译
cd /opt
git clone https://github.com/prometheus/snmp_exporter.git
cd /opt/snmp_exporter/generator
# 生成二进制 generator
make generator

第三步:

使用 VS Code 或者 Trae 编写生成器配置文件,我可以新建文件 generator_h3ccs.yml 如下:


auths:
  h3ccs_auth:
    version:2
    community:public

modules:
# 华三交换机系统指标模块
# 适配型号S5000&S5110&S5120&S5130&S5135&S5170&S5500&S5800&S6300&S6500&S6800&S10500系列
# h3ccs_ 的前缀是指 H:H3C(华为)C:Campus(园区)S:Switch(交换机)
h3ccs_system:
    walk:
      -1.3.6.1.2.1.1.5
      -1.3.6.1.2.1.1.3
      -1.3.6.1.2.1.47.1.1.1.1.7
      -1.3.6.1.2.1.47.1.1.1.1.10
      -1.3.6.1.2.1.47.1.1.1.1.11
      -1.3.6.1.4.1.25506.2.6.1.1.1.1.19
      -1.3.6.1.4.1.25506.2.6.1.1.1.1.11
      -1.3.6.1.4.1.25506.2.6.1.1.1.1.12
      -1.3.6.1.4.1.25506.2.6.1.1.1.1.6
      -1.3.6.1.4.1.25506.2.6.1.1.1.1.8
      -1.3.6.1.4.1.25506.8.35.9.1.1.1.2
      -1.3.6.1.4.1.25506.8.35.9.1.2.1.2
      -1.3.6.1.4.1.25506.2.5.1.1.4.1.1.8
      -1.3.6.1.4.1.25506.2.5.1.1.4.1.1.4
      -1.3.6.1.4.1.25506.2.5.1.1.4.1.1.5
      -1.3.6.1.4.1.25506.2.5.1.1.4.1.1.10
      -1.3.6.1.4.1.25506.8.35.5.1.12
      -1.3.6.1.4.1.25506.2.6.1.2.1.1.5

    max_repetitions:25
    retries:3
    timeout:5s
    allow_nonincreasing_oids:false
    use_unconnected_udp_socket:false

    ......

# 华三交换机接口指标模块
# 适配型号S5000&S5110&S5120&S5130&S5135&S5170&S5500&S5800&S6300&S6500&S6800&S10500系列
h3ccs_interface:
    walk:
      -1.3.6.1.2.1.31.1.1.1.1
      -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
      -1.3.6.1.2.1.2.2.1.4
      -1.3.6.1.2.1.31.1.1.1.18
      -1.3.6.1.2.1.2.2.1.6
      -1.3.6.1.2.1.31.1.1.1.6
      -1.3.6.1.2.1.31.1.1.1.10
      -1.3.6.1.2.1.2.2.1.13
      -1.3.6.1.2.1.2.2.1.19
      -1.3.6.1.2.1.2.2.1.14
      -1.3.6.1.2.1.2.2.1.20
      -1.3.6.1.2.1.31.1.1.1.7
      -1.3.6.1.2.1.31.1.1.1.8
      -1.3.6.1.2.1.31.1.1.1.9
      -1.3.6.1.2.1.31.1.1.1.11
      -1.3.6.1.2.1.31.1.1.1.12
      -1.3.6.1.2.1.31.1.1.1.13
    
    max_repetitions:25
    retries:3
    timeout:5s
    allow_nonincreasing_oids:false
    use_unconnected_udp_socket:false
    
......

第四步:

使用生成器二进制文件以及对应的参数去生成最终的采集配置文件,如下所示:

我把华三交换机所有的 mib 文件放入对应的目录下 /opt/snmp_exporter/generator/mibs/h3c/public 和 /opt/snmp_exporter/generator/mibs/h3c/private ,把 generator_h3ccs.yml 放入 /opt/snmp_exporter/generator/conf/h3c/switch 目录下,执行如下命令生成即可:


/opt/snmp_exporter/generator/generator --fail-on-parse-errors generate -m /opt/snmp_exporter/generator/mibs/h3c/public  -m /opt/snmp_exporter/generator/mibs/h3c/private -g /opt/snmp_exporter/generator/conf/h3c/switch/generator_h3ccs.yml -o /opt/snmp_exporter/generator/conf/h3c/switch/snmp_h3ccs.yml

如果输出的信息没有任何报错,那就代表生成器的配置文件语法没有任何问题, oid 和节点名称都是存在,并且定义的模块都正常生成如下图所示:

华三交换机监控可视化

最终得到的 snmp_h3ccs.yml 文件就是最终的采集配置文件,可直接放在 SNMP Exporter 下运行加载。


Tips:建议每个配置文件都单独定义好,认证模块和指标模块名称不要有重复,这样加载采集的的时候即可加载多种品牌定义的配置文件。


运行采集

把生成好的配置文件 snmp_h3ccs.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

这里的 --config.file 使用了通配符 * 匹配加载 /opt/snmp_exporter/conf 目录下的所有 snmp_ 为前缀的采集配置文件。

把 snmp_h3ccs.yml 放入 /opt/snmp_exporter/conf/ 目录下,启动并运行测试如下:

华三交换机监控可视化

  • 认证模块名称为 h3ccs_auth
  • 指标模块名称为 h3ccs_system,h3ccs_optical,h3ccs_interface

实际采集测试的时候,可以根据实际情况去新增或者修改对应的指标模块,注意抓取间隔时间和超时时间,有些老旧交换机,固件版本低的交换机采集响应时间有些长,为了避免数据采集间隔太长,导致数据不准,可把采集频率设置大一些。


抓取配置

打开 SNMP Exporter 调试 web 页面后,测试编写的指标模块是否符合自己的需求,并且数据返回是否正常。

当这些步骤完成后,我们就要把数据采集到时序库中,由于 SNMP Exporter 是基于 pull 模式,需要配置 job_name 以定时抓取指标数据存入时序库中,交换机由于品牌、类型、分布地域不同,这里就通过文件服务发现设置采集目标,如果方便的话,可以自研 Web 集成页面添加通过 consul 注册采集对象,实现更加友好的服务发现方式,不用维护 yml 文件。

这里以 VictoriaMetrics 下的 vmagent 组件为例:


Prometheus 时序数据库抓取配置兼容,可直接复制到 prometheus.yml 下使用。

job_name 配置如下所示:


scrape_configs:
  -job_name:"h3c_switch"
    scrape_interval:30s
    scrape_timeout:20s
    file_sd_configs:
      -files:
        -/etc/victoriametrics/vmagent/h3c_sw.yml
    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.15:9116
    -source_labels:["module"]
      target_label:__param_module
    -source_labels:["auth"]
      target_label:__param_auth

由于上面使用了文件服务发现,我们需要在目录 /etc/victoriametrics/vmagent 下添加定义华为交换机的信息 huawei_sw.yml 文件模版内容如下:


- labels:
    # 固件版本为 V7 用这个
    module:h3ccs_system,h3ccs_interface,h3ccs_optical
    auth:h3ccs_auth
    brand:H3C
    role:switch
    region:beijing
targets:
    -192.168.200.10
    -192.168.200.11
-labels:
    # 固件版本为 V5 用这个
    module:h3ccs_system,h3ccs_interface,h3ccs_optical_v5
    auth:h3ccs_auth
    brand:H3C
    role:switch
    region:beijing
targets:
    -192.168.201.10
    -192.168.201.11


面板展示

最后我把采集的数据通过 Grafana 实现对应的仪表板,最终呈现效果如下:

华三交换机监控可视化
华三交换机监控可视化
华三交换机监控可视化
华三交换机监控可视化
华三交换机监控可视化
华三交换机监控可视化

到此就完成基于 SNMP Exporter 对华三园区交换机在 Prometheus 体系下的监控和数据可视化,其实可以发现园区交换机对华三全体系都兼容的。


相关文章:

文章已关闭评论!