如何为 pgwatch 定制 gRPC Sink:对接自有时序存储的完整开发者指南
如何为 pgwatch 定制 gRPC Sink对接自有时序存储的完整开发者指南【免费下载链接】pgwatchpgwatch: PostgreSQL metrics monitor/dashboard项目地址: https://gitcode.com/gh_mirrors/pg/pgwatchpgwatch 是一款功能强大的PostgreSQL 指标监控与仪表盘开源项目内置了 PostgreSQL、Prometheus、JSON 文件等存储后端Sink。当你需要把监控指标推送到 InfluxDB、ClickHouse、IoTDB 等自有时序数据库时pgwatch 的gRPC Sink就是官方预留的万能出口——只需实现一个约 5 个 RPC 接口的小服务就能让 PostgreSQL 监控数据自由落袋。本文带你从零定制属于自己的 gRPC Sink。 gRPC Sink 解决什么问题pgwatch 的数据链路是Reaper收割器定期从被监控的 PostgreSQL 实例采集指标 → 通过 Sink 写入存储 → Web UI / 仪表盘展示。官方文档在 docs/concept/components.md 中明确说明了各 Sink 的定位其中 gRPC Sink 的说明是当内置存储选项都不满足需求时你可以基于 pgwatch 的 protobuf 定义实现自己的 gRPC 服务器将指标推送到任意自定义存储后端。这意味着✅不受限于官方支持的数据库——任何语言、任何时序库都能接✅协议是 protobuf——高性能、强类型、跨语言Go、Java、Python、Rust 均可实现✅附带元数据能力——不仅能推数据还能同步指标定义与监控源的增删 先看懂 protobuf 契约只有 3 个 RPC整个 gRPC 契约就定义在 api/pb/pgwatch.proto 中服务名为Receiver包含 3 个方法RPC 方法请求类型作用你应如何处理UpdateMeasurementsMeasurementEnvelope推送一批指标数据含 DB 名、指标名、自定义标签、结构化数据行核心将数据写入你的时序库SyncMetricSyncReq同步指标/监控源的生命周期操作AddOp/DeleteOp/DefineOp更新本地元数据新增/删除某实例的某指标DefineMetricsgoogle.protobuf.Struct推送完整的指标定义JSON 化后的结构保存指标 schema便于建表/建模板三个方法的返回值统一是Reply其中只有一个logmsg字段——pgwatch 会把这个字段的内容打进日志这是官方给你的调试回音联调时非常好用。数据载荷的结构MeasurementEnvelope大致是DBName被监控的 PostgreSQL 实例名MetricName指标名如pg_stat_statements、pg_settingsCustomTags在 pgwatch 中为该实例打的自定义标签Datarepeated google.protobuf.Struct即每行一条mapstring, value的测量记录 提示internal/sinks/rpc.go中可以看到客户端侧的完整实现逻辑——指标定义是先转 JSON、再转 Struct发送的你按mapstring, any接收即可无需关心 Go 类型细节。⚙️ 一行配置把 pgwatch 指向你的服务器服务写好之后只需在 pgwatch 启动时加一个--sink参数可以重复使用与内置 Sink 并行写入。URI 格式见 docs/reference/sinks_options.md# 最简用法 --sinkgrpc://localhost:5000/ # 带认证 TLS --sinkgrpc://user:pwdlocalhost:5000/?sslrootca/home/user/ca.crt关键特性认证user:pwd会以 gRPC metadata 形式username/password两个字段转发给你的服务器服务器端自行校验不做任何强制TLS指定sslrootca参数加载 CA 证书后自动启用加密否则走明文连通性探测pgwatch 启动时会用一次SyncMetric空请求做 Ping只有服务端可用才认为 Sink 就绪Unavailable状态会立即报错退出代码侧的入口在internal/sinks/multiwriter.goSink 类型解析支持grpc和rpc两种写法都会路由到NewRPCWriter。️ 实现你的 gRPC 服务器4 步走第 1 步生成客户端代码拿 api/pb/pgwatch.proto 生成你所在语言的桩代码。以 Go 为例protoc --go_out. --go-grpc_out. api/pb/pgwatch.proto第 2 步实现Receiver服务以 Go 为例核心骨架示意func (s *MyServer) UpdateMeasurements(ctx context.Context, env *pb.MeasurementEnvelope) (*pb.Reply, error) { // 1. 从 ctx 的 metadata 中取出 username/password 做认证 // 2. 把 env.Data 中每行 Struct 转成 map写入你的时序库 // 3. 返回 pb.Reply{Logmsg: 写入 env.DBName} return pb.Reply{}, nil }第 3 步处理元数据同步SyncMetric里根据Operation枚举维护哪些实例在监控哪些指标DefineMetrics收到的是指标定义的 JSON 结构建议落盘或入库后续建表/建保留策略都能派上用场。第 4 步监听端口并返回 logmsg返回有意义的logmsg比如已写入 128 行到 tsdb它会被 pgwatch 原样打印到日志是验证数据链路是否打通的最快方式。 官方另有一个社区维护的 gRPC 服务器集合pgwatch-contrib/rpc见 docs/howto/implement_grpc_server.md针对常见存储方案提供了示例实现与搭建教程非常适合作为生产级服务的起点参考。 验证数据链路看 Web UI 是否健康配置生效后打开 pgwatch Web UI 确认 Reaper 与 Sink 均工作正常数据落库后你就可以在监控大盘中看到类似下面的指标网格与性能分析视图✅ 避坑清单与最佳实践场景建议批量写入UpdateMeasurements一次携带一整批Data务必批量插入你的时序库避免逐行写入拖慢 Reaper错误处理gRPC 错误会原样回传并记录日志写入失败请返回明确的codes状态码方便 pgwatch 侧定位认证若走内网可暂不认证跨网段/公网部署务必启用 TLSsslrootca并在服务端校验 metadata 中的凭据标签利用CustomTags是 pgwatch 实例维度的标签正好可映射为你时序库的 tag 维度做实例级筛选保留策略SyncMetric的DeleteOp提示某实例的某指标被移除是清理历史数据的天然钩子联调排障全程善用Reply.logmsg——pgwatch 日志里搜grpc关键字即可看到每批数据的行数与耗时小结pgwatch 的 gRPC Sink 把对接自有时序存储这件事压缩成了三件事读懂 api/pb/pgwatch.proto 中的 3 个 RPC、实现你的Receiver服务器、用一行--sinkgrpc://...完成接入。契约简单、协议标准无论你的存储是 InfluxDB、ClickHouse 还是自研方案一个下午就能让 PostgreSQL 监控指标流进自己的数据仓库。【免费下载链接】pgwatchpgwatch: PostgreSQL metrics monitor/dashboard项目地址: https://gitcode.com/gh_mirrors/pg/pgwatch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

