ForgeRock 访谈

2019年6月18日作者 Simon Pasquier

我们将继续对 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 接口使用维度(dimensions),而我们的指标模型倾向于层次化(hierarchical)。我们也开始使用 Micrometer,并很快遇到了一些限制。因此,我们最终构建了一个自定义实现,使用 Micrometer 接口来收集我们的指标。我们对 DropWizard Metrics 进行了调整以满足我们的需求,并对 DropWizard Prometheus 导出器进行了修改。现在,通过单一的埋点,我们既可以按维度暴露指标,也可以按层次化结构暴露指标。然后,我们开始构建示例 Grafana 仪表盘,我们的客户可以安装和自定义这些仪表盘,以拥有自己的监控视图和警报。

Access Management ForgeRock's Grafana dashboard

我们确实继续提供以前的接口,但我们强烈鼓励客户使用 Prometheus 和 Grafana。

切换后你们看到了哪些改进?

最初的收益来自我们的质量工程(QE)团队。当他们开始测试我们对 Prometheus 的支持和不同的指标时,他们开始在所有压力和性能测试中默认启用它。他们开始为特定的测试定制 Grafana 仪表盘。不久之后,他们开始通过各种指标来突显和解释一些性能问题。

为了理解和修复问题而复现问题时,我们的工程团队也使用了 Prometheus,并扩展了一些仪表盘。整个过程让我们得到了更好的产品,并且对哪些指标对于客户的监控和可视化是重要的有了更深入的理解。

您认为 ForgeRock 和 Prometheus 的未来会是怎样的?

ForgeRock 已经开始努力将其产品和解决方案作为服务来提供。随着这一转变,监控和警报变得更加关键,当然,我们的监控基础设施是基于 Prometheus 的。我们目前有两级监控,一级是针对每个租户的,我们使用 Prometheus 收集有关一个客户环境的数据,并可以为该客户暴露一组指标。但我们还建立了一个中央 Prometheus 服务,所有已部署租户的指标都会被推送到这里,这样我们的 SRE 团队就可以非常清楚地了解所有客户环境的运行状况和方式。总的来说,我想说 Prometheus 已经成为我们的主要监控服务,它既服务于我们的本地(on-premise)客户,也服务于我们自己运营的解决方案即服务(SaaS)。