亲爱的读者们👋
欢迎加入【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。
- 1: upsSwitchedOutletGroup
- name: upsOutletGroupStatusOutletType
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