监控发布/订阅服务

时间:2021-02-02 15:30:19

标签: node.js apache-kafka redis monitoring prometheus

对于在 Kafka/Redis 中读取/写入主题的每个服务,我们希望在 Prometheus 中拥有一些基本指标:

  1. 每个主题的写入速度有多“快”
  2. 每个主题的读取速度有多“快”
    • 在 Kafka 中,我可能想确定每个 group-id 读取的“速度”。

要确定从主题读取的“速度”,可以考虑一种机制,某人以 10 秒的间隔发布相同的消息,消费者在完全处理完该消息后将其发送给 Prometheus。如果图表显示每 12 秒读取一次消息,则意味着我们在读取任何消息时有 2 秒的延迟。

对于系统上的每个主题,它看起来像是大量重复的手动工作

问题

我的提议有意义吗?在普罗米修斯中,是否有关于如何确定 redis/kafka/... 中每个主题的读/写“滞后”/“速度”的最佳实践/工具?

1 个答案:

答案 0 :(得分:1)

我曾经遇到过完全相同的问题。

手动维护每个主题的指标非常累人,而且根本无法扩展。

我改用 kafka_exporter 中的 kafka_consumergroup_lag 指标 这与消费者群体一起,主题标签足以让我们知道哪个主题没有被阅读/落后以及哪个消费者群体。

还有其他指标,例如消息读取率。

至于在时间方面转换这种滞后,要么将生产时间附加到 kafka 消息,并在 kafka 管道的另一端读取它,然后通过千分尺将时间差从应用程序导出到 Prometheus。

或者更好:- 使用 OpenTracing 工具(如 Jaeger

)使用跟踪来跟踪Piepline 中的每条消息

使用 this 进行 Redis 监控。

所有这些导出器都以 Prometheus 格式发送数据,并且可以直接集成。