【30天精通Prometheus:一站式监控实战指南】第16天:snmp_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们👋

  欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀

  Prometheus是云原生和DevOps的核心监控工具,我们将从基础概念开始,逐步涵盖配置、查询、告警和可视化。💪

  在接下来的30天里,我们将解锁Prometheus的实战技巧,通过案例和分享,助你深入理解其工作原理。📆

  目标:30天后,你将熟练掌握Prometheus,为未来的项目挑战做好准备!💯

  这是一段精彩旅程,期待你的加入!🎉


文章目录

  • 一、snmp_exporter概述📘
  • 二、安装snmp_exporter💾
    • 2.1 访问snmp_exporter官方网站 🌐
    • 2.2 选择适合的版本🔍
    • 2.3 下载snmp_exporter⬇️
    • 2.4 解压安装包📂
    • 2.5 运行snmp_exporter🚀
  • 三、snmp_exporter指标和配置详解📖
    • 3.1 snmp.yml
    • 3.2 snmp_exporter.service
  • 四、实战演练:生产环境搭建指南🔨
    • 4.1 创建普通用户管理snmp_exporter👤
    • 4.2 解压snmp_exporter.tar.gz📦
    • 4.3 将snmp_exporter集成到Prometheus配置中✂️
    • 4.4 更改snmp_exporter软件包名称✂️
    • 4.5 创建snmp.yml文件
    • 4.6 编辑snmp_exporter.service文件📝
    • 4.7 启动snmp_exporter.service🔌
    • 4.8 查看服务是否正常启动🔍
  • 相关资料下载地址📚

一、snmp_exporter概述📘

定义
  snmp_exporter是一个开源软件,用于收集支持SNMP(Simple Network Management Protocol,简单网络管理协议)的设备指标。它充当Prometheus监控系统与SNMP设备之间的桥梁,定期从设备获取数据并将其转换为Prometheus可读的指标数据。

功能
  数据采集:snmp_exporter能够定期向SNMP设备(如路由器、交换机、防火墙等)发送SNMP请求,获取特定的OID(Object Identifier)值。

  数据转换:将采集到的SNMP数据转换为Prometheus可以理解和处理的时间序列数据。

  指标暴露:通过HTTP或HTTPS端点暴露转换后的指标数据,供Prometheus服务器获取。

  配置灵活性:snmp_exporter支持通过YAML配置文件自定义要查询的MIB对象和OIDs,甚至设置定时任务,实现定制化的数据采集。

  SNMP版本支持:支持SNMP v1、v2c和v3三种版本,以适应不同安全需求和环境。

应用场景
  网络设备监控:用于监控路由器、交换机、防火墙等网络设备的状态和性能指标,如接口流量、CPU利用率、内存使用情况等。这有助于管理员及时了解设备运行状态,预防潜在问题。

  服务器硬件监控:跟踪服务器硬件的健康状况,包括硬盘空间、电源状态等。通过监控这些关键指标,可以确保服务器稳定运行并及时发现潜在故障。

  应用性能监控:实时查看应用的I/O性能,如数据库、存储系统的性能指标。这有助于评估和优化应用的运行效率。

  自动触发警报:当特定设备或服务出现异常时,snmp_exporter可以配合Prometheus的警报机制及时通知运维团队,以便快速响应和解决问题。

二、安装snmp_exporter💾

2.1 访问snmp_exporter官方网站 🌐

注意事项和常见问题
  1.环境配置:确保服务器满足snmp_exporter的运行要求,包括操作系统兼容性和硬件资源。

  2.依赖安装:安装snmp_exporter之前,需要安装相关的依赖包,如net-snmp和net-snmp-utils等,以确保SNMP功能的正常使用。根据操作系统的不同,可能需要使用特定的包管理器(如yum、apt等)来安装这些依赖。

  3.配置文件:在安装过程中,需要正确配置snmp_exporter的YAML配置文件,以确保能够正确地连接到SNMP设备并收集所需的指标。配置文件中需要指定要监控的设备、SNMP版本、认证信息等。

2.2 选择适合的版本🔍

  • 打开浏览器,访问snmp_exporter的官方下载页面,通常位于Github官方网站的snmp_exporter下:https://github.com/prometheus/snmp_exporter/releases

2.3 下载snmp_exporter⬇️

  • 在下载页面,你将看到不同操作系统的snmp_exporter二进制包。根据你的操作系统选择适合的版本。例如,如果你使用的是Linux 64位系统,就选择snmp_exporter-0.25.0.linux-arm64.tar.gz(其中x.x.x是版本号)。

