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 提供程序动态地将仪表板放在正确的文件夹中

如何将Prometheus仪表板添加到Grafana

如何将用户和团队导入 grafana?

使用凭据或令牌从 Web 应用程序自动登录到 grafana

使用 Grafana API 进行自动身份验证

如何从代码在 Grafana 中配置 Cloudflare 应用程序?