Grafana 仪表板将执行程序池的“boundedElastic”与“parallel”分开
Posted
技术标签:
【中文标题】Grafana 仪表板将执行程序池的“boundedElastic”与“parallel”分开【英文标题】:Grafana dashboard separating "boundedElastic" vs "parallel" for executor pool 【发布时间】:2021-09-16 00:42:18 【问题描述】:关于如何构建区分“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)
但到目前为止还没有运气。 请问一下正确的做法是什么? 谢谢
【问题讨论】:
【参考方案1】:在演示项目中,指标存储在 Prometheus 中,并使用PromQL 进行查询。每个指标可以有多个标签,每个标签可以有多个值。可以通过标签和值选择指标,例如my_metricfirst_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)
。所以 regex-match 在这里对于匹配 =~
运算符的值很有用。
PromQL 查询仅适用于 parallel
:
sum (executor_pool_size_threadsreactor_scheduler_id=~"parallel.*") by (reactor_scheduler_id)
PromQL 查询仅适用于 boundedElastic
:
sum (executor_pool_size_threadsreactor_scheduler_id=~"boundedElastic.*") by (reactor_scheduler_id)
【讨论】:
以上是关于Grafana 仪表板将执行程序池的“boundedElastic”与“parallel”分开的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Terraform Grafana 提供程序动态地将仪表板放在正确的文件夹中