继续我们对 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 已成为我们的主要监控服务,它既服务于我们的本地客户,也服务于我们自己以服务形式运行我们的解决方案。