Prometheus将加入可在低资源设备顺畅执行的代理模式

监控和警报解决方案Prometheus将会添加代理模式(Agent Mode),该模式内置在Prometheus二进制文件中,其禁用了一些常见的功能,并且针对抓取和远程写入进行优化。官方提到,通过在Prometheus加入功能精简的代理模式,使得Prometheus具有自动横向扩展的能力,能拓展Prometheus的使用模式。

Prometheus从下一个版本v2.32.0开始,用户可以选择激活实验性功能—代理模式,而这个模式是针对远程写入的使用案例而来。代理模式禁用查询、警报,并将和本地存储转换成自定义的时序数据库(TSDB)预写式日志(WAL),其他包括抓取逻辑、服务探索和相关配置都保持不变。

当用户的使用场景,只需要将资料转送到远程Prometheus服务器,或是任何的远程写入兼容项目,便适合使用代理模式,也就是说,当用户不打算在本地端查询,或是发出资料警报,并且也不向外部流媒体传输指标,则使用代理模式可以带来效率且方便扩展等好处。

效率是代理模式的最大优点,用户自定义的代理时序数据库预写式日志,在成功写入远程后,能够立即删除资料,当资料无法抵达远程端点,则资料会暂时保留在磁盘中,直到远程端点重新连上,不过这目前只提供2个小时的缓冲,类似非代理Prometheus。

这代表不需要在内存中构建资料块,也不需要为了查询目的,维护完整的索引,代理模式使用的资源,只是普通Prometheus服务器在类似情况,所使用的小部分资源。由于代理模式的运行效率高,对于边缘的低资源设备更为友善,能在相同的运算成本发送更多指标。

新的代理模式的另一个优点是容易扩展,官方解释,理想中的自动扩展功能,要能够依照指标的数量,增加或是缩减执行实例,但是这在Prometheus的服务器模式中难以实现,因为服务器模式的Prometheus为有状态,收集到的资料会保存在一个固定位置,而在缩减执行实例时,就要将资料备份到现有执行实例,便会面临资料重叠、资料错误标记等问题。

代理模式的本质,是将探索、抓取和远程写入,移动到一个单独的微服务中,使得该微服务专注在截取资料任务上,因此代理模式下的Prometheus可以是无状态的,虽然为了避免指标遗失,需要有一个HA代理,并附加一个永久性磁盘,但从技术上来说,当用户具有数千个指标目标,就可以部署多个Prometheus代理,并且安全地更改执行实例抓取的目标,因为所有的样本都会被推送到同一个中央存储。

简单来说,代理模式支持以Prometheus为基础的指标抓取,进行简单地水平自动缩放,并且能够对指标目标做出动态变化,而官方提到,这会是Prometheus社群未来的发展方向之一。

代理模式在下一个Prometheus版本,才会加入成为实验性功能,磁盘上的旗标、API和预写式日志可能会改变,但是因为Grafana Labs先前进行的一些开源工作,已经实测过代理模式,因此某种程度代理模式已经具有一定的稳定性。

虽然官方在Prometheus加入代理模式,但是原有的服务器模式仍然是当前被推荐且稳定的模式,而具有远程存储功能的代理模式,会增加额外的复杂性,官方提醒用户应该谨慎使用。