Lightbend 如何在 Grafana Cloud 上监控 Akka Serverless 平台即服务基础设施
当像 Capital One、PayPal 和 Verizon 这样的顶级公司需要为其要求严苛的、全球分布式、云原生应用程序环境和流数据管道提供平台时,它们都转向了 Akka—— 这是 Actor 模型最受欢迎的实现,用于在 Kubernetes 上运行的云原生应用程序。
Akka 背后的公司是 Lightbend,它是云原生应用程序和架构领域的领导者。十多年来,Lightbend 一直为构建数据密集型系统提供可伸缩、高性能的微服务框架和流处理引擎,这些系统经过优化以在云原生基础设施上运行。
2021 年 6 月,Lightbend 发布了 Akka Serverless 的开放测试版(2021 年 11 月正式发布),这是一种新型云原生开发平台即服务。可观测性不仅对 Akka Serverless 的成功至关重要,对 Lightbend 本身也同样重要。毕竟,该公司首席站点可靠性工程师 Fernando Costa 表示,“如果你为一家公司提供服务或托管数据,并且发生了事件,你可能会失去客户。”出于这个原因,该公司依赖 Grafana Cloud 来监控其 Kubernetes 集群。
由于我们拥有的工具,Akka Serverless 至今尚未出现停机。
Fernando Costa,Lightbend 首席站点可靠性工程师
使用 Akka Serverless,Lightbend 将“状态”与函数协同定位,这意味着当函数需要数据时,数据就会被传递给函数。通过这种独特的方法,Akka Serverless 为开发者带来了 API优先、无数据库的编程模型和无服务器运行时。“没有可观测性,我们将无法运营 Akka Serverless。它就是一切。”Costa 说,“我们在不知道这些函数做什么或其任何逻辑的情况下运行它们,但我们需要保持它们运行,并有一种良好的方式收集它们的指标。可观测性从外部为我们提供了更好的理解,因为我们无法检查函数本身。”
Costa 解释说,通过自动化,Lightbend 还可以同时掌握所有客户的函数,而无需有人时刻检查它们。“我们现在有客户正在使用该系统,他们可以在几秒钟内从两个 pod 扩展到 100 个 pod。”但如果没有 Grafana Cloud,Lightbend 可能不会知道这一点。他说:“没有这样的工具,我们就无法检测任何可能的异常或故障并进行告警。你无法同时监控所有人。”
使用 Grafana 进行监控有助于 Lightbend 缩短响应时间,以满足 SLA 和 SLO。“我们可以查看 Akka Serverless 是否正常工作——并证明它正在工作,并且我们的服务器正在及时响应。”他解释说。
可观测性帮助 Lightbend 掌握并预测客户的体验。“你不想发生事件却不知道——或者更糟糕的是,让客户告诉你。”Costa 说,“监控的价值在于,甚至在你的客户注意到之前,或者在某些情况下,在任何事情发生之前,你就知道出了问题。”
从零开始
Costa 于 2020 年加入 Lightbend,在那之前,Akka Serverless 还没有集中的可观测性工具。他从之前做系统管理员的工作中熟悉 Grafana,并已经使用了大约四年。
当他第一次尝试 Grafana 时,Costa 对其开箱即用的易用性印象深刻。“只需开始绘制图表就非常棒。”他说。他补充说,在可观测性方面,“它是预测或预防问题的完美工具。”
快进到 Costa 开始思考如何满足 Lightbend 的需求时。他很快意识到 Grafana 是一个完美的匹配,尤其因为他的同事们都是开源爱好者。“而且,我们编写的所有库都可以轻松地使用 Prometheus 暴露指标。”他说,“这是一个双赢的局面。”Costa 也喜欢 Grafana 提供的灵活性。“更棒的是,我可以用同一个工具处理多个数据源。”
在最终选择 Grafana 之前,Costa 测试了另一个竞品解决方案进行比较。他认为它对于指标和事件的基本监控来说还可以,但无法满足 Lightbend 的高级需求。这些需求包括能够处理数据并确保用户部署正常运行,同时保持项目严格的 IaaC 标准。他说:“如果你需要自己发布指标,Grafana 是一个更好的选择。”
一旦 Costa 确定 Grafana 是他选择的 Stack,他就面临另一个决定:如何以最佳方式托管、管理和部署它,以优化其团队的工作量和 Grafana 随着 Lightbend 业务需求进行扩展的能力。
我们需要专注于我们的产品,而不是其他东西。而 Grafana Cloud 让我们安心去做这件事。
Fernando Costa,Lightbend 首席站点可靠性工程师
尽管 Costa 之前有自托管 Cortex 的经验,并且有 Lightbend 也可以做到这一点的脚本,但这种设置有太多的缺点。Costa 解释说:“维护它就像全职员工的工作,而且存在安全隐患。它至少需要另一个集群,而且我们必须将数据发送到别处,并确保数据正确存储。我还认为我们旁边会有 Cortex 和 Thanos,所以处理起来很麻烦。”
Costa 还向他的经理展示了涵盖所有这些的成本与 Grafana Cloud 的成本相比。出于所有这些原因,决定注册 Grafana Cloud——并将可伸缩性、可用性、备份等问题留给 Grafana Labs——是一个轻松的决定。他说:“每个人都很高兴。对我们来说,Grafana 将是最简单的续订。”
得益于 Grafana Cloud,Costa 能够专注于 Akka Serverless 的性能,而不是运行可观测性基础设施 Stack。“我们需要专注于我们的产品,而不是其他东西。”他说,“而 Grafana Cloud 让我们安心去做这件事。”
数据流设计
在决定了最适合 Lightbend 的工具和部署方法后,Costa 着手确保其架构正确。
Lightbend 在 Kubernetes 中管理和编排容器,并在同一集群上运行 Prometheus。他们在生产中有两个 Kubernetes 集群,共有 54 个节点和 343 个客户(并且还在增长)。在 Grafana Cloud Metrics 中,该公司为 Prometheus 和 Graphite 拥有超过 42 万个活跃系列。
Lightbend 主要从 Prometheus 拉取数据,但也从 Google Stackdriver 拉取。“我不是仅仅拉取数据并将其导出到 Prometheus,而是直接从 Google 读取。”Costa 说。该公司目前还拥有 Postgres 和 Graphite 数据源,并且依赖 Grafana Cloud Metrics 同时处理 Prometheus 和 Graphite 的数据。

