【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,一经查实,立即删除!

相关文章

【java11】java11新特性之增强String的API

Java11在String类上引入了一系列新的API增强&#xff0c;这些改进显著提升了开发者在处理字符串时的便捷性和效率。 以下是Java11中增强String API的主要新特性&#xff1a; String.repeat()&#xff1a;重复给定次数的字符串。返回连接的字符串。String.isBlank()&#xff1…

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

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

spring security 使用记录

spring security 使用记录 Bad credentials配置类密码匹配 Bad credentials org.springframework.security.authentication.BadCredentialsException: Bad credentialsat org.springframework.security.authentication.dao.DaoAuthenticationProvider.additionalAuthenticatio…

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

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

日志脱敏功能

前言 数据安全尤为重要&#xff0c;最为简单的防线就是防止重要信息&#xff08;身份证、手机号、姓名等&#xff09;明文显示&#xff0c;对此需要在数据库层、日志层等做好数据加解密。 思路 1、编写需加密的正则模板、加密字段 2、重写ch.qos.logback.classic.pattern.Me…

简易图像处理器的设计

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*…

C#关键字概览

C#是一种面向对象的编程语言&#xff0c;由微软开发并作为.NET框架的一部分。它具有丰富的关键字&#xff0c;用于定义程序的结构和行为。本文将详细介绍C#中的关键字&#xff0c;包括基本关键字、上下文关键字以及它们在C#编程中的使用方式。 访问修饰符 访问修饰符控制成员…

Python变量age:深入探索其内涵与运用

Python变量age&#xff1a;深入探索其内涵与运用 在Python的世界里&#xff0c;变量age不仅是一个简单的标识符&#xff0c;它更是一个承载着丰富信息和功能的实体。今天&#xff0c;我们就来深入探索这个看似简单的age变量&#xff0c;揭示其背后的奥秘和魅力。 四个方面&am…

供应SKYA21001思佳讯芯片现货

长期供应各进口品牌芯片现货&#xff1a; SKYA21001 QM11024TR13 QM12113TR13 QM42391 QM45392 QM28005 RF8020TR13 QM77033DTR13 QM56021TR13-5K 885171 QM77043 QM78207 QM77038TR13 SKY58081-11 QPF5752QTR13-5K RF7198TR13-5K SKY58255-11 SKY85720-11 …

Ubuntu中安装和配置SSH的完全指南

目录 前言 第1步&#xff1a;安装SSH服务器 第2步&#xff1a;检查防火墙设置 第3步&#xff1a;连接到SSH服务器 第4步&#xff1a;配置SSH服务器&#xff08;可选&#xff09; 更改SSH端口 禁用root登录 第5步&#xff1a;公钥认证&#xff08;建议&#xff09; 结论…

XSS Challenges 闯关游戏环境准备:深入指南

在网络安全领域&#xff0c;理解并掌握跨站脚本攻击&#xff08;XSS&#xff09;的防御技巧至关重要。为了帮助学习者深入实践XSS攻击与防御&#xff0c;“XSS Challenges” 闯关游戏提供了一个实操平台。本文将详细介绍如何准备这一环境。 1. 环境准备概述 XSS Challenges 闯…

Kubernetes 之 Secret

Kubernetes 之 Secret Secret 的定义 Secret 解决了密码、token、秘钥等敏感数据的配置问题&#xff0c;它避免了把这些敏感数据直接暴露在镜像或者 Pod 的配置文件中。但是它只是一种相对安全的策略&#xff0c;我们还是可以在容器内找到这些信息。 Secret 的认证方式 认证…

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; 这是未修改前&#…