2.4 解压安装包📂

  • 将下载的snmp_exporter压缩包解压到你想要安装的目录。你可以使用命令行工具(如tar)来完成这个步骤。解压后,你将看到一个名为snmp_exporter-x.x.x.linux-amd64的目录,其中包含snmp_exporter的二进制文件和其他相关文件。
tar -xzf snmp_exporter-0.25.0.linux-amd64.tar.gz

2.5 运行snmp_exporter🚀

  • 进入解压后的目录,并运行snmp_exporter服务器。在Linux下,你可以使用如下命令。如果一切正常,你应该能在终端看到snmp_exporter的启动日志。
cd snmp_exporter-x.x.x.linux-amd64./snmp_exporter

三、snmp_exporter指标和配置详解📖

  • 黑色:作为默认文本颜色。
  • 绿色:表示常规配置项
  • 橙色:表示具有互斥参数的配置项 / 建议开启(根据自己的场景确定需求)
  • 蓝色:不重要的配置项 / 建议不开启
  • 红色:表示关键信息和警告 / 最好开启

注意:

  • 1.相关参数配置建议仅供参考,具体要以自己生产的实际需要自行配置。
  • 2.以下配置参数介绍是基于snmp_exporter-0.25.0.linux-amd64版本说明的,其它版本会有不同。

3.1 snmp.yml

auths:public_v1:community: publicsecurity_level: noAuthNoPrivauth_protocol: MD5priv_protocol: DESversion: 1public_v2:community: publicsecurity_level: noAuthNoPrivauth_protocol: MD5priv_protocol: DESversion: 2
modules:apcups:walk:- 1.3.6.1.4.1.318.1.1.1.12- 1.3.6.1.4.1.318.1.1.1.2- 1.3.6.1.4.1.318.1.1.1.3- 1.3.6.1.4.1.318.1.1.1.4- 1.3.6.1.4.1.318.1.1.1.7.2- 1.3.6.1.4.1.318.1.1.10.2.3.2- 1.3.6.1.4.1.318.1.1.26.10.2.2- 1.3.6.1.4.1.318.1.1.26.4.3- 1.3.6.1.4.1.318.1.1.26.6.3- 1.3.6.1.4.1.318.1.1.26.8.3get:- 1.3.6.1.4.1.318.1.1.1.8.1.0metrics:- name: upsOutletGroupStatusTableSizeoid: 1.3.6.1.4.1.318.1.1.1.12.1.1type: gaugehelp: The number of outlet groups for the UPS. - 1.3.6.1.4.1.318.1.1.1.12.1.1- name: upsOutletGroupStatusIndexoid: 1.3.6.1.4.1.318.1.1.1.12.1.2.1.1type: gaugehelp: The index to the outlet group entry. - 1.3.6.1.4.1.318.1.1.1.12.1.2.1.1indexes:- labelname: upsOutletGroupStatusIndextype: gaugelookups:- labels:- upsOutletGroupStatusIndexlabelname: upsOutletGroupStatusNameoid: 1.3.6.1.4.1.318.1.1.1.12.1.2.1.2type: DisplayString- labels: []labelname: upsOutletGroupStatusIndex......

auths

  • public_v1 和 public_v2
      自定义的认证名称,可以根据需要进行命名
  • community: public
      SNMP 团体字符串,相当于密码,用于 SNMP v1 和 v2c 的身份验证
  • security_level: noAuthNoPriv
      安全级别,noAuthNoPriv 表示不进行身份验证和加密
  • auth_protocol: MD5
      身份验证协议,虽然这里指定了 MD5,但在 noAuthNoPriv 安全级别下它实际上不会被使用
  • priv_protocol: DES
      加密协议,同样地,在 noAuthNoPriv 安全级别下,DES 也不会被使用
  • version: 1
      SNMP 版本,可以是 1、2 或 3