Costa 创建了 Lightbend 的第一个 Grafana Dashboard,并且正在构建 Node Exporter、API 服务器、Kubernetes API 和 Istio 等类型的 Dashboard。但是这个工具变得如此受欢迎,以至于现在用户——甚至不是他团队的成员——也正在创建自己的 Dashboard 来解决 Costa 团队在第一次设置 Grafana 系统时甚至没有想到的问题。门户中有超过 25 名成员。“我们有很多人在创建 Dashboard。”他说,“有些人甚至在运行 BI。”
如果公司中有任何团队正在运行 Kubernetes 并希望添加指标以便在 Grafana 中进行分析,他们只需要正确地标记 pod 和部署即可。Costa 说:“每天都有新事物出现。使用其他工具是不可能做到这一点的——或者需要我们编写代码并在我们的代码中进行更改才能实现。考虑到 Grafana Cloud Metrics 开箱即用的功能,这两种方式都不值得。”
Costa 每天发送一份由 Grafana 生成的报告,他说 Lightbend CEO Jonas Bonér 甚至注意到了图表中的数据。“有一次他问为什么某一个数字有一天是 20 毫秒,而第二天是两秒。”Costa 在查看一个更详细的 Dashboard 后不到两分钟就找到了答案。
对 Grafana 的投资不仅帮助了整个公司,而且改变了 Costa 和他的团队的工作方式。“如果没有 Grafana,我的团队的生活将是一场噩梦。”他说,“不是每个人都能访问 Kubernetes 和我们的其他生产环境,所以任何需要指标的人都会来找我们询问。我脑子里没有现成的命令来计算或汇总指标,所以这将花费很多时间来获得他们的答案。”相反,Costa 和他的团队可以专注于查看趋势并提前应对任何潜在的问题。
关键 Dashboard
Costa 和他的团队不断在 Grafana 中工作,以跟踪 Akka 上发生的事情,并且他们的一些 Dashboard 是他们经常使用的。以下是 Lightbend 一些关键 Dashboard 的示例
Akka Serverless 通用指标
Costa 最喜欢的 Dashboard 之一是用来监控高级指标的。Dashboard 上的面板包括总项目数、活跃项目数、在 Akka Serverless 上运行的服务、gRPC 请求、命令、趋势、告警等等。这是每天在公司内部共享的数据。“它几乎包含了过去 24 小时内的所有数字,”他解释说,“没有我们无法显示的数据。”

