别再傻傻翻文档了!用这个API一键获取Prometheus里所有监控指标(附Node Exporter实战清单)

张开发
2026/4/8 23:13:13 15 分钟阅读

分享文章

别再傻傻翻文档了!用这个API一键获取Prometheus里所有监控指标(附Node Exporter实战清单)
高效掌握Prometheus监控指标的实战指南当你第一次登录到公司的Prometheus监控系统面对成千上万的指标名称是否感到无从下手作为运维工程师我们经常需要在短时间内理解一个全新系统的监控状况而直接翻阅Exporter文档往往效率低下。本文将揭示一个鲜为人知的API技巧帮助你快速获取并分析Prometheus中的所有监控指标。1. 揭秘Prometheus的指标发现APIPrometheus提供了一个极其强大但很少被充分利用的API端点——/api/v1/label/__name__/values。这个接口能够一次性返回当前存储的所有指标名称是快速了解监控环境的利器。1.1 API的基本使用方式要调用这个API你只需要构造如下请求curl http://your-prometheus-server:9090/api/v1/label/__name__/values典型的响应格式如下{ status: success, data: [ node_cpu_seconds_total, node_memory_MemFree_bytes, node_disk_read_bytes_total, ... ] }提示如果Prometheus启用了认证需要在curl命令中添加-u username:password参数1.2 与常规查询方法的对比传统方式获取指标名称通常需要查阅各个Exporter的文档通过Prometheus UI的自动补全功能逐个发现使用up{job...}等查询间接推断相比之下API方法具有明显优势方法耗时完整性易用性查阅文档高中可能过时低UI自动补全中低仅显示部分中API查询低高获取全部高2. Node Exporter指标深度解析Node Exporter是Linux系统监控的事实标准它提供了数百个系统级指标。理解这些指标的命名规律能极大提升排查效率。2.1 核心指标分类Node Exporter的指标可以划分为几个主要类别CPU相关以node_cpu_开头node_cpu_seconds_totalCPU时间统计node_cpu_guest_seconds_total虚拟机CPU时间内存相关以node_memory_开头node_memory_MemFree_bytes空闲内存node_memory_Cached_bytes缓存内存磁盘相关以node_disk_开头node_disk_read_bytes_total磁盘读取量node_disk_writes_completed_total写入完成次数2.2 指标命名规律解析理解Node Exporter的命名约定能帮助你快速定位所需指标前缀表明指标所属子系统如node_network_表示网络中间部分描述具体测量内容如receive_bytes表示接收字节数后缀表示单位或类型如_total表示计数器_bytes表示字节单位3. 高级过滤与分析技巧获取所有指标只是第一步如何高效处理这些数据才是关键。3.1 使用jq进行JSON处理在命令行中我们可以使用jq工具对API返回的指标进行过滤和分析curl -s http://localhost:9090/api/v1/label/__name__/values | jq .data[] | select(startswith(node_memory))这个命令会过滤出所有内存相关的指标。3.2 构建指标知识库建议将常用指标整理成表格方便团队共享指标名称描述告警阈值建议node_memory_MemAvailable_bytes可用内存 总内存10%node_disk_io_time_seconds_total磁盘IO时间 50ms/opnode_network_receive_errs_total网络接收错误 03.3 自动化指标监控可以编写脚本定期检查指标变化发现新增或消失的指标import requests import json def monitor_metrics_changes(): response requests.get(http://localhost:9090/api/v1/label/__name__/values) current_metrics set(json.loads(response.text)[data]) # 与之前保存的指标集合比较 # 发送差异告警...4. 实战快速诊断系统问题掌握了指标获取和分析方法后我们来看几个实际应用场景。4.1 CPU负载高排查流程首先确认哪些CPU核心负载高sum by (cpu) (rate(node_cpu_seconds_total{modesystem}[5m]))检查上下文切换频率rate(node_context_switches_total[5m])查看进程运行队列长度node_procs_running4.2 内存泄漏排查步骤确认可用内存趋势node_memory_MemAvailable_bytes检查Slab内存使用node_memory_Slab_bytes查看OOM事件计数node_vmstat_oom_kill4.3 磁盘性能问题分析查看磁盘IO延迟rate(node_disk_io_time_seconds_total[5m])检查读写吞吐量rate(node_disk_read_bytes_total[5m]) rate(node_disk_written_bytes_total[5m])监控磁盘队列长度node_disk_io_now5. 构建个人指标速查手册长期维护一个指标参考手册能极大提升工作效率。建议按以下结构组织系统资源指标CPU、内存、磁盘、网络的核心指标关键阈值建议应用特定指标数据库、缓存等中间件的特有指标业务自定义指标说明问题排查流程常见问题的指标分析路径关键PromQL查询模板注意指标手册应该定期更新特别是当Exporter版本升级时可能会有指标变更在实际工作中我发现最有效的学习方式是将API获取的指标列表与实际问题场景结合。例如当遇到一次性能问题后把相关的指标和排查步骤记录下来这样积累的知识最为实用。

更多文章