如何收集微服务之间的消息(总数和大小)?

How to collect messages (total number and size) between microservices?

我有一个基于微服务的软件架构。

有一个 php 应用程序协调微服务之间的通信和应用程序的整个逻辑。

我需要将微服务之间的通信模拟成图。

会有权重为 的边,代表微服务之间的亲缘关系。

我正在寻找一种工具来收集所有消息及其大小。

我了解到我已经部署了像 Zipkin 这样的分布式跟踪系统,并且可以完成此任务。

但是,我找不到如何收集我想要的消息。

这是我用于检测我的应用程序的 php 库

[https://github.com/openzipkin/zipkin-php]

关于其他工具或如何以不同方式使用 Zipkin 来实现我的目标的任何想法?

让我在此线程中添加我的三点。说到 Envoy,是的,当附加到您的应用程序时,它会从可观察性桶中添加许多有用的功能,例如网络级统计和跟踪。

问题来了,您是否考虑过 运行 服务网格中的遗留应用程序,例如 Istio?

Istio 为您简化了 Envoy 的部署和配置。它将 sidecar 容器(istio-proxy,实际上是 Envoy 实例)注入到您的 Pod 应用程序,并为您提供这些额外的功能,例如一组开箱即用的服务指标*。

示例:Envoy 以 Prometheus 格式生成的统计数据,如 istio_request_bytes 在 Kiali Metrics 仪表板中针对入站流量可视化为 request_size(查看屏幕截图)

*如@David Kruk 所述,您仍然需要在集群中部署 Prometheus 服务器才能将这些指标提取到 Kiali 仪表板。

您可以了解 Istio here. There is also a dedicated section on how to visualize metrics 收集的有关 Istio 的更多信息(例如请求大小)。