前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Prometheus监控snmp

使用Prometheus监控snmp

作者头像
charlieroro
发布2020-03-23 16:42:31
5.9K2
发布2020-03-23 16:42:31
举报
文章被收录于专栏:charlieroro
获取snmp信息

首先获取需要监控的snmp的基本信息,假设基本信息如下:

代码语言:javascript
复制
snmp服务IP: 1.1.1.1
snmp community: public
snmp exportor部署地址: 2.2.2.2
配置snmp exporter

官方下载snmp exporter的可执行文件。

此外还需要自己编译生成snmp exporter的配置文件,首先需要配置generator.yml文件,然后按照BuildingRunning中的步骤编译生成snmp.yml。generator.yml文件的配置可以参考File Format。generator.yml文件中只需要注入snmp的community即可,下面仅修改了modules.if_mib.auth字段,其余与File Format中一致。

代码语言:javascript
复制
modules:
  # Default IF-MIB interfaces table with ifIndex.
  if_mib:
    walk: [sysUpTime, interfaces, ifXTable]
    version: 2
    auth:
      community: public
    lookups:
      - source_indexes: [ifIndex]
        lookup: ifAlias
      - source_indexes: [ifIndex]
        lookup: ifDescr
      - source_indexes: [ifIndex]
        # Use OID to avoid conflict with Netscaler NS-ROOT-MIB.
        lookup: 1.3.6.1.2.1.31.1.1.1.1 # ifName
        ...

生成新的snmp.yml之后替换原有的snmp.yml即可。

配置Prometheus

Prometheus的最小配置如下,增加一个snmp的job即可,params.module中可以配置需要抓取的模块,不配置表示全部抓取。

代码语言:javascript
复制
global:
  scrape_interval: 1m
  scrape_timeout: 60s
  evaluation_interval: 20s
scrape_configs:
  - job_name: 'snmp'
    static_configs:
      - targets:
        - 1.1.1.1
    metrics_path: /snmp
#    params:
#      module: [if_mib]
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 2.2.2.2:9116

启动snmp exporter和Prometheus即可

grafana配置

snmp给出了snmp服务所在的节点(一般为交换机)的接口信息,如接口状态,名称,In/Out报文数目,丢弃报文数和错误报文数等。下面给出简单的配置:

计算接收的报文总数

代码语言:javascript
复制
sum(ifHCInBroadcastPkts+ifHCInMulticastPkts+ifHCInUcastPkts)by(ifDescr)

计算2分钟内接收到的报文总数的平均数

代码语言:javascript
复制
sum(rate(ifHCInBroadcastPkts[2m])+rate(ifHCInMulticastPkts[2m])+rate(ifHCInUcastPkts[2m]))by(ifDescr)

计算发送的报文总数

代码语言:javascript
复制
sum(ifHCOutBroadcastPkts+ifHCOutMulticastPkts+ifHCOutUcastPkts)by(ifDescr)

计算2分钟内发送的报文总数的平均数

代码语言:javascript
复制
sum(rate(ifHCOutBroadcastPkts[2m])+rate(ifHCOutMulticastPkts[2m])+rate(ifHCOutUcastPkts[2m]))by(ifDescr)

计算未上送的报文总数

代码语言:javascript
复制
sum(ifInDiscards+ifInErrors+ifInUnknownProtos)by(ifDescr)

计算2分钟内未上送的报文总数的平均数

代码语言:javascript
复制
sum(rate(ifInDiscards[2m])+rate(ifInErrors[2m])+rate(ifInUnknownProtos[2m]))by(ifDescr)

计算丢弃的报文总数

代码语言:javascript
复制
sum(ifOutDiscards+ifOutErrors)by(ifDescr)

计算2分钟内丢弃的报文总数的平均数

代码语言:javascript
复制
sum(rate(ifOutDiscards[2m])+rate(ifOutErrors[2m]))by(ifDescr)

计算GigabitEthernet0/27接口上2分钟内的入流量变化,单位Mbps

代码语言:javascript
复制
(rate(ifHCInOctets{ifDescr="GigabitEthernet0/27"}[2m])*8)/(1024*1024)

计算GigabitEthernet0/27接口上2分钟内的出流量变化,单位Mbps

代码语言:javascript
复制
(rate(ifHCOutOctets{ifDescr="GigabitEthernet0/27"}[2m])*8)/(1024*1024)

下图给出了2分钟内的入流量的变化曲线

TIPS

snmp exporter中有一些类似的监控指标如ifHCInBroadcastPkts和ifInBroadcastPkts,使用Prometheus监控时推荐使用带HC的,如ifHCInBroadcastPkts,ifHCInMulticastPkts,因为带HC的比不带HC的能表示更大长度的数据。具体原因参见这里

Debug

可以在2.2.2.2机器上使用如下命令查看snmp_exporter是否部署正确

代码语言:javascript
复制
curl http://127.0.0.1:9116/snmp?target=1.1.1.1
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取snmp信息
  • 配置snmp exporter
  • 配置Prometheus
  • grafana配置
  • TIPS
  • Debug
相关产品与服务
Prometheus 监控服务
Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档