Solr 等几个基于 Java 的项目提供了两种获取指标的方法:
- 通过 Jolokia AND 读取 JMX mbeans
- 通过度量 REST API读取度量
从理论上讲,什么会更高效?
(假设现在是一个单节点集群)。
看起来基于 Jolokia 的指标可能性能更高,因为 Jolokia 进程不会像 Jetty 那样通过服务器的 Web 容器。相反,Jolokia 会在 java-process-to-java-process 级别获取 JMX 指标。REST API 肯定更容易理解和解析。但是,它涉及进行将通过码头的 REST 调用,可能会为每个请求占用一个线程?等等等等
Server ---> JMX ---> Jolokia ---> REST api of Jolokia
Server ---> REST api of Server itself
Jolokia 在这方面是不是更轻量级?请注意,轻量级意味着对服务器的影响,而不是整体延迟。metrics-fetch 调用应该尽可能减少对服务器的负担,metrics-fetch 调用的整体延迟实际上并不那么重要。
我们希望在其中一种方法之间进行选择,以每分钟从所有 Solr 节点查询指标并推送到 grafana。
对此有一些建议会很棒。