我们在去年9月推出了Grafana Enterprise Metrics (GEM),让集中式观察团队有能力为其终端用户提供多租户、可横向扩展的Prometheus-as-a-Service体验。从那时起,我们不断地进行改进并引入新的功能。在这篇博客中,我想深入了解GEM 1.4发布的两个令人兴奋的新功能。
一个GEM集群可以支持摄取和查询数以亿计的独特时间序列(更多细节见Jacob Lisi的博文)。然而,尽管一个集群可能大到足以容纳你所有的指标,但你仍然有理由保持几个集群:
- 产品和开发集群。许多运营商在维护生产集群的同时还维护一个开发集群。开发集群为他们提供了一个环境,可以在向生产领域推广之前测试变化。
- 有限的爆炸半径。GEM有许多功能,旨在使其对机器故障或负载高峰有弹性,包括shuffle sharding、zone-aware replication,以及可配置的全局和每租户的摄入和查询限制。然而,即使有这些保护措施,故障也可能发生。因此,一些可观察性团队选择将他们的指标分割到几个集群中,以确保即使一个集群发生故障,用户仍然可以获得一些指标。其他团队则维持多个集群,每个集群都有相同的指标,以确保在一个集群发生故障时有冗余。
- 数据隐私。由于合规性和隐私要求,一些可观察性团队不允许将指标存储在产生这些指标的国家或地区之外。在这种情况下,他们必须为他们支持的每个地区建立一个集群。
为了满足这些需求,我们创建了一种可以同时查询多个GEM集群的方法--我们称之为 "跨集群查询联合 "的功能。它依赖于一个被称为 "联盟前端 "的新GEM组件,它利用了Prometheus远程读取和标签API。
联合前台被设计成一个独立的组件,接受PromQL查询,并将其转发到所有被配置为目标的GEM集群上。然后,它将响应汇总,并将结果返回给用户。
这个组件的特别之处在于,虽然它最初的设想是在GEM集群之间聚合结果,但它也适用于任何与Prometheus兼容的API。这意味着你可以同时查询Thanos、Cortex、Prometheus和GEM的指标。对于Grafana实验室来说,这是一个令人兴奋的功能,因为它开启了混合指标设置的可能性,客户可能在Grafana云中有一些指标,在他们自己的内部GEM集群中有一些指标。
联盟前台的配置非常简单。下面是我刚才描述的混合度量设置的情况:
target: federation-frontend # Run the federation frontend as a standalone module
federation:
proxy_targets:
- name: internal-gem-cluster
url: http://gem/prometheus
basic_auth:
username:
password:
- name: grafana-cloud
url: https://prometheus-us-central1.grafana.net/api/prom
basic_auth:
username:
password:
我们很高兴看到我们的客户如何使用这个功能,并且已经在考虑下一步,比如如何动态地发现目标集群,而不是要求用户指定它们。同样,我们可能会围绕如何处理一个集群的子集无法返回数据的情况增加更多的灵活性--今天我们把整个查询标记为失败。
开箱即用的自我监控
一个经典的可观察性问题是:谁来监视监视者?在Grafana实验室,我们认真对待这个问题,并写了几篇关于这个问题的博文,包括"Grafana Agent元监控的最佳实践 "和"Prometheus服务器的元监控"。
我们相信Cortex和GEM也不例外,所以我们建立了GEM的自我监测功能,让用户以最小的设置和外部依赖来了解他们的度量集群的健康状况。这是一个巨大的挑战,因为在部署GEM的时候有很多选择,比如你是使用单二进制模式还是微服务,或者在Kubernetes上运行还是虚拟机还是裸机。
我们的目标是,无论你的部署架构如何,自我监控都能开箱即用,我很自豪地说,我们已经非常接近了。 下面我粘贴了你需要的最大配置量。 使用单二进制模式部署的用户甚至不需要 distributor_client部分:
instrumentation:
enabled: true
distributor_client:
address: dns:///distributor.enterprise-metrics.svc.cluster.local:9095
启用该功能后,用户将看到GEM系统健康指标出现在自动配置的__system__ 租户中。这使它们与组织的其他指标数据分开。此外,安装后,GEM的Grafana插件将设置数据源和可视化这些健康指标所需的仪表盘。

自我监测功能会自动安装一个文件夹,里面有基于Grafana实验室工程师开发的最佳实践的仪表盘,以了解系统性能。

GEM Writes仪表盘的截图,它显示了指标写入路径(即摄取路径)的健康状况。
关于自我监控如何运作的细节,请查看我们的文档。
了解更多
关于GEM 1.4的介绍就到此结束了!