Prometheus监控之SNMP Exporter介绍和数据展现

news2025/1/11 15:02:19

1 SNMP协议介绍

SNMP协议全称是:Simple Network Management Protocol,译为简单网络管理协议,是作为TCP/IP网络管理标准协议,为不同的设备提供统一接口,实现了网络设备之间的统一管理。

SNMP协议分为三个版本:

  1. SNMPv1是最初版本,基于团体名认证,安全性较差,返回报文的错误码较少。
  2. SNMPv2c也采用团体名认证,引入了GetBulk和Inform操作,支持更多的标准错误码信息和更多的数据类型。
  3. SNMPv3主要在安全性方面进行了增强,提供了基于USM(User Security Module)的认证加密和基于VACM(View-based Access Control Model)的访问控制。

不管哪个版本,SNMP协议由外部的网络管理系统NMS和运行在被管设备内部的SNMP Agent、被管对象和管理信息库MIB组成:

MIB数据库中的OID树状存储结构:树的节点表示被管理对象,它可以用从根开始的一条路径唯一地识别,这条路径就称为OID,如system的OID为1.3.6.1.2.1.1,interfaces的OID为1.3.6.1.2.1.2

可以从OID(如system的OID为1.3.6.1.2.1.1,interfaces的OID为1.3.6.1.2.1.2)中获取到被管理设备的当前运行状态。

2 SNMP Exporter介绍

SNMP Exporter是Prometheus的官方Exporter项目之一,可以容器运行或者二进制运行,项目地址:snmp_exporter。Exporter通过snmp.yml配置文件,将SNMP Agent的数据暴露在SNMP Exporter中,供Prometheus监控被管理设备的运行状态。

例如一个最简单的snmp.yml配置文件:

 
Linux:
version: 2
auth:
community: snmpexport
walk:
- 1.3.6.1.4.1.2021.11
get:
- 1.3.6.1.2.1.1.3
metrics:
- name: sysUpTime
oid: 1.3.6.1.2.1.1.3
type: gauge
help: The time (in hundredths of a second) since the network management portion
of the system was last re-initialized. - 1.3.6.1.2.1.1.3
- name: ssCpuUser
oid: 1.3.6.1.4.1.2021.11.9
type: gauge
help: The percentage of CPU time spent processing user-level code, calculated
over the last minute - 1.3.6.1.4.1.2021.11.9
- name: ssCpuSystem
oid: 1.3.6.1.4.1.2021.11.10
type: gauge
help: The percentage of CPU time spent processing system-level code, calculated
over the last minute - 1.3.6.1.4.1.2021.11.10
- name: ssCpuIdle
oid: 1.3.6.1.4.1.2021.11.11
type: gauge
help: The percentage of processor time spent idle, calculated over the last minute
- 1.3.6.1.4.1.2021.11.11

这个配置文件中有一个模块为Linux,SNMP版本为v2c,团体名称为snmpexporter,监控的OID有:1.3.6.1.4.1.2021.11和1.3.6.1.2.1.1.3,根据OID所在的树状级别,采用不同方式的查询操作(walk或get),被监控的对象有sysUpTime、ssCpuUser、ssCpuSystem、ssCpuIdle

  • walk:实际上是SNMP GETNEXT,从SNMP Agent中获取一个或多个参数的下一个参数值。
  • get:从SNMP Agent中获取一个或多个参数值。

实际上还有GetBulk操作(SNMPv1不支持),基于GETNEXT实现,相当于执行多次GetNext,但是SNMP Exporter中不具备该查询操作。

3 使用SNMP Exporter监控Linux操作系统

被监控设备操作系统版本:Oracle Linux 7.9,SELinux状态:Permissive

3.1 监控设备安装和配置SNMP

  1. 安装net-snmp
    yum install -y net-snmp
  2. 配置SNMP团体名称
    echo 'rocommunity snmpexport 192.168.1.200'>/etc/snmp/snmpd.conf
  3. 重启snmpd服务
    systemctl restart snmpd
  4. 检查snmpd服务
    systemctl status snmpd|grep -E "Active"
    输出结果参考:
    Active: active (running) since Fri 2022-05-06 10:23:56 CST; 2min 4s ago
  5. 防火墙放通snmp服务
    firewall-cmd --permanent --add-service=snmp

    firewall-cmd --add-port=161/udp --permanent

3.2 docker部署SNMP Exporter

  1. docker中下载snmp exporter镜像
    docker pull prom/snmp-exporter
  2. 创建snmp.yml配置文件目录
    mkdir /home/samroot/exporter/snmp
  3. 手动创建snmp.yml配置文件,参考《2 SNMP Exporter介绍》章节中的snmp.yml示例文件
  4. 根据snmp exporter镜像创建容器
    docker create --name snmp_to_117 -v /home/samroot/exporter/snmp/:/etc/snmp_exporter/ -p 9116:9116 prom/snmp-exporter
  5. 启动容器
    docker container start snmp_to_117
  6. 检查容器运行情况
    docker container ps|grep snmp
    输出结果参考
    f06810ffa6d6 prom/snmp-exporter "/bin/snmp_exporter …" 8 days ago Up 3 days 0.0.0.0:9116->9116/tcp snmp_to_117
  7. 防火墙放通9116端口
    firewall-cmd --permanent --add-port=9116/tcp

