Prometheus Agent 模式
Prometheus Agent 模式
Prometheus Agent 是内置于 Prometheus 二进制文件中的一种操作模式,具有相同的抓取 API、语义、配置和发现机制;此 agent 模式禁用了一些 Prometheus 的常规功能(TSDB、告警和规则评估),并优化了二进制文件以用于抓取数据并远程写入到远程位置。
Prometheus 远程写入协议将 Prometheus 收集的全部或部分指标转发(流式传输)到远程位置;您可以配置 Prometheus 将一些指标(如果需要,可以包含所有元数据和 exemplars!)转发到一个或多个支持远程写入 API 的位置。
通过远程写入,Prometheus 仍然使用拉取模型从应用程序收集指标,这使我们能够了解那些不同的故障模式。之后,我们批量处理样本和序列,并将数据导出、复制(推送)到远程写入端点,从而限制了中心点的监控未知数。从此类抓取器流式传输数据,通过允许您将指标数据存储在集中位置,实现了全局视图用例。这使得关注点分离成为可能,当不同的团队管理应用程序与可观察性或监控管道时,这非常有用。
Agent 模式为远程写入用例优化了 Prometheus。它禁用了查询、告警和本地存储,并用一个定制的 TSDB WAL 替换了它。其他一切保持不变:抓取逻辑、服务发现和相关配置。如果您只想将数据转发到远程 Prometheus 服务器或任何其他兼容远程写入的项目,它可以作为 Prometheus 的直接替代品。
本质上,它看起来像这样:
Agent 模式的好处
- 提高效率。定制的 Agent TSDB WAL 在成功写入后立即删除数据。如果无法访问远程端点,它会暂时将数据持久化到磁盘,直到远程端点恢复在线。这目前仅限于两小时的缓冲区,类似于非 agent 模式的 Prometheus。这意味着无需在内存中构建数据块或为查询目的维护完整索引。基本上,Agent 模式在类似情况下使用的资源只是普通 Prometheus 服务器的一小部分。
- Agent 模式可以更轻松地实现指标摄取的水平可伸缩性。
Agent 模式的缺点
- 无本地查询。您无法查询本地 Prometheus 实例。
- 记录规则不可用。您无法预先汇总数据以发送到远程写入。规则必须在远程完成。
- 无告警。所有告警必须由远程系统完成。
如何详细使用 Agent 模式
如果您显示 Prometheus 的帮助输出(--help 标志),您应该或多或少看到以下内容
usage: prometheus [<flags>]
The Prometheus monitoring server
Flags:
-h, --help Show context-sensitive help (also try --help-long and --help-man).
(... other flags)
--storage.tsdb.path="data/"
Base path for metrics storage. Use with server mode only.
--storage.agent.path="data-agent/"
Base path for metrics storage. Use with agent mode only.
(... other flags)
--[no-]agent Run Prometheus in 'Agent mode'.
使用 --agent 标志以 Agent 模式运行 Prometheus。其余的标志要么用于 server 和 Agent 两种模式,要么仅用于特定模式。您可以通过检查标志帮助字符串的最后一句来查看哪个标志用于哪种模式。“仅用于 server 模式(Use with server mode only)”表示它仅用于 server 模式。如果您没有看到这样的提及,则表示该标志是共享的。
Agent 模式接受相同的抓取配置,具有相同的发现选项和远程写入选项。它还在端口 9095 上公开一个 Web UI,禁用了查询功能,但会像普通的 Prometheus 服务器一样显示构建信息、配置、目标和服务发现信息。