Costa 回忆起一次事件,当时 Grafana Dashboard 和告警帮助 Lightbend 避免了一个可能出现的重大挑战。一次重大的 Google 服务中断影响了几家公司,但在 Google 宣布该事件之前,Costa 说他的团队注意到新的节点没有启动。“即使在这次重大服务中断期间,我们也能够保持系统正常运行,因为我们看到了所有指示出了问题的迹象,并开始进行测试。他们两天都无法启动节点,但由于我们的 Grafana Dashboard 触发了告警,告诉我们即将出现问题,我们已经启动了额外的节点,并能够度过 Google 的问题,而没有对我们的客户产生任何连锁效应。”
运营
下面的 Dashboard 被 Lightbend 的 Akka Serverless 和运营团队使用,它节省了大量时间。Costa 说:“基本上,如果我有任何问题,我可以来这里查看正在发生的事情,而无需访问 Kubernetes 或登录系统。我们可以看到所有生产部署、所有容器、所有正在运行的一切。我还可以按命名空间选择并查看请求的运行情况,或者检查 sidecar 中的数据。”

通过无需手动收集所有信息,Costa 估计使用 Grafana Dashboard 可以为支持团队成员每次遇到问题时节省至少 20 到 30 分钟——考虑到他们每周可能会遇到两到三个问题,这随着时间和团队成员的增加,累计起来会很多。他说:“最终,这是非常节省时间和成本的。”
然而,这不仅仅是节省时间和金钱。Costa 说:“这关乎安全。如果需要,我可以访问生产环境,但我甚至不需要每天访问 Kubernetes。如果我需要检查什么,只需来到这个 Dashboard。”
除了 Costa 和他的团队之外,Lightbend 的技术支持团队也充分利用了 Grafana 为他们提供的安全单点视图。“他们对我们的生产环境的访问权限非常有限,所以他们每天都使用这个 Dashboard 来查看发生了什么,或者某个容器的 CPU 是否未运行——无论问题是什么——作为支持 Akka Serverless 开发人员的一种方式。”
合成监控
Lightbend 还使用合成监控,这是 Grafana Cloud 的一个关键功能。下面的 Akka Serverless 指标 Dashboard 包括一些外部端点的时间,Costa 使用合成数据计算这些时间。他计划做更多的事情。他解释说:“我们现在正在设计如何使用合成监控来监控每个部署服务的响应时间和可用性,从不同的地理位置进行——就像一个基本验证。”Lightbend 将把这部分内容用于其 SLO 报告。
这个合成 Dashboard 监控 Akka Serverless 的 API 可用性。它的 API 是系统的关键部分之一,因为它是客户与系统交互和管理其服务的入口点。

开源与支持
非开源的可观测性工具无法完全可见软件的运行情况,因此 Grafana 的好处之一是客户可以自己寻找(或创建)问题的解决方案。Costa 说:“我通常会打开 GitHub,尝试查找一些东西,或者自己编写代码来更改一些东西。”
当 Lightbend 遇到管道损坏时,他能够参考 GitHub 中的 Grafana 源代码,并在测试中运行一个 Docker 容器以快速确认问题。随时掌握这些信息加速了与 Grafana 团队的支持。“他们的响应很快,”他说,“我得到了所有我需要的答案。”
展望未来
Lightbend 推出了 Akka Serverless 的性能测试,并一直在使用 Grafana 作为其中的一部分。Costa 说:“我们正在旧版本上运行性能测试,将数据推送到 Grafana,应用升级,再次运行,然后进行比较,并寻找 drastic changes 的告警。一旦我们有足够的数据来确定合适的阈值,就应该会发出告警。”
他希望 Lightbend 未来能开始使用 Loki(和 Grafana Cloud Logs),这样他就可以无缝地关联指标和日志了。目前,Lightbend 的日志存储在 Google Cloud Platform 中,所以 Costa 构建的 Dashboard 中包含链接可以返回到 Google Stackdriver,并选择正确的命名空间。他说:“但这不一样。我是一个非常视觉化的人,所以如果我能将事物可视化以进行关联,而不是通过链接跳转,会对我非常有帮助。”
当他思考自己在 Lightbend 如何依赖 Grafana 时,Costa 对技术进步多年来如何改变监控和可观测性感到惊叹。“十年前,我管理着大约 200 台服务器。它们都有名字——就像宠物一样。而现在完全不同了。就像我们有一群牛一样。”他说,“能够通过可观测性和自动化管理数千台服务器和数千个应用程序真是太棒了。有很多工具帮助我们,Grafana 就是其中之一。”