3.3 http访问snmp exporter,查看暴露出来的监控数据

  1. 浏览器访问snmp exporter的http端口,输入被监控设备的IP地址和模块名称,点击Submit

  1. SNMP Exporter已经从被监控设备的SNMP Agent中获取到一些设备的运行状态

4 将收集到的数据存到Prometheus中

在Prometheus的配置文件中添加SNMP Exporter的地址,即可将收集到的数据存到Prometheus中。

  1. 修改prometheus配置文件prometheus.yml
 
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
#采集snmp exporter监控数据
- job_name: 'snmp'
static_configs:
- targets:
- 192.168.1.117
metrics_path: /snmp
params:
module: [Linux]
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 192.168.1.200:9116
  1. 使配置文件生效
    curl -XPOST http://localhost:9090/-/reload
  2. 确认Prometheus能够正常采集到snmp exporter的数据

5 配合Grafana实现可视化

  1. 配置dashboard的的名称和host变量:

  2. 新建plane,配置CPU使用率监控

  3. 保存退出 

6 参考文章 

什么是SNMP:什么是SNMP - 华为

SNMP_Exporter:GitHub - prometheus/snmp_exporter: SNMP Exporter for Prometheus

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/915890.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java-进程调度算法

文章目录 为什么要设置进程调度算法&#xff1f;分类1. 先进先出&#xff08;FIFO&#xff09;算法优缺点FIFO代码示例 2. 短作业优先&#xff08;SJF&#xff09;算法优缺点示例代码 3. 优先级算法&#xff08;Priority scheduling&#xff09;优缺点示例代码 4. 时间片轮转算…

java 高级面试题整理(薄弱技术)

session 和cookie的区别和联系 session1.什么是session Session是另一种记录客户状态的机制&#xff0c;不同的是Cookie保存在客户端浏览器中&#xff0c;而Session保存在服务器上。客户端浏览器访问服务器的时候&#xff0c;服务器把客户端信息以某种形式记录在服务器上。这就…

Wireshark数据抓包分析之HTTP协议

一、实验目的&#xff1a; 主要时熟悉wireshark的使用 二、预备知识&#xff1a; HTTP协议的相关知识 what fk&#xff0c;原来只要在右页点击切换&#xff0c;就可以开启2台不同的机器欸&#xff01;nice 三、实验过程&#xff1a; 1.在机器1中通过管理员身份运行hfs之后&a…

5G网络优化基础班9月11号开班已定,零基础系统教学,带你入门+进阶+实战+就业!

1G、2G、3G时代&#xff0c;更多的是让人们了解和开始使用移动通讯&#xff0c;而随着技术的不断地迭代更新&#xff0c;4G改变生活&#xff0c;5G或将改变社会。5G是第五代移动通信技术的简称&#xff0c;它是一种全新的无线通信技术&#xff0c;将为人们带来更快、更稳定、更…

1.文章复现《热电联产系统在区域综合能源系统中的定容选址研究》(附matlab程序)

0.代码链接 文章复现《热电联产系统在区域综合能源系统中的定容选址研究》&#xff08;matlab程序&#xff09;-Matlab文档类资源-CSDN文库 1.简述 本文采用遗传算法的方式进行了下述文章的复现并采用电-热节点的方式进行了潮流计算以降低电网的网络损耗 分析了电网的基本数…

Java学习笔记38

Java笔记38 注解 什么是注解 Annotation是从 JDK 5.0 开始引入的新技术。Annotation的作用︰ 不是程序本身&#xff0c;可以对程序作出解释。&#xff08;这一点和注释 - comment没什么区别&#xff09;可以被其他程序&#xff08;比如编译器等&#xff09;读取。 Annotatio…

系统认知篇:防腐层、门面模式及适配模式的本质

门面模式和适配器模式是代码级的设计模式&#xff0c;而防腐层本质是一种 防御型策略 &#xff0c;在更高的层级对系统进行解耦 1 关于防腐层 Anti-Corruption Layer(ACL) 如下&#xff1a; Implement a faade or adapter layer between different subsystems that dont share…

用断言更好地实现替换重复出现的单词

断言是指对匹配到的文本位置有要求。也就是说&#xff0c;在有些情况下&#xff0c;我们对要匹配的文本的位置也有一定的要求。为了解决这个问题&#xff0c;正则中提供了一些结构&#xff0c;只用于匹配位置&#xff0c;而不是文本内容本身&#xff0c;这种结构就是断言。常见…

