zoukankan      html  css  js  c++  java
  • 使用Prometheus监控snmp

    获取snmp信息

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

    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中一致。

    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中可以配置需要抓取的模块,不配置表示全部抓取。

    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报文数目,丢弃报文数和错误报文数等。下面给出简单的配置:

    计算接收的报文总数

    sum(ifHCInBroadcastPkts+ifHCInMulticastPkts+ifHCInUcastPkts)by(ifDescr)
    

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

    sum(rate(ifHCInBroadcastPkts[2m])+rate(ifHCInMulticastPkts[2m])+rate(ifHCInUcastPkts[2m]))by(ifDescr)
    

    计算发送的报文总数

    sum(ifHCOutBroadcastPkts+ifHCOutMulticastPkts+ifHCOutUcastPkts)by(ifDescr)
    

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

    sum(rate(ifHCOutBroadcastPkts[2m])+rate(ifHCOutMulticastPkts[2m])+rate(ifHCOutUcastPkts[2m]))by(ifDescr)
    

    计算未上送的报文总数

    sum(ifInDiscards+ifInErrors+ifInUnknownProtos)by(ifDescr)
    

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

    sum(rate(ifInDiscards[2m])+rate(ifInErrors[2m])+rate(ifInUnknownProtos[2m]))by(ifDescr)
    

    计算丢弃的报文总数

    sum(ifOutDiscards+ifOutErrors)by(ifDescr)
    

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

    sum(rate(ifOutDiscards[2m])+rate(ifOutErrors[2m]))by(ifDescr)
    

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

    (rate(ifHCInOctets{ifDescr="GigabitEthernet0/27"}[2m])*8)/(1024*1024)
    

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

    (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是否部署正确

    curl http://127.0.0.1:9116/snmp?target=1.1.1.1
    
  • 相关阅读:
    Node Sass version 5.0.0 is incompatible with^4.0.0
    解决vue-cli引入sass,报错:this.getResolve is not a function问题
    解决nuxt官方脚手架的一些坑:1、支持es6+语法 2、样式支持sass
    针对【create-nuxt-app新版本v3.2.0】构建项目时没有server配置以及运行后弹出收集匿名数据选项等问题的解决方法
    create-nuxt-app创建出来的目录没有server文件夹
    Redis安装(Windows环境下Redis安装)
    koa2中间件,路由,cookies
    用同步的写法来执行异步操作, async, awiat
    koa2 安装与启动
    练习:自己写一个容器ArrayList集合 一一数组综合练习
  • 原文地址:https://www.cnblogs.com/charlieroro/p/11118671.html
Copyright © 2011-2022 走看看