前端面试核心考点与高效准备指南

前端面试核心考点与高效准备指南

1. 项目概述"前端八股文面经大全"这个标题背后,反映的是当前前端求职生态中一个非常现实的需求——如何高效准备技术面试。作为一名经历过数十场技术面试的前端工程师,我深刻理解求职者在面对"八股文"式面试时的焦虑与困惑。所谓&qu…

2026/8/26 10:50:22 阅读更多 →
开发转安全工程师:简历重构与技能适配指南

开发转安全工程师:简历重构与技能适配指南

1. 为什么开发/运维转安全工程师需要重构简历?安全工程师岗位与开发/运维存在显著的能力模型差异。我见过太多技术扎实的候选人,因为沿用原有技术岗位的简历模板而错失面试机会。安全岗HR最关注的是你的风险识别能力、合规意识和技术栈的适配性&#xff…

2026/8/25 8:54:57 阅读更多 →
Java面试必考:数据结构核心原理与应用解析

Java面试必考:数据结构核心原理与应用解析

1. 为什么数据结构是Java面试的必考项十年前我刚参加工作时,第一次Java面试就被问到了HashMap的实现原理。当时支支吾吾说不清楚红黑树和链表的转换阈值,结果自然是被淘汰。后来做了面试官才发现,数据结构问题能直接暴露候选人的基本功扎实程…

2026/8/25 8:54:57 阅读更多 →

最新新闻

蓝桥杯Java国赛A组:128MB内存下的工程能力实战

蓝桥杯Java国赛A组:128MB内存下的工程能力实战

1. 这不是一场普通考试,而是一次Java工程能力的实战压力测试 蓝桥杯13届JAVA A组国赛——这个标题背后藏着的,远不止“比赛”两个字。它是一张被压缩到极致的Java能力快照:在90分钟内,用标准JDK环境(当时主流是JDK 7/8…

2026/8/26 11:24:02 阅读更多 →
Go数学建模实战:数值稳定性、内存布局与并发安全三重博弈

Go数学建模实战:数值稳定性、内存布局与并发安全三重博弈

1. 这不是一份“网站清单”,而是一张Go工程师的数学建模实战地图 你点开这个标题,大概率是被“最全”“含泪狂刷”“118题”这几个词钩住的——别急,先放下焦虑。我用Go写了六年数学建模系统,从国赛C题到亚太杯A题,从本…

2026/8/26 11:24:02 阅读更多 →
Deepin-Wine深度解析:在Linux上无缝运行Windows应用的技术实践

Deepin-Wine深度解析:在Linux上无缝运行Windows应用的技术实践

1. 从“能用”到“好用”:Linux桌面用户的Windows应用执念作为一个在Linux桌面环境里摸爬滚打了十多年的老用户,我太清楚那种感觉了:你爱上了Linux的简洁、高效和自由,但总有那么一两个Windows下的“刚需”应用让你无法彻底割舍。…

2026/8/26 11:24:02 阅读更多 →
深度解析deepin-wine:Linux上运行Windows应用的容器化解决方案

深度解析deepin-wine:Linux上运行Windows应用的容器化解决方案

1. 项目概述:当Linux用户需要Windows应用时作为一名在Linux桌面环境里摸爬滚打了十多年的老用户,我几乎尝试过所有让Linux运行Windows程序的方案。从早期的虚拟机,到后来的商业兼容层,再到如今功能强大的Wine及其衍生项目。今天要…

2026/8/26 11:24:02 阅读更多 →
多模态RAG实战:从文本到图文表的跨模态检索增强生成

多模态RAG实战:从文本到图文表的跨模态检索增强生成

1. 从文本到万物:为什么我们需要多模态RAG? 如果你已经用RAG(检索增强生成)构建过基于文档的问答系统,那你一定体验过它的强大:用户提问,系统从海量PDF、TXT、Word文档中精准找到相关段落&#…

2026/8/26 11:24:02 阅读更多 →
基于Android的美食推荐App开发实战:从推荐算法到论文成稿

基于Android的美食推荐App开发实战:从推荐算法到论文成稿

简介:在信息过载的时代,个性化推荐系统已成为提升用户体验的核心技术。其底层逻辑基于用户行为分析与内容特征建模,通过余弦相似度计算、协同过滤等算法实现精准匹配。推荐算法不仅广泛应用于电商、短视频等领域,在美食场景同样能…

2026/8/26 11:23:01 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →