有人可以建议从节点集群(每个节点都是带有 Java 应用程序的 Tomcat Docker 容器)收集指标的最佳模式吗?
我们计划使用 ELK 堆栈(ElasticSearch、Logstash、Kibana)作为可视化工具,但我们面临的问题是如何将指标传递到 Kibana?
我们正在使用 DropWizard 指标库,它提供每个实例的指标(仪表、计时器、直方图)。
显然,一些指标应该针对每个实例进行收集(例如 CPU、内存等)——按集群聚合它们没有任何意义。
但是对于平均 API 响应时间、数据库调用持续时间等指标,我们希望有一个清晰的全局图片 - 即不是每个具体实例。
这就是我们犹豫的地方。我们应该:
- 只需将普通仪表值发送到 ElasticSearch 并允许 Kibana 计算平均值、百分位数等。在这种方法中,所有聚合都在 Kibana 中进行。
- 为每个实例使用计时器和直方图并发送它们 - 但由于该数据已按实例聚合(即计时器已提供百分位数以及 1 分钟、5 分钟和 15 分钟速率) - Kibana 应如何处理此问题以显示全局情况?聚合已经聚合的数据是否有意义?
提前致谢,
最佳答案
您将需要使用Metricbeat 。它支持 system level 的模块, Docker API ,和Dropwizard 。这将为您收集事件(没有任何预聚合)。
对于聚合和可视化,我将使用 time-series visual builder ,您可以在其中聚合每个容器、节点、服务、一切……它应该非常灵活,可以为您获得正确的数据粒度。
关于java - 从集群收集指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48036480/