内容提要
今年的Google Summer of Code(GSoC)项目中,Akshat Jaimini与pgwatch3合作开发了RPC sinks,旨在增强PostgreSQL监控的灵活性和集成性。RPC sinks允许用户以流式数据的形式获取度量数据,并用于各种用途。pgwatch3支持PostgreSQL、JSON文件和Prometheus作为sink解决方案,还计划添加更多输出格式。用户可以根据自己的需求开发自己的sink,并可以使用dummy client进行测试。
延伸解读
远程接收器解决了什么痛点
pgwatch3 此前仅支持 PostgreSQL、JSON 文件和 Prometheus 作为接收器,这些方案适合常规存储,但难以满足更灵活的集成需求。远程接收器通过 Go RPC 库将度量数据以流的形式暴露,用户无需修改 pgwatch3 设置即可用单个远程过程调用获取数据,从而自由对接自定义后端或处理流程。
架构上的关键简化
远程接收器的调用只需一次 RPC,pgwatch3 不关心接收器背后的实现细节,因此现有部署无需额外调整。用户只需在启动时指定类似 rpc://somehost:42/foo 的接收器地址,即可将度量数据流导向自己的服务。这种设计降低了集成复杂度,也避免了为每种新输出格式修改核心代码。
如何开发与测试自定义接收器
开发者可以克隆 pgwatch3_rpc_server 仓库,在 sinks 文件夹中新建文件,并在 sink/types.go 中声明枚举和更新条件分支。开发过程中可利用传入 UpdateMeasurement() 的 primary_receiver 实例获取 RPC 元参数或处理同步信号。仓库内提供的 dummy client 能模拟 pgwatch3 生成请求,方便在不启动实例的情况下测试新接收器。
当前状态与未来方向
目前演示版本支持 CSV 和 Parquet 输出格式,更多示例计划在 pgconf.eu 2024 公布。项目仍在积极开发中,目标是让用户更易访问。开发者若认为自己的接收器有通用价值,可向仓库提交 PR,也可在项目的讨论区或 issue 中参与贡献。
Q&A
RPC sinks在pgwatch3中有什么作用?
RPC sinks允许用户以流式数据的形式获取度量数据,增强PostgreSQL监控的灵活性和集成性。
pgwatch3支持哪些输出格式?
pgwatch3目前支持PostgreSQL、JSON文件和Prometheus作为sink解决方案,且支持CSV和Parquet输出格式。
如何开发自己的sink?
要开发自己的sink,需克隆指定的GitHub仓库,并在sinks文件夹中创建新文件,声明枚举并更新条件。
如何测试新开发的sink?
可以使用存储库中的dummy client生成请求,以测试新开发的sink,模拟pgwatch3的功能。
pgwatch3的Remote Sinks功能有什么优势?
Remote Sinks通过单个远程过程调用访问,无需额外处理,且pgwatch3设置无需更改,提供了更大的灵活性。
Akshat Jaimini在Google Summer of Code中做了什么?
Akshat Jaimini与pgwatch3合作开发RPC sinks,旨在增强PostgreSQL监控的灵活性和集成性。