Grafana 仪表板将执行程序池的 "boundedElastic" 与 "parallel" 分开

Grafana dashboard separating "boundedElastic" vs "parallel" for executor pool

关于如何构建将“boundedElastic”与“parallel”分开的 Grafana 仪表板的小问题。

目前使用 Spring Webflux 应用程序,我开箱即用,对 Reactor Core 非常有用的指标。​​

executor_pool_size_threads
executor_pool_core_threads
executor_pool_max_threads

etc

Reactor 团队甚至提供了默认仪表板,因此我们可以看到状态:

https://github.com/reactor/reactor-monitoring-demo

不幸的是,当前的仪表板混合了“boundedElastic”和“parallel”,我正在尝试构建相同的仪表板,但“boundedElastic”和“parallel”是分开的。

我试过了:

sum(executor_pool_size_threads{_ws_="my_workspace"}) by (reactor_scheduler_id, boundedElastic)

但到目前为止运气不好。 请问正确的做法是什么? 谢谢

在演示项目中,指标存储在 Prometheus 中,并使用 PromQL 进行查询。每个指标可以有多个标签,每个标签可以有多个值。指标可以通过标签和值来选择,例如my_metric{first_label="first_value", second_label="another_value"} 选择 my_metric,其中两个标签都匹配相应的值。

因此在您的示例中,指标 executor_pool_size_threads 具有标签 reactor_scheduler_id。但是,这些值包含调度程序名称以外的更多信息。在我的机器上(由于默认池大小),值是:parallel(8,"parallel")boundedElastic("boundedElastic",maxThreads=80,maxTaskQueuedPerThread=100000,ttl=60s)。因此,正则表达式匹配在这里对于使用 =~ 运算符匹配值很有用。

PromQL 查询仅针对 parallel:

sum (executor_pool_size_threads{reactor_scheduler_id=~"parallel.*"}) by (reactor_scheduler_id)

PromQL 仅查询 boundedElastic:

sum (executor_pool_size_threads{reactor_scheduler_id=~"boundedElastic.*"}) by (reactor_scheduler_id)