菜单
开源

操作指南

本指南帮助你操作Grafana代理。

水平扩展

有三个选项,横向扩展部署Grafana代理:

  • 主机过滤需要你在每台机器上运行一个代理你想收集指标。代理只会收集指标从机器上运行。
  • Hashmod分片允许您大致碎片发现的一组目标通过使用hashmod /保持重新贴标签于规则。
  • 抓取服务允许你集群Grafana代理,让他们分发基本整个集群的配置。

每个人都有他们自己的权衡:

  • 主机过滤(β)
    • 优点
      • 不需要专门配置/代理商吗
      • 不需要外部依赖
    • 缺点
      • 可引起明显的负担服务发现api
      • 要求每个代理的刮配置列表/ remote_writes相同
  • Hashmod分片(稳定)
    • 优点
      • 精确控制碎片的数量
      • 小负载SD主机相比,过滤(如有小#代理)
      • 不需要外部依赖
    • 缺点
      • 每个代理必须有专门的配置与碎片插入hashmod /保持重新贴标签于规则。
      • 要求每个代理刮配置列表/ remote_writes相同,除了hashmod规则不同。
      • Hashmod不是一致性哈希,所以100%以上的工作将搬到一个新机器时缩放碎片。
  • 抓取服务(β)
    • 优点
      • 代理不需要同步的刮配置/ remote_writes(他们把从一个集中的位置)。
      • 精确控制碎片的数量。
      • 使用一致性哈希,所以只有1 / N的工作将会搬到一个新机器时缩放碎片。
      • 最小的负载SD举办过滤相比,作为配置只有一个代理负责。
    • 缺点
      • 集中配置必须发现最小集的目标分配均匀。
      • 需要运行一个单独的KV存储来存储集中的配置。
      • 管理集中配置管理配置文件添加操作负担。

主机过滤(β)

主机过滤实现某种形式的“愚蠢的分片,”,运营商可以部署一个Grafana代理实例每台机器在一个集群中,都使用相同的配置,Grafana代理只会刮的目标相同的节点上运行的代理。

运行与host_filter:真意味着,如果你有一个目标的主机还没有运行Grafana代理过程中,这一目标将不会刮!

主机过滤通常是搭配了一个专门的代理进程,用于抓取目标之外运行一个给定的集群。例如,当运行在GKE Grafana代理,你将有一个DaemonSethost_filter刮集群中目标,和一个专门的部署刮其他目标不是集群节点上运行,例如Kubernetes控制平面的API。

如果你想扩展刮负载没有主机过滤,你可以使用抓取服务代替。

代理的主机名是由阅读美元的主机名。如果美元的主机名没有定义,代理将使用的os.Hostname确定主机名。

以下meta-labels用于确定目标是运行在同一台机器作为代理:

  • __address__
  • __meta_consul_node
  • __meta_dockerswarm_node_id
  • __meta_dockerswarm_node_hostname
  • __meta_dockerswarm_node_address
  • __meta_kubernetes_pod_node_name
  • __meta_kubernetes_node_name
  • __host__

最终的标签,__host__,不是一个标签添加任何普罗米修斯服务发现机制。相反,__host__可以通过使用生成host_filter_relabel_configs。这允许自定义重新标记规则来确定主机名的预定义的失败。重新确认规则添加host_filter_relabel_configs暂时的,只是用于host_filtering机制。完整的重新规定应在适当的应用scrape_config代替。

请注意,scrape_configrelabel_configs不适用于主机过滤逻辑;只有host_filter_relabel_configs将工作。

如果确定主机名匹配的meta标签,发现目标是被允许的。否则,目标被忽略,不会出现在目标API

Hashmod分片(稳定)

Grafana代理可以通过使用一双hashmod /分片重新贴标签于规则。这些规则将散列地址的目标和模量与代理碎片的数量正在运行。

scrape_configs: job_name: some_job #添加常用的服务发现,如static_configs relabel_configs: - source_labels: [__address__]模量:4 # 4碎片target_label: __tmp_hash行动:hashmod - source_labels: [__tmp_hash]正则表达式:^ 1 $ #这是第二个碎片行动:保持

添加relabel_configs你所有的scrape_config块。确保每个运行代理的碎片都有不同的值正则表达式;第一个代理碎片^ 0美元,第二应该有^ 1美元等等,^ 3美元

分片机制意味着每个代理将忽略大约总目标的1 / N,其中N是碎片的数量。这允许水平扩展代理的数量以及它们之间分配负载。

注意,这里使用的hashmod不是一致的散列算法;这意味着改变碎片的数量可能会导致任意数量的目标转移到一个新的碎片,高达100%。搬到一个新碎片时,细胞膜中的任何现有的数据从旧机器是有效地丢弃。

普罗米修斯实例

Grafana代理定义了普罗米修斯的概念实例,这是自己的迷你Prometheus-lite服务器。实例运行普罗米修斯的组合服务发现、刮,WAL存储,remote_write

实例允许细粒度的控制被刮掉,它发送的数据。用户可以很容易地定义两个实例刮不同子集的指标和送他们两个完全不同的remote_write系统。

尤其相关的实例抓取服务模式,你刮配置分解成多个实例需要分片和刮负载平衡集群的代理。

实例共享(稳定)

v0.5.0释放代理介绍的概念实例分享结合scrape_configs从配置到一个兼容的实例,实例共享。实例配置是兼容的,当他们没有配置的差异除了他们刮。remote_write配置端点所宣布的顺序也不同,但无序remote_writes仍必须精确匹配。

在共享实例模式下,的名字领域的remote_write款将被忽略。由此产生的remote_write配置将有一个名字相同的前六个字符组名和散列的前6个字符remote_write配置隔开- - - - - -

模式是一种新的默认共享实例,和之前的行为是弃用。如果你想恢复旧的行为,集instance_mode:不同的metrics_config你的配置文件。

共享实例对用户是完全透明除了暴露指标。与instance_mode:共享普罗米修斯,度量组件(细胞膜、服务发现、remote_write等)有一个instance_group_name的散列标签,所有设置用于确定共享实例。当instance_mode:不同的普罗米修斯组件的设置,指标将有一个吗instance_name标签,设置单独的实例上配置的名称匹配。建议使用默认的instance_mode:共享除非你不介意性能下降和真正需要的细粒度的度量。

用户可以使用目标API看到所有刮目标,他们分配给共享实例的名称。