Prometheus Agent 模式

Prometheus Agent 模式

Prometheus Agent 是一种内置于 Prometheus 二进制文件中的操作模式,具有相同的抓取 API、语义、配置和发现机制;此 Agent 模式禁用了 Prometheus 的一些常规功能(TSDB、告警和规则评估),并优化了二进制文件,以用于抓取和远程写入到远程位置。

Prometheus Remote Write 协议将 Prometheus 收集的所有或一部分指标转发(流式传输)到远程位置;您可以配置 Prometheus 将某些指标(如果您愿意,包括所有元数据和示例!)转发到一个或多个支持 Remote Write API 的位置。

通过 Remote Write,Prometheus 仍然使用拉取模型从应用程序收集指标,这使我们能够了解那些不同的故障模式。之后,我们将样本和序列进行批处理,并导出、复制(推送)数据到 Remote Write 端点,从而限制了中心点可能存在的监控未知因素的数量。从这样的抓取器流式传输数据,通过允许您将指标数据存储在中心位置,从而实现了全局视图用例。这实现了关注点分离,当不同的团队管理应用程序,而不是可观察性或监控管道时,这非常有用。

Agent 模式针对远程写入用例对 Prometheus 进行了优化。它禁用了查询、告警和本地存储,并用自定义的 TSDB WAL 取而代之。其他一切保持不变:抓取逻辑、服务发现和相关配置。如果您只想将数据转发到远程 Prometheus 服务器或任何其他支持 Remote-Write 的项目,它可以用作 Prometheus 的即插即用替换项。

本质上,它看起来是这样的: Prometheus Agent Remote Write

Agent 模式的优势

  • 提高效率。自定义的 Agent TSDB WAL 在成功写入后立即删除数据。如果无法连接到远程端点,它会暂时将数据持久化到磁盘,直到远程端点恢复联机。目前仅限于两小时的缓冲区,与非 Agent Prometheus 类似。这意味着无需在内存中构建数据块或维护完整的索引以供查询。本质上,Agent 模式使用的资源 fraction 远少于正常 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。其余标志要么同时适用于服务器和 Agent,要么仅适用于特定模式。您可以通过检查标志帮助字符串的最后一句来查看哪个标志适用于哪个模式。“仅与服务器模式一起使用”意味着它仅适用于服务器模式。如果您没有看到任何此类提及,则表示该标志是共享的。

Agent 模式接受相同的抓取配置,具有相同的发现选项和远程写入选项。它还在端口 9095 上公开了一个 Web UI,禁用了查询功能,但显示构建信息、配置、目标和服务发现信息,与正常 Prometheus 服务器相同。

本页内容