抓取服务模式(β)
抓取服务模式是第三Grafana代理的运作模式,允许集群一组代理进程和刮负载分发它们。
确定什么刮是通过写配置文件的一个实例API,然后将配置文件存储在一个KV存储后端。集群中的所有代理必须使用相同的KV商店所以他们看到相同的配置文件。
Grafana代理的每个进程可以同时运行多个独立的“实例”,一个“实例”是指的组合:
- 服务发现的所有
scrape_configs
在加载配置 - 擦伤指标从所有发现目标
- 存储数据的写前日志特定加载配置
- 远程写刮度量来配置的
remote_write
加载配置中指定的目的地。
“实例配置文件”,然后,是指定的配置文件的集合scrape_configs
和remote_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存储配置被删除,这将是被拥有代理,它将停止度量收集过程的配置文件。
当代理接收到一个事件的更新配置文件,以前的主人,但不再是主人,该配置文件的相关实例停止代理。这可能发生在集群大小的变化。
抓取服务模式目前不支持复制;一次只有一个代理将负责抓取一个特定的配置。
重新切分
当一个新的代理加入或离开了集群,的令牌环可能会导致配置散列到一个新的代理。应对这一行动的过程被称为“重新切分。”
重新切分运行:
- 当一个代理连接环
- 当一个代理离开戒指
- 当KV存储发送通知显示配置发生了变化。
- 在指定的时间间隔,以防KV更改事件没有解雇。
重新切分过程包括每个代理检索完整的配置存储在KV存储和确定:
- 当前拥有的配置重新切分代理发生了变化,需要重新加载。
- 配置不再属于当前重新切分应该停止代理和相关的实例。
- 配置已被删除和相关实例应该停止。
最佳实践
因为分布是由配置文件的数量,而不是有多少目标/配置文件,最好的数量的分布是实现当每个配置文件可能的最低数量的目标。最好的分配实现如果每个配置文件存储在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对未来的计划。