继续我们对 Prometheus 用户的一系列访谈,ForgeRock 的 Ludovic Poitou 将会谈论他们的监控之旅。
您能介绍一下自己以及 ForgeRock 的业务吗?
我是 Ludovic Poitou,ForgeRock 的产品管理总监,常驻法国格勒诺布尔附近。ForgeRock 是一家国际身份和访问管理软件公司,拥有 500 多名员工,2010 年成立于挪威,现在总部位于美国旧金山。我们提供解决方案来保护与客户、员工、设备和事物的每一次在线互动。我们拥有 800 多家客户,从金融公司到政府部门都有。
您在使用 Prometheus 之前的监控经验是什么?
ForgeRock 身份平台一直提供监控接口。但是该平台由 4 个主要产品组成,每个产品都有不同的选项。例如,目录服务产品通过 SNMP、JMX 或 LDAP 提供监控信息,或者在最新版本中甚至可以通过 HTTP 提供 RESTful API。其他产品只有 REST 或 JMX。因此,监控整个平台很复杂,需要能够集成这些协议的工具。
您为什么决定考虑使用 Prometheus?
我们需要为所有产品提供一个单一且通用的监控接口,同时保持现有接口以实现向后兼容。
我们开始使用 DropWizard 来收集所有产品中的指标。与此同时,我们开始将这些产品迁移到云端,并在 Docker 和 Kubernetes 中运行它们。因此,Prometheus 因其与 Kubernetes 的集成、部署的简易性以及与 Grafana 的集成而变得显而易见。我们也研究了 Graphite,虽然我们也为我们的产品添加了对它的支持,但我们的客户几乎不使用它。
您是如何过渡的?
我们的一些产品已经在使用 DropWizard 库,并且我们已经决定在所有产品中使用一个通用库,因此 DropWizard 是编写检测代码的显而易见的选择。但是很快,我们遇到了数据模型的问题。Prometheus 接口使用维度,而我们倾向于为指标使用分层模型。我们也开始使用 Micrometer,并很快遇到了一些限制。因此,我们最终构建了一个自定义实现,使用 Micrometer 接口来收集我们的指标。我们调整了 DropWizard Metrics 以满足我们的要求,并对 DropWizard Prometheus 导出器进行了调整。现在,通过一个检测,我们可以按维度或分层的方式公开指标。然后,我们开始构建示例 Grafana 仪表板,我们的客户可以安装和自定义这些仪表板,以获得他们自己的监控视图和警报。
我们继续提供之前的接口,但我们强烈鼓励我们的客户使用 Prometheus 和 Grafana。
切换后您看到了哪些改进?
第一个好处来自我们的质量工程团队。当他们开始测试我们的 Prometheus 支持和不同的指标时,他们开始在所有压力和性能测试中默认启用它。他们开始为特定的测试自定义 Grafana 仪表板。不久之后,他们开始突出显示并指出各种指标来解释一些性能问题。
为了重现问题以便理解和修复它们,我们的工程团队也使用了 Prometheus 并扩展了一些仪表板。整个过程使我们获得了更好的产品,并更好地理解了哪些指标对客户的监控和可视化至关重要。
您认为 ForgeRock 和 Prometheus 的未来会怎样?
ForgeRock 已经开始努力将其产品和解决方案作为服务提供。随着这一举措,监控和警报变得更加关键,当然,我们的监控基础设施是基于 Prometheus 的。我们目前有两个级别的监控,每个租户一个,我们使用 Prometheus 来收集关于一个客户环境的数据,并且我们可以为该客户公开一组指标。但是,我们也构建了一个中央 Prometheus 服务,所有已部署租户的指标都会被推送到该服务,以便我们的 SRE 团队可以很好地了解所有客户环境的运行情况。总的来说,我想说 Prometheus 已经成为我们的主要监控服务,它既为我们的本地客户服务,也为我们自己将解决方案作为服务运行提供服务。