ForgeRock 访谈
2019年6月18日作者 Simon Pasquier
在我们的 Prometheus 用户系列访谈中,来自 ForgeRock 的 Ludovic Poitou 分享了他们的监控之旅。
您能介绍一下您自己以及 ForgeRock 的业务吗?
我是 Ludovic Poitou,ForgeRock 的产品管理总监,常驻法国格勒诺布尔附近。ForgeRock 是一家国际身份与访问管理软件公司,拥有 500 多名员工,于 2010 年在挪威成立,现总部位于美国旧金山。我们提供解决方案,以确保客户、员工、设备和事物之间的每一次在线交互安全。我们拥有超过 800 家客户,涵盖金融公司到政府服务部门。
在使用 Prometheus 之前,您的监控体验是怎样的?
ForgeRock Identity Platform 一直提供监控接口。但该平台由 4 个主要产品组成,每个产品都有不同的选项。例如,Directory Services 产品通过 SNMP、JMX 或 LDAP 提供监控信息,在最新版本中甚至提供基于 HTTP 的 RESTful API。其他产品仅有 REST 或 JMX。因此,监控整个平台非常复杂,需要能够集成这些协议的工具。
你们为什么决定研究 Prometheus?
我们需要一个统一且通用的接口来监控我们所有的产品,同时还要保留现有的接口以实现向后兼容。
我们开始使用 DropWizard 来收集所有产品中的指标。与此同时,我们开始将这些产品迁移到云端,并在 Docker 和 Kubernetes 中运行。因此,Prometheus 因其与 Kubernetes 的集成、部署的简便性以及与 Grafana 的集成而脱颖而出。我们也研究过 Graphite,虽然我们在产品中添加了对它的支持,但我们的客户几乎不怎么使用它。
你们是如何过渡的?
我们的一些产品已经在使用 DropWizard 库,并且我们决定在所有产品中使用一个通用库,因此 DropWizard 是进行仪表化(instrumentation)的首选。但很快,我们在数据模型上遇到了问题。Prometheus 接口使用维度(dimensions),而我们的指标倾向于采用层级模型。我们也尝试使用 Micrometer,但很快遇到了一些限制。最终,我们使用 Micrometer 接口构建了一个自定义实现来收集指标。我们适配了 DropWizard Metrics 以满足我们的需求,并对 DropWizard Prometheus 导出器进行了调整。现在,通过单一的仪表化,我们既可以使用维度,也可以通过层级方式暴露指标。随后,我们开始构建示例 Grafana 仪表板,供客户安装和自定义,以获得他们自己的监控视图和警报。

我们继续提供以前的接口,但强烈建议我们的客户使用 Prometheus 和 Grafana。
切换后你们看到了哪些改进?
最初的收益来自于我们的质量工程团队。当他们开始测试我们的 Prometheus 支持和各项指标时,他们便默认在所有的压力测试和性能测试中启用了它。他们开始为特定的测试自定义 Grafana 仪表板。不久之后,他们就能通过指向各种指标来解释一些性能问题了。
为了重现问题以便理解和修复,我们的工程团队也使用了 Prometheus 并扩展了一些仪表板。整个过程让我们获得了更好的产品,并且让我们更加清楚哪些指标对于客户的监控和可视化至关重要。
您认为 ForgeRock 和 Prometheus 的未来会怎样?
ForgeRock 已经开始努力将其产品和解决方案作为服务提供。随着这一转变,监控和警报变得更加关键,当然,我们的监控基础设施也正是基于 Prometheus。目前我们有两种监控级别:一种是按租户监控,我们使用 Prometheus 收集单个客户环境的数据,并可以为该客户公开一组指标;另一种是我们构建了一个中央 Prometheus 服务,用于推送来自所有已部署租户的指标,以便我们的 SRE 团队能够清楚地了解所有客户环境的运行情况。总的来说,我认为 Prometheus 已经成为我们主要的监控服务,它既服务于我们的本地部署客户,也服务于我们自己作为服务运行的解决方案。