使用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文件,然后按照Building和Running中的步骤编译生成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
使用Prometheus监控snmp的更多相关文章
- Prometheus(三):Prometheus监控交换机(snmp)
默认已安装Prometheus服务,服务地址:192.168.56.200 一.获取交换机snmp信息 snmp服务IP(交换机IP):172.20.2.83 snmp community:dfete ...
- Prometheus 监控领域最锋利的“瑞士军刀”
原文:https://mp.weixin.qq.com/s/Cujn6_4w8ZcXCOWpoAStvQ 一.Kubernetes 容器监控的标配—Prometheus 1.简介 Prometheus ...
- 03 . Prometheus监控容器和HTTP探针应用
Eeporter是什么及来源? 是什么? 广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter.而Exporter的一个实例称为target,如下所示,Prom ...
- prometheus监控系统
关于Prometheus Prometheus是一套开源的监控系统,它将所有信息都存储为时间序列数据:因此实现一种Profiling监控方式,实时分析系统运行的状态.执行时间.调用次数等,以找到系统的 ...
- Kubernetes集群部署史上最详细(二)Prometheus监控Kubernetes集群
使用Prometheus监控Kubernetes集群 监控方面Grafana采用YUM安装通过服务形式运行,部署在Master上,而Prometheus则通过POD运行,Grafana通过使用Prom ...
- SpringCloud使用Prometheus监控(基于Eureka)
本文介绍SpringCloud使用Prometheus,基于Eureka服务发现. 1.Prometheus介绍 在之前写过两篇有关Prometheus使用的文章,如下: <SpringBoot ...
- SpringBoot使用prometheus监控
本文介绍SpringBoot如何使用Prometheus配合Grafana监控. 1.关于Prometheus Prometheus是一个根据应用的metrics来进行监控的开源工具.相信很多工程都在 ...
- Prometheus 监控Haproxy
Prometheus 监控Haproxy 普罗米修斯是一个完整的监控和趋势系统,包括基于时间序列数据的内置和主动刮削,存储,查询,绘图和警报,以下使用Prometheus+grafana对Haprox ...
- 使用 Docker 部署 Grafana + Prometheus 监控 MySQL 数据库
一.背景 在平时开发过程当中需要针对 MySQL 数据库进行监控,这里我们可以使用 Grafana 和 Prometheus 来实现监控功能.Grafana 是一款功能强大的仪表盘面板,支持多种数据源 ...
随机推荐
- Delphi - Logs记录,函数实现MsgDsp
Logs记录-函数实现MsgDsp 大多数时候,我们不太希望消息以交互的形式出现,这个时候我们可以在窗体上放置一个Memo,然后单独开一个线程进行监视,从而实现把消息实时的显示出来,便于开发者分析. ...
- 解决 new file()在IOS下不兼容 的问题
最近 做项目,做的要是拍照后上传相片,以file格式上传..所以 拍照 后用canvas生成base64格式再转file..在PC和安卓都是没有问题,到IOS上面不行..new file后就是生成一个 ...
- css flex兼容性
我测试了一下css flex的兼容性 已经可以兼容到IE10了呀 为啥MDN上面的IE兼容性还是兼容到IE11 有点更新不及时的感觉
- qt 操作串口 QSerialPort
准备工作 *.pro中加入 QT += serialport 初始化 void MainWindow::initPort() { //读取串口信息 foreach (const QSerialPort ...
- SAP里SE38设置模板
经验丰富些的大佬们都会有一套自己的风格,比如report主程序里几个form,常见的fieldcat的宏定义,常见的一些数据定义等等. 1.使用事物代码SE38进入编辑器. 2.点击客户端最右下角的文 ...
- MySQL数据库(五)--用户管理、pymysql模块
一.用户管理(权限管理) 在MySQL中自带的mysql数据库中有4个表用于用户管理的 # 优先级从高到低 user > db > tables_priv > columns_pri ...
- Flask的实例化参数及对app的配置
目录 1.调试模式初测 2.app.config中的其他配置参数详解 3.修改config配置的方式(from_object用法) 3.1直接对app.config进行修改: 3.2使用类的方式导入: ...
- mysql 忘记密码,赋予用户权限,两台服务器的数据库之间快速导入
mysql 忘记密码: 1.首先service mysql stop mysqld --skip-grant-tables & 开启数据库 然后就可以mysql -uroot 直接进数据库, ...
- 查看 Python 对象的属性
1 .dir函数可以返回一个对象的所有属性和方法. 示例:查看 int 对象的属性和方法 示例: 查看 dict 对象的属性和方法 标红的这些是不是遇到过? 2.help()调用内置帮助系统 示例 3 ...
- discuz开发实现自动获取后台入口代码
一般discuz后台入口默认是admin.php,不过部分用户为了安全可能会修改后台入口文件名称,可以用代码 '.ADMINSCRIPT.'?frame=no&action=tools& ...