modules

  • apcups
      一个自定义的模块名称,代表 APC UPS 设备
  • walk
      一个 OID 列表,snmp_exporter 会遍历这些 OID 并收集它们的信息。这些 OID 通常对应于 SNMP MIB 中的表或组
  • get
      一个 OID 列表,snmp_exporter 会直接获取这些 OID 的值,而不是遍历。这些 OID 通常对应于单个值,而不是表
  • metrics
      定义如何从收集的 SNMP 数据中生成 Prometheus 指标
    • name: upsOutletGroupStatusOutletType
        Prometheus 指标的名称
    • oid: 1.3.6.1.4.1.318.1.1.1.12.1.2.1.5
        对应的 SNMP OID
    • type: gauge
        指标类型,如 gauge(表示一个可以任意变化的数值)、counter(表示一个只会增加的数值)等
    • help
        指标的描述信息
    • indexes
        定义指标的索引,通常用于处理 SNMP 表。每个索引包含一个 labelname(标签名称)和一个类型
    • lookups
        用于从其他 OID 查找额外的标签值。每个查找包含一个或多个 labels(用于查找的 OID),一个 labelname(生成的标签名称),一个 oid(查找的 OID),和一个类型(如 DisplayString)
    • enum_values
        
      • 1: upsSwitchedOutletGroup
          用于将数字值映射到更具可读性的字符串。在这个例子中,数字 1 被映射到字符串 upsSwitchedOutletGroup
      • 2: upsMainOutletGroup
          数字 2 被映射到 upsMainOutletGroup。

3.2 snmp_exporter.service

  • - -[no-]snmp.wrap-large-counters
      控制是否将大计数器(如接口流量计数器)的值进行“包装”处理,以防止计数器溢出。当启用时,如果计数器的值达到其数据类型的最大值并回绕到零,snmp_exporter 会尝试正确处理这种情况,以便在 Prometheus 中得到连续增长的计数器值。加上 no- 前缀会禁用这个功能
  • - -snmp.source-address=“”
      设置 SNMP 请求的源 IP 地址。在某些网络环境中很有用,特别是当 SNMP 设备需要基于源地址进行访问控制时。留空则表示使用默认的网络接口地址
  • - -config.file=snmp.yml
      指定包含 SNMP 设备和模块配置的文件路径。这个文件定义了要监控的设备列表、使用的 SNMP 模块以及其他相关配置
  • - -[no-]dry-run
      启用这个选项后,snmp_exporter 会加载配置并验证其有效性,但不会实际执行任何 SNMP 请求或暴露指标。主要用于测试配置文件的正确性。加上 no- 前缀会禁用这个功能
  • - -snmp.module-concurrency=1
      设置同时执行的 SNMP 请求的并发数。这个值可以根据你的系统和网络条件进行调整,以提高数据采集的效率。但是过高的并发数可能会导致资源消耗过多或网络拥塞
  • - -web.telemetry-path=“/metrics”
      指定暴露 Prometheus 指标的 HTTP 路径。默认情况下,这个路径是 /metrics
  • - -[no-]web.systemd-socket
      当这个选项启用时,snmp_exporter 会使用 systemd 提供的 socket 激活功能来监听网络请求。通常用于与 systemd 的服务管理集成。加上 no- 前缀会禁用这个功能,使得 snmp_exporter 直接监听指定的网络地址和端口。
  • - -web.listen-address=:9116
      设置 snmp_exporter 监听的 IP 地址和端口。:9116 表示监听所有可用的网络接口上的 9116 端口。可以根据需要更改这个地址和端口
  • - -web.config.file=“”
      用于指定 web 服务器的配置文件,在 snmp_exporter 的上下文中不常用。留空表示不使用额外的 web 配置。

四、实战演练:生产环境搭建指南🔨

4.1 创建普通用户管理snmp_exporter👤

useradd deploy

4.2 解压snmp_exporter.tar.gz📦

注意:
  我的是x86,所以使用snmp_exporter-0.25.0.linux-amd64.tar.gz,您可以使用uname -a命令查看系统架构

tar xvf snmp_exporter-0.25.0.linux-amd64.tar.gz -C /home/deploy/

4.3 将snmp_exporter集成到Prometheus配置中✂️

  将snmp_exporter集成到Prometheus配置中,确保数据能够正常采集。编辑Prometheus的配置文件(通常是prometheus.yml),在scrape_configs部分添加snmp_exporter的配置。告诉Prometheus将采集snmp_exporter:9116 的数据。

  - job_name: 'snmp_exporter'static_configs:- targets:- targets: ["localhost:9116 "]labels:exporter: snmp_exporter

4.4 更改snmp_exporter软件包名称✂️

mv snmp_exporter-0.25.0.linux-amd64 /home/deploy/snmp_exporter

4.5 创建snmp.yml文件

  这个文件太大了,可自行从百度网盘下载snmp.yml

4.6 编辑snmp_exporter.service文件📝