C++_Linux报错问题记录

1、致命错误&#xff1a;vector&#xff1a;没有那个文件或目录 解决&#xff1a;.c文件只会引用C语言的标准库&#xff0c;vecter是属于C的语法&#xff0c;把文件名称改成cpp即可 2、.cpp文件中下面编译语句报错&#xff1a;对‘std::cout’未定义的引用 gcc -o test test.…

docker 报错

问题说明&#xff1a;我是服务器上面的docker拉到本地30卡想用的&#xff0c;但是失败&#xff0c;报错如下&#xff1a; 服务器上面显存驱动是450&#xff0c;本地30卡驱动是470 nvidia-docker run -it --name 20230821_3 --shm-size 16g -p 10029:22 --privileged 20230821_i…

关于cloudflare的“检查站点连接是否安全”一直反复转圈的问题

前一段时间访问不少网站都会出现类似以下的信息&#xff1a; 其中很多时候哦是没有红色框框一栏&#xff0c;就是拼命在转圈和刷新页面&#xff0c;等上一个小时都没用。以上情况看很多网上的说法是卸载浏览器安装的插件。我寻思我也没安装过什么插件。 对于试过网上不少方法但…

java八股文面试[java基础]—— hashCode 与 equals 区别 == 与 equals的区别

两个对象的hashCode()相同时&#xff0c;equals()相等吗&#xff1f;_两个对象的hashcode一样,equal一样么_不想当个程序员的博客-CSDN博客 equals()&#xff1a;比较的是非基本类型的数据的引用地址&#xff08;即内存地址&#xff09;是否相同&#xff0c;但是对于重写equal…

Vulnhub: DOUBLE: 1靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.209 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.209 目标80端口 sendcommand.php页面源码 写入webshell <?php system($_GET["cmd"]);?> 执行命令 ht…

不修改原图片,自动添加水印

只要添加我写的一个DynaWatermark2.1.1.jar的包,然后在web.xml里配置一下,哪个文件夹下的图片需要动态水印,就可以啦!以后通过页面访问这个文件夹下的图片,就会自动加上水印.但不会修改文件夹里图片本身.   这个jar里面有添加图片水印和文字水印两个servlet.(不能两个都配置,…

《golang设计模式》第二部分·结构型模式-03-组合模式(Composite)

文章目录 1. 概述1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概述 将叶子节点和复合节点组合起来&#xff0c;定义一个抽象接口遍历他们 1.1 角色 Component&#xff08;抽象构件&#xff09;&#xff1a;为叶子构件和复合构件声明接口&#xff0c;定义了结构…

Docker安装并运行Alertmanager

Linux下安装Docker请参考&#xff1a;Linux安装Docker 简介 Alertmanager是一个独立的告警模块&#xff0c;接收Prometheus等客户端发来的警报&#xff0c;之后通过分组、删除重复等处理&#xff0c;并将它们通过路由发送给正确的接收器&#xff1b;告警方式可以按照不同的规…

openCV实战-系列教程2:阈值与平滑处理(图像阈值/图像平滑处理/高斯/中值滤波)、源码解读

1、图像阈值 t图像阈值函数&#xff0c;就是需要判断一下像素值大于一个数应该怎么处理&#xff0c;小于一个数应该怎么处理 ret, dst cv2.threshold(src, thresh, maxval, type) 参数解析&#xff1a; src&#xff1a; 原始输入图&#xff0c;只能输入单通道图像&#…

/root/.ssh/config line 2: Bad protocol 2 host key algorithms ‘+ssh-rsa‘.

文章目录 1、问题2、查看openssh版本3、解决问题4、重新生成密钥5、查看是否可连接工蜂 1、问题 ssh访问工蜂报错&#xff1a; [rootlocalhost .ssh]# ssh -T gitgit.code.tencent.com /root/.ssh/config line 2: Bad protocol 2 host key algorithms ‘ssh-rsa’. 2、查看o…

如何识别芯片引脚1

当从上面看芯片时&#xff0c;引脚总是按逆时针方向编号。这来自于旧时代的电子管&#xff0c;当从电子管的底部看时&#xff0c;引脚是按顺时针方向编号的。 芯片的标记方式有多种&#xff0c;但是总有一些惯例可循。换句话说&#xff0c;如果你在一个未知的芯片上发现了这些标…

Linux的基础编程——Linux常用操作总结(十一)

前言&#xff1a; 前面我们已经对在Linux系统上的一些常用操作已经有了一个简单的入门与了解&#xff0c;后面的学习中我们还需要对这些操作常加练习&#xff0c;现在让我们对之前的一些常用操作进行的一个简单的总结吧 目录 一、软件安装 CentOS系统使用&#xff1a; Ubun…