prometheus 监控交换机流量

prometheus 监控交换机流量

1. 默认已经安装 prometheus

2. 手动验证能否获取交换机数据

用prometheus 监控交换机流量首先需要确定安装prometheus 的机器已经被交换机允许获取他的数据。命令如下:
以交换机版本为v2c为例:

snmpwalk -v 2c  10.0.1.52   -c public ifDescr  获取网卡信息

其中-v是指版本(SNMP主要有SNMPv1、SNMPV2c、SNMPv3几种最常用的版本。),-c 是指密钥(Community:团体名,用于Agent与NMS之间的认证,由交换机提供)。
如果返回数据,则说明可以进行下一步通过prometheus获取数据了,数据如下:
交换机网卡信息

3. 安装 snmp 插件

下载snmp_exporter 安装

wget https://github.com/prometheus/snmp_exporter/releases/download/v0.13.0/snmp_exporter-0.13.0.linux-amd64.tar.gz

解压并打开 snmp.yml 根据需要进行修改

tar -xzvf snmp_exporter-0.13.0.linux-amd64.tar.gz 

cd snmp_exporter-0.13.0.linux-amd64/

vim snmp.yml

由于生产上的交换机,一般都有认证才能对交换机进行访问,所以需要交换机提供 Community以及版本号,这两个需要在snmp.yml进行配置。
修改如下:

找到if_mib模块,如下图:
在这里插入图片描述
找到if_mib模块最下面,加入 version(以版本为v2c为例子),以及认证community,如下图:
在这里插入图片描述
根据我的经验,可能会遇到这样一个问题,你要监控的所有交换机的认证 community可能不一样,而我们不能在配置文件里在community后面加好几个认证码,那么解决办法是:

将 if_mib 模块的所有配置再复制一遍,改一下模块的名字,如改成 if_mib2,相应的改一下version和community即可。

启动 snmp_exporter

./snmp_exporter --config.file=snmp.yml

验证snmp监控数据

curl 'http://安装snmp_exporter的机器的IP:9116/snmp?target=安装snmp_exporter的机器的IP' 

4. 配置prometheus的配置文件

添加关于 snmp的配置,如下:
在这里插入图片描述
其中红线化掉的是安装snmp_exporter的机器的ip,而9116,是snmp_exporter的端口。如果出现多个community的情况(如上面所说),只需要再加一个job即可,如下:
在这里插入图片描述

到目前为止,prometheus通过 snmp_exporter 抓取交换机流量数据已完成。

5. 关于交换机的各项指标介绍

snmp指标

针对普通网络设备的端口,MIB的相关定义是Interface组,主要管理如下信息: ifIndex 端口索引号 ifDescr 端口描述 ifType 端口类型 ifMtu 最大传输包字节数 ifSpeed 端口速度 ifPhysAddress 物理地址 ifOperStatus 操作状态 ifLastChange 上次状态更新时间 ifInOctets 输入字节数 *ifInUcastPkts 输入非广播包数 *ifInNUcastPkts 输入广播包数 *ifInDiscards 输入包丢弃数 *ifInErrors 输入包错误数 *ifInUnknownProtos 输入未知协议包数 *ifOutOctets 输出字节数 *ifOutUcastPkts 输出非广播包数 *ifOutNUcastPkts 输出广播包数 *ifOutDiscards 输出包丢弃数 *ifOutErrors 输出包错误数 ifOutQLen 输出队长 其中,号标识的是与网络流量有关的信息。 1、获取CISCO2900端口1的上行总流量 snmpwalk -v 1 -c public 192.168.1.254 IF-MIB::ifInOctets.1 返回结果 IF-MIB::ifInOctets.1 = Counter32: 4861881 2、五秒后再获取一次 snmpwalk -v 1 -c public 192.168.1.254 IF-MIB::ifInOctets.1 返回结果 IF-MIB::ifInOctets.1 = Counter32: 4870486 3、计算结果 (后值48704863-前值4861881)/ 5=1721b/s (应该是BYTE)

6. 根据需要查找指标

由于我们要监控交换机流量,所以对我们有用的指标主要是ifHCOutOctets和ifHCInOctets,为什么是ifHCOutOctets而不是上面所说的ifOutOctets,因为在流量监控中发现了一个问题:监控交换机的网络流量,经常发现少数据的情况,prometheus绘的图断断续续的,snmp协议返回的ifInOctets和ifOutOctets都是流量的总量,如果我们需要获取一段时间的流量,我们需要取两段时间的差值,而ifOutOctets对应的counter32的数据类型计数的最大值是2的32次方减1,当超过4G的时候,计数器就会清零。当我们取数据如果正巧处于4G左右,当他清零重新计数,那我们获取的流量是不准确的。解决办法是:
查询数据换成 ifHCOutOctets和ifHCInOctets来代替ifOutOctets和ifInOctets。因为ifHCOutOctets对应的计数counter64,64位计数器足够大,可以解决这个问题。

7. 参考

https://owelinux.github.io/owelinux.github.io/2018/07/25/article8-linux-prometheus/

  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
要使用Prometheus监控华为交换机,需要安装和配置node_exporter,node_exporter是一个Prometheus的exporter,可以在Linux或Windows上运行,收集与操作系统相关的指标,并将其公开为Prometheus可以使用的指标。 以下是在Linux上配置node_exporter和Prometheus监控华为交换机的步骤: 1. 安装和配置node_exporter 下载并解压node_exporter: ``` wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz tar xvfz node_exporter-1.0.1.linux-amd64.tar.gz cd node_exporter-1.0.1.linux-amd64/ ``` 运行node_exporter: ``` ./node_exporter ``` 2. 配置华为交换机 在华为交换机上启用SNMP,并配置读取SNMP信息的Community String。 3. 配置PrometheusPrometheus的配置文件中添加以下内容: ``` scrape_configs: - job_name: 'node_exporter' scrape_interval: 5s static_configs: - targets: ['localhost:9100'] - job_name: 'huawei_switch' scrape_interval: 5s static_configs: - targets: ['<华为交换机IP>:<SNMP端口>'] labels: instance: '<华为交换机IP>' metrics_path: /snmp params: module: [if_mib] static_configs: - targets: ['<SNMP Community String>@<华为交换机IP>'] ``` 其中,将`<华为交换机IP>`和`<SNMP端口>`替换为实际的IP地址和SNMP端口,将`<SNMP Community String>`替换为实际的SNMP Community String。 4. 重启Prometheus 重启Prometheus以使配置文件生效。 5. 查看指标 在Prometheus的Web界面中,可以查看华为交换机收集到的指标。例如,可以查看接口的流量、错误率和丢包率等指标。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值