cat > /etc/systemd/system/snmp_exporter.service <<EOF
[Unit]
Description=Snmp Exporter
After=network.target[Service]
Type=simple
User=deploy
Group=deploy
ExecStart=/home/deploy/snmp_exporter/snmp_exporter \
--config.file=/home/deploy/snmp_exporter/snmp.yml \
--web.listen-address=:9116
ExecReload=/bin/kill -HUP
Restart=on-failure[Install]
WantedBy=multi-user.target
EOF

4.7 启动snmp_exporter.service🔌

sudo systemctl daemon-reloadsudo systemctl enable --now snmp_exporter.service

4.8 查看服务是否正常启动🔍

# 查看service服务是否启动
sudo systemctl status snmp_exporter.service# 查看端口是否存在
sudo ss -ntulp | grep 9116

相关资料下载地址📚

  • 官方文档:https://prometheus.io/docs/introduction/overview/
  • 下载地址:https://github.com/prometheus/prometheus/releases/tag/v2.52.0
  • 文档地址:https://prometheus.io/docs/prometheus/latest/installation/
  • 离线包下载链接:https://pan.baidu.com/s/1ANF_AlFnM5_FMIbKBuzBmg 提取码:yqpt

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

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

相关文章

ldap协议(常用于统一身份认证)与dict协议(在线词典)

文章目录 LDAPDICT LDAP LDAP&#xff08;Light Directory Access Portocol&#xff09;&#xff0c;轻量目录访问协议。 目录是一个为查询、浏览和搜索而优化的数据库&#xff0c;它成树状结构组织数据&#xff0c;类似文件目录一样。 目录数据库和关系数据库不同&#xff0c…

Docker安装极简版(三分钟搞定)

什么是Docker? Docker是一个开源的应用容器引擎&#xff0c;它允许开发者打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的Linux机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口。 化。容器是…

简易图像处理器的设计

1 概述 Python是一种高级、通用、解释型的编程语言&#xff0c;由Guido van Rossum于1991年创造。它被设计为易读易写的语言&#xff0c;具有简洁而清晰的语法&#xff0c;使得它成为许多领域的首选语言&#xff0c;如Web开发、科学计算、人工智能、数据分析等。结合本科阶段以…

三维地图校内导航系统解决方案

在如今的数字化时代&#xff0c;越来越多的学校开始实施智慧校园计划&#xff0c;旨在为学生和教师提供更高效、便捷的学习和教学环境。智慧校园运用互联网、大数据、人工智能等技术&#xff0c;对校园内各信息进行收集、整合、分析和应用&#xff0c;实现教学、管理、服务等多…

【matlab】绘图插入并放大/缩小子图

参考链接 代码分为两个&#xff1a;绘图代码与magnify.m 绘图代码就是普通的绘图代码&#xff0c;以下为例 %https://zhuanlan.zhihu.com/p/655767542 clc clear close all x 0:pi/100:2*pi; y1 sin(x); plot(x,y1,r-o); hold on y2sin(x)-0.05; y3sin(x)0.05; xlim([0 2*…

eclipse-向Console控制台输出信息

首先这里主要用到的是org.eclipse.ui.console这个包&#xff0c;所以现在顺道先来了解一下&#xff1a; org.eclipse.ui.console是一个可扩展的console视图插件&#xff0c;利用它可以实现各种console&#xff0c;并把它们显示出来。该插件本身就实现了一个Message Console&…

本地 Java API 访问云上 HDFS 集群的问题与解决

前言 这篇文章默认是已经在云上配置好了 Haoop 集群&#xff0c;因此本文主要是记录一些可能会出现错误的地方。 如果还不会配置 Hadoop 集群&#xff0c;那么可以参考本专栏的另一篇文章&#xff1a;云上配置 Hadoop 集群详解 另外在进行本文的学习之前也建议先看看该文章&…

边缘计算的AI小板——OrangePi AI Pro

简介 OrangePi AI Pro是一款基于Allwinner H6处理器的嵌入式AI计算设备&#xff0c;适用于物联网和边缘计算。它具有强大的性能、低功耗、多接口和小尺寸。 本文分为三个部分&#xff1a; 一、对该板进行简单的开箱介绍。 二、 将SD卡中的系统迁移到由于该板支持SD卡、SSD…

必看——怎么让网站实现HTTPS访问?

让网站实现HTTPS访问的步骤可以简化为以下几个基本步骤&#xff0c;非常适合非技术背景人士理解&#xff1a; 1. 申请SSL证书&#xff1a; - SSL证书是实现HTTPS的关键&#xff0c;它能加密网站数据&#xff0c;保证用户信息的安全。你可以从一些提供免费SSL证书的机构&#xf…

