菜单
开源

抓取服务模式(β)

抓取服务模式是第三Grafana代理的运作模式,允许集群一组代理进程和刮负载分发它们。

确定什么刮是通过写配置文件的一个实例API,然后将配置文件存储在一个KV存储后端。集群中的所有代理必须使用相同的KV商店所以他们看到相同的配置文件。

Grafana代理的每个进程可以同时运行多个独立的“实例”,一个“实例”是指的组合:

  • 服务发现的所有scrape_configs在加载配置
  • 擦伤指标从所有发现目标
  • 存储数据的写前日志特定加载配置
  • 远程写刮度量来配置的remote_write加载配置中指定的目的地。

“实例配置文件”,然后,是指定的配置文件的集合scrape_configsremote_write端点。例如,一个小实例配置文件的样子:

scrape_configs: job_name: self-scrape static_configs:目标:[' localhost: 9090]标签:过程:“代理”remote_write: - url: http://cortex: 9009 / api /舞会/推动

支持选项的全套实例配置文件是可用的metrics-config.md文件

有多个实例配置文件分片是必要的;每个配置文件分发给特定代理集群基于散列的内容。

当刮启用服务模式,代理不允许在配置文件中指定本地实例配置;使用KV存储是必需的。agentctl可用于手动同步代理的API服务器实例配置文件。

分布式哈希环

抓取服务模式使用一个分布式哈希环(通常称为“环”)集群代理和碎片配置在这个戒指。每个代理连接环和一个随机的不同的组令牌用于分片。默认生成的令牌的数目是128。

分布式哈希环也存储在一个KV商店。自从KV商店还需要存储配置文件,它是鼓励重用同一KV存储环。

切分时,代理目前使用配置文件的名称存储在KV存储负载分配。配置名称保证是唯一的钥匙。散列的名称用作查找关键在环和确定哪些代理(基于令牌)应该负责配置。“价格是正确的”规则用于代理查找;代理拥有令牌值最接近的关键不负责配置。

所有代理都同时看KV存储更改配置文件的集合。当配置文件添加或更新配置存储,每个代理将运行配置名称哈希散列环的通过他们的副本,以确定他们是否负责配置。

当代理接收到新的配置,它负责,它启动一个新实例的配置实例。如果从KV存储配置被删除,这将是被拥有代理,它将停止度量收集过程的配置文件。

当代理接收到一个事件的更新配置文件,以前的主人,但不再是主人,该配置文件的相关实例停止代理。这可能发生在集群大小的变化。

抓取服务模式目前不支持复制;一次只有一个代理将负责抓取一个特定的配置。

重新切分

当一个新的代理加入或离开了集群,的令牌环可能会导致配置散列到一个新的代理。应对这一行动的过程被称为“重新切分。”

重新切分运行:

  1. 当一个代理连接环
  2. 当一个代理离开戒指
  3. 当KV存储发送通知显示配置发生了变化。
  4. 在指定的时间间隔,以防KV更改事件没有解雇。

重新切分过程包括每个代理检索完整的配置存储在KV存储和确定:

  1. 当前拥有的配置重新切分代理发生了变化,需要重新加载。
  2. 配置不再属于当前重新切分应该停止代理和相关的实例。
  3. 配置已被删除和相关实例应该停止。

最佳实践

因为分布是由配置文件的数量,而不是有多少目标/配置文件,最好的数量的分布是实现当每个配置文件可能的最低数量的目标。最好的分配实现如果每个配置文件存储在KV商店是局限于一个静态的配置只有一个目标。

更好的分配机制,分配基于发现目标对未来的计划。

例子

这里有一个例子agent.yaml使用相同的配置文件etcd服务器的配置存储和分布式哈希环存储:

服务器:log_level:调试指标:全球:scrape_interval: 1 m scraping_service:启用:真正的kvstore:存储:etcd etcd:端点:- etcd: 2379生命周期:环:replication_factor: 1 kvstore:存储:etcd etcd:端点:- etcd: 2379

请注意,没有实例配置出现在这个例子;实例配置必须传递给API代理开始刮指标。

agentctl

agentctl是一个工具包含在这个存储库,帮助用户与新配置管理API进行交互。的agentctl config-sync子命令使用本地YAML文件的真理和同步内容的API。API不同步目录中的条目将被删除。

agentctl以二进制形式分布与每个版本和集装箱码头工人吗grafana / agentctl的形象。短歌配置,利用grafana / agentctl和一组同步配置API对未来的计划。