Prometheus 节点监控:如何编写自定义指标采集脚本实战

秋丽姑娘_8429

秋丽姑娘_8429

2026-06-23

722人浏览

原创

最推荐的方式是使用 node exporter 的 textfile collector 机制:无需改代码、不新增端口、不配新 job,只需编写 shell 脚本生成符合规范的 .prom 文件并定时写入指定目录即可。

prometheus 节点监控:如何编写自定义指标采集脚本实战

Prometheus 节点监控中,自定义指标采集最常用、最轻量、最推荐的方式,是利用 Node Exporter 的 textfile Collector 机制——不需要改代码、不新增端口、不配新 job,只需写个脚本把数据写成标准格式,丢进指定目录即可。

下面直接讲清楚怎么做,聚焦实战关键点。

明确指标类型和命名规范

写脚本前先想清楚:你要监控的是什么?它会怎么变?

  • 计数类(如错误总次数、任务完成总数)→ 用 Counter,格式:myapp_errors_total{service="api",env="prod"} 127
  • 瞬时值(如当前队列长度、内存使用率、服务存活状态)→ 用 Gauge,格式:myapp_queue_length{service="worker"} 4 或 myapp_service_up{service="backend"} 1
  • 避免用错类型:Gauge 可以上下浮动,Counter 只能单调递增;误用会导致 PromQL 查询异常或告警失效。
  • 命名要带 namespace 和 subsystem,比如 custom_nginx_active_connections,而不是简单叫 connections,便于后续分类和避免冲突。

编写 Shell 脚本生成 .prom 文件

以采集 Nginx 活跃连接数为例,脚本逻辑清晰、可读性强、易维护:

  • 脚本输出必须是纯文本,每行一个指标,以 # HELP 和 # TYPE 开头,后跟指标行;
  • 文件名必须以 .prom 结尾(如 nginx_metrics.prom),Node Exporter 才会识别;
  • 指标值只能是数字(支持浮点),不能有单位、空格或额外字符;
  • 示例脚本(保存为 /usr/local/bin/nginx_metrics.sh):
# !/bin/bash
TEXTFILE_DIR="/var/lib/node_exporter/textfile_collector"
mkdir -p "$TEXTFILE_DIR"
<h1>获取 nginx active connections(需 nginx 启用 stub_status)</h1><p>ACTIVE_CONN=$(curl -s <a href="https://www.php.cn/link/9f0f4ce8b671b61e661861ee16f16d93">https://www.php.cn/link/9f0f4ce8b671b61e661861ee16f16d93</a> | grep 'Active' | awk '{print }' 2>/dev/null || echo 0)</p><div class="aritcle_card flexRow artxards">
											<div class="artcardd flexRow">
												<a class="aritcle_card_img" rel="nofollow" href="/ai/3484" title="悠船"><img
														src="https://img.php.cn/upload/ai_manual/001/246/273/178599428323880.png" alt="悠船" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
												<div class="aritcle_card_info flexColumn">
													<a rel="nofollow" href="/ai/3484" title="悠船" class="overflowclass">悠船</a>
													<p class="overflowclass">悠船是一款AI图像与设计工具,Midjourney 官方推出的中文版 AI 图像生成工具。</p>
												</div>
												<a rel="nofollow" href="/ai/3484" title="悠船" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
												</a>
											</div>
										</div><p>cat > "$TEXTFILE_DIR/nginx_metrics.prom" </p><h1>HELP custom_nginx_active_connections Number of active nginx connections</h1><h1>TYPE custom_nginx_active_connections gauge</h1><p>custom_nginx_active_connections $ACTIVE_CONN
EOF</p>

注意:curl 需确保能访问 nginx status 接口,且脚本要有执行权限(chmod +x)。

配置 Node Exporter 启用 textfile 收集器

启动 Node Exporter 时,必须显式启用并指定目录:

  • 启动命令加参数:--collector.textfile.directory=/var/lib/node_exporter/textfile_collector;
  • 若用 systemd 管理,编辑 /etc/systemd/system/node-exporter.service,在 ExecStart 行末尾追加该参数;
  • 重启服务:systemctl daemon-reload && systemctl restart node-exporter;
  • 验证是否生效:访问 http://NODE_IP:9100/metrics,搜索 custom_nginx_active_connections,应能看到刚写入的值。

定时执行脚本并确保原子性

用 crontab 定期更新指标,但要注意避免写一半被读取:

  • 推荐做法:先写临时文件,再 mv 覆盖(Linux 下 mv 是原子操作);
  • crontab 示例(每 10 秒一次,实际建议 15–60 秒):*/1 * * * * /usr/local/bin/nginx_metrics.sh;
  • 不要用 echo ... > file 直接覆盖,可能造成 Prometheus 抓到半截内容;
  • 可加简单日志或 set -e 保证出错中断,避免静默失败。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

20

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

40

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

20

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

20

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

20

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

240

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

140

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

120

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

60

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习