Spring boot集成mybatis

Spring boot集成mybatis maven依赖 我的spring boot版本是2.5.0&#xff0c;集成mybatis&#xff0c;首先需要数据库的支持&#xff0c;这里我选择mysql数据库&#xff0c;版本是8.0.11&#xff0c;然后使用druid连接池&#xff0c;其次就需要加上mybatis的依赖。 <!--mys…

[ue5]建模场景学习笔记(2)——用vectornoise降低重复率

1.问题分析&#xff1a; 利用改uv的方式降低重复率并不理想&#xff0c;在一定程度上的确能够达到降低重复率的效果&#xff0c;但远看仍然有较清晰的重复效果&#xff0c;尝试优化一下。 2.操作实现&#xff1a; 1.首先先看一下修改后的效果&#xff1a; 这是未修改前&#…

【Web API DOM02】如何获取、操作DOM元素

一&#xff1a;获取DOM元素 1 根据CSS选择器获取 语法格式如下&#xff1a; &#xff08;1&#xff09;选中一个DOM元素 document.querySeletor(CSS选择器) <ul><li>1</li><li>2</li><li>3</li> </ul> document.querySel…

Github上一款开源、简洁、强大的任务管理工具:Condution

Condution 是一款开源任务管理工具&#xff0c;它以简洁易用、功能强大著称。它旨在为用户提供一个简单高效的平台&#xff0c;帮助他们管理日常任务、提高工作效率。 1. Condution 的诞生背景 现如今&#xff0c;市面上存在着许多任务管理软件&#xff0c;但它们往往价格昂贵…

如何不用口吐莲花,照样成为社交达人

一、教程描述 每个人的一生&#xff0c;70%的时候都在沟通&#xff0c;与老板沟通、与家人沟通、与朋友沟通、与陌生人沟通&#xff0c;等等&#xff0c;但是你真的会沟通么&#xff1f;不论是工作上跟上司、同事和客户间的沟通&#xff0c;还是生活中与家人、朋友、伴侣间的沟…

[ICPC2024 Xi‘an I] ICPC2024 邀请赛西安站(7/8/13)

心得 [ICPC2024 Xian I] ICPC2024 邀请赛西安站重现赛 - 比赛详情 - 洛谷 7表示赛时ac了7个&#xff0c;8表示含补题总共ac数&#xff0c;13表示题目总数 题目 M. Chained Lights 打表&#xff0c;发现只有k1是YES //#include <bits/stdc.h> #include<iostream&…

软考 系统架构设计师系列知识点之SOME/IP与DDS(1)

本文内容参考&#xff1a; 车载以太网 - SOME/IP简介_someip-CSDN博客 https://zhuanlan.zhihu.com/p/369422441 什么是SOME/IP?_someip-CSDN博客 SOME/IP 详解系列&#xff08;1&#xff09;—— 概述_some ip-CSDN博客 深入浅出SOME/IP协议&#xff1a;基本概念和原理-…

OJ3376无尽的石头问题

答案&#xff1a; #include<bits/stdc.h> using namespace std; const int N10e7; int fx(int n) {int sum0;while(n){sum(n%10);n/10;}return sum; } int main() {int t,n,x;cin>>t;while(t--){cin>>n;int count0;for(int i1;i<N;){if(in){cout<<…

在github上创建(上传、关联)自已的项目

目录 创建一个github项目并进行开发。 1.github创建空项目 2. git clone 项目 3. 将项目关联 创建一个github项目并进行开发。 1.github创建空项目 右边的New 然后按步创建就行 2. git clone 项目 复制这个连接 然后在终端&#xff1a;git clone [刚才复制的连接] 3. 将…

解读 Explainable Image Similarity Integrating Siamese Networks and Grad-CAM

给出论文&#xff08;Explainable Image Similarity Integrating Siamese Networks and Grad-CAM&#xff09;的内容解读、代码运行说明 论文链接&#xff1a;J. Imaging | Free Full-Text | Explainable Image Similarity: Integrating Siamese Networks and Grad-CAM (mdpi.c…

2024年武汉东湖高新中级职称报名时间是什么时候?

2024年武汉市东湖高新中级职称上半年批次报名已经截止了&#xff0c;下半年东湖高新至少还有一次报名机会&#xff0c;所以各位东湖高新区评职称的朋友们&#xff0c;不要错过这次了。 2024年武汉东湖高新区中级职称报名条件&#xff1a; 1.东湖高新区社保满足1年&#xff0c;近…