继续我们对 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 是编写 instrumentation 代码的显而易见的选择。但很快,我们在数据模型方面遇到了问题。Prometheus 接口使用维度,而我们倾向于使用指标的层级模型。我们也开始使用 Micrometer,很快就遇到了一些限制。因此,我们最终构建了一个自定义实现,使用 Micrometer 接口来收集我们的指标。我们调整了 DropWizard Metrics 以满足我们的要求,并对 DropWizard Prometheus exporter 进行了调整。现在,通过单一的 instrumentation,我们可以通过维度或层级方式暴露指标。然后,我们开始构建 Grafana 示例仪表盘,客户可以安装和自定义这些仪表盘,以拥有自己的监控视图和警报。
我们仍然继续提供以前的接口,但我们强烈建议客户使用 Prometheus 和 Grafana。
切换后看到了哪些改进?
最初的收益来自我们的质量工程团队。当他们开始测试我们的 Prometheus 支持和各种指标时,他们开始在所有压力测试和性能测试中默认启用它。他们开始为特定的测试自定义 Grafana 仪表盘。很快,他们就开始强调并指出各种指标来解释一些性能问题。
为了理解和修复问题,我们的工程团队在重现问题时也使用了 Prometheus,并扩展了一些仪表盘。整个过程使我们的产品变得更好,并且我们对哪些指标对客户监控和可视化很重要有了更好的理解。
您认为 ForgeRock 和 Prometheus 的未来会怎样?
ForgeRock 已开始努力将其产品和解决方案作为服务提供。随着这一转变,监控和警报变得更加关键,当然,我们的监控基础设施是基于 Prometheus 的。我们目前有两级监控,一级是按租户划分,我们使用 Prometheus 收集关于单个客户环境的数据,并可以为该客户暴露一组指标。但我们也构建了一个中央 Prometheus 服务,将所有已部署租户的指标推送至此,以便我们的 SRE 团队能够真正了解所有客户环境的运行情况以及运行方式。总的来说,我想说 Prometheus 已成为我们的主要监控服务,它既服务于我们的本地部署客户,也服务于我们自身作为服务运行我们的解决方案。