成功/ Gojek

Gojek如何利用Cortex来跟上不断增长的规模

Gojek成立于2010年,当时是印度尼西亚预订摩的呼叫中心。如今,这家初创公司已经是一家十角兽公司,通过移动钱包、GoPay和其超级应用程序上的20多种产品,为东南亚各地的数百万用户提供服务。bob手机app官网预约按摩?买电影票?你可以用Gojek应用程序完成所有这些。

公司的使命是用技术创新解决日常挑战。为了在多个市场实现这一目标,Gojek的系统团队专注于构建速度、可靠性和规模的基础设施。到2019年,该团队意识到他们需要一个新的监控系统,以跟上Gojek不断增长的技术组织皮质,水平可伸缩普罗米修斯实现。

“我们使用InfluxDB存储指标。开发人员通过在git repo中提交kapacitor脚本来配置警报。为了实现高可用性,我们使用两个influxdb进行了中继设置。由于我们不能水平扩展,除非我们支付企业许可证,我们最终有许多InfluxDB集群与中继设置,”产品工程师Ankit Goel说。

我们的一些团队生成了超过一百万个活动时间序列。

- Ankit Goel, Gojek公司产品工程师

寻找更好的监测方案

尽管团队引入了自动化设置,但管理所有这些涌入实例成为了运营的痛点。此外,一些Gojek工程团队需要更大的规模。Goel说:“我们的一些团队生成了超过100万个活跃时间序列。客户的另一个常见需求是指标的长期存储。对于InfluxDB, Gojek只有2周的留存,增加留存意味着提供更大的实例。

Gojek正在寻找一种更好的监控解决方案,以满足以下要求:

  • Kubernetes本地人。
  • 水平可伸缩性。
  • 高可用的开箱即用。
  • 可靠性高。
  • 低操作开销,因此小团队可以管理它。

Cortex满足了所有这些要求,并且还具有Gojek团队可以利用的以下功能:

  • 多租户。
  • 可定制和修改,因此它可以与Gojek的现有工具集成。
  • 支持remote_write。

因为它支持remote_write, Cortex实现了Gojek的一个关键需求:将监控作为服务提供的能力。戈埃尔说:“如果是灭霸,我们就必须在每一个普罗米修斯身上部署灭霸的挎斗。”“因此,从本质上讲,我们需要管理客户端的很大一部分基础设施。我们更喜欢《Cortex》,因为人们可以简单地将他们的指标推送给我们,而我们将在一个地方拥有所有的指标。”

Cortex真正帮助我们的地方是将监控系统与我们现有的工具集成起来。我们有很多内部工具,在某些地方,我们需要与监控系统紧密集成。

- Ankit Goel, Gojek公司产品工程师

实现

该计划于2019年1月开始实施。该团队开发了几个工具:一个用于基于令牌的身份验证的简单服务,另一个用于存储团队信息,如通知通道和PagerDuty策略。一旦这一切都完成了,他们就利用杠杆InfluxData Telegraf的remote_write插件给皮质写信。这使得他们可以将所有发送到InfluxDB的参数也发送到Cortex。“所以从InfluxDB转移到租户并不复杂。因为Cortex是多租户的,我们可以直接将每个InfluxDB服务器映射到我们的租户,”Goel说。他们开发了一个内部舵图来部署和管理皮质。在两个月的时间内完成定制后,“我们开始设置并运行,并在Cortex上加入了一个团队。”

在最初的版本中,GitOps是开发人员应用警报和创建仪表板的唯一接口。该团队构建了这样的工具grafonnet-playground为了方便开发人员创建仪表板。开发人员还可以使用UI创建仪表板,因为Grafana为仪表板维护版本历史记录。

grafonnet-playground
grafonnet-playground

Goel说道:“我们需要诸如‘每个团队触发的警报数量’,‘解决这些警报需要多长时间’,‘有多少是可执行的,有多少是被忽略的’等指标。”为了测量这些指标,团队只需要创建一个简单的仪表板,因为标尺组件公开了每个租户的警报指标。企业和开发者都发现这些指标非常有用。”

科尔特大学Alertmanager
科尔特大学Alertmanager

该团队构建了一个CLI工具来改善应用警报的用户体验,而不必深入研究PromQL。“你可以写一个命令,然后说镜头附着警报,你告诉它你想附加什么类型的警报,比如CPU警报或Postgres警报,然后你给它一个服务名称,”Goel说。“这种应用警报的方法存在一些挑战,但我们希望在未来转向这种模式。”

团队面临的挑战之一是开发人员教育。但Goel说:“我们一直都知道,如果我们要转向灭霸或Cortex,开发者就必须学习PromQL。”监控团队与开发人员合作,帮助他们理解PromQL并迁移他们的图表和警报。

Goel说,监控团队不时会遇到与Cortex有关的问题,但“我们总是通过Cortex松弛通道与Cortex社区联系,”“Cortex社区的活跃成员总是帮助我们解决问题。”如今,Gojek的Lens监控系统有40多个租户Cortex每秒处理大约120万个样本.通过口口相传,用户的认可度正在有机增长。Gojek目前正在迁移到Kubernetes,迁移到Kubernetes的团队发现Prometheus比InfluxDB更适合。看到这一成功,Kubernetes上的其他团队也开始登陆Lens。

每秒摄入的指标
每秒摄入的指标

最终,Goel说:“Cortex真正帮助我们的地方是将监控系统与我们现有的工具集成在一起。我们有很多内部工具,在某些地方,我们需要与监控系统紧密集成。因此,我们的目标是确保每当创建新的服务或团队时,它们都能自动登录到监控平台。开发人员部署后,他们的一些系统指标和所有其他服务可用的标准指标会自动发送到平台。”该团队计划在接下来的六个月里把所有人带到朗斯。

展望未来,Goel和他的团队有一个长期的愿景,即从一个监测团队成长为一个成熟的可观测团队。“我们还想在Gojek中处理日志记录和跟踪,”他说。“洛基很容易与皮质配合,所以在未来我们想探索洛基的伐木。”

最初发表于:https://cortexmetrics.io/

行业
旅游和交通

公司规模
3000 +员工

总部
雅加达,印度尼西亚

bob手机app官网产品/项目使用

普罗米修斯

皮质

79bob官方下载