如何使用 Grafana 监控 JDBC 调用和统计信息

Posted

技术标签:

【中文标题】如何使用 Grafana 监控 JDBC 调用和统计信息【英文标题】:How to monitor JDBC calls and statistics with Grafana 【发布时间】:2019-01-09 12:53:24 【问题描述】:

如何使用 Grafana/Prometheus 监控我的 Spring Boot 应用程序的 JDBC 调用(Oracle/MySql/PostgreSQL 等)统计信息?

我们有任何插件吗? 是否可以通过 Grafana/Prometheus 捕获这些统计信息?

具体来说,我正在寻找统计数据,例如,即

我与数据库有多少打开的连接? 我的数据库是否已启动? 哪些查询导致响应时间最长等?

【问题讨论】:

【参考方案1】:

您可以尝试使用micrometer。这是 Spring Boot 的指标提供程序。我目前正在做同样的事情,但我并不完全了解可以使用千分尺的所有方式。因此,希望以下信息对您有用。

有办法将spring boot应用端点暴露给prometheus,然后可以链接grafana来使用prometheus。查看此link 以获取有关如何执行此操作的示例

默认情况下,千分尺将包括 JvmMemoryMetrics、UptimeMetrics 等。但是您可以通过将其添加为 bean 在您的应用程序中使用以下包中提供的 绑定器

io.micrometer.core.instrument.binder

例如(用 Kotlin 编写的代码),

import io.micrometer.core.instrument.binder.db.PostgreSQLDatabaseMetrics
import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import javax.sql.DataSource

/**
 * Class to configure binders for micrometer metrics for this application
 */
@Configuration
open class MetricsConfiguration(private val dataSource: DataSource) 

    @Bean
    open fun jvmMemoryMetrics(): ClassLoaderMetrics 
        return ClassLoaderMetrics()
    

    @Bean
    open fun dbMetrics(): PostgreSQLDatabaseMetrics 
        return  PostgreSQLDatabaseMetrics(dataSource, "database-name")
    


如果需要,您还可以编写自定义活页夹和指标。有关这些的更多信息,请参阅micrometer docs。

【讨论】:

谢谢阿比舍克。我曾尝试探索千分尺,但它确实不符合我的要求。我正在寻找侵入性较小的解决方案(对本机应用程序)并且最好只需要更改配置而不更改代码。您知道我们还有其他适合此要求的工具吗?。【参考方案2】:

导出器有助于将主机的指标暴露给端点。 端点可以是/metrics/prometheus

您需要配置 prometheus.yml 以从端点抓取指标

Prometheus 官方文档有出口商列表

https://prometheus.io/docs/instrumenting/exporters/

您可以找到 Oracle、mysql 和 PostGresSQL 的导出器以及通用 JDBC 导出器。

您需要在您的数据库机器上安装此导出器以获取特定于数据库的指标。

对于 Spring Boot 应用程序相关的指标,例如“对数据库的查询次数”,您可以使用 Micrometer for Spring Boot 2.x 编写自定义指标

【讨论】:

嗨,Sania,从数据库指标收集的角度来看,您的回答是正确的。我们的要求是从应用程序端收集 prometheus 指标(因为多个应用程序可以连接到同一个数据库)以获取各个应用程序的以下 jdbc 统计信息 - numConnectionsDefaultUser、numBusyConnectionsAllUsers、numConnectionsAllUsers、threadPoolSize、maxPoolSize、numBusyConnections、numConnections 等......跨度>

以上是关于如何使用 Grafana 监控 JDBC 调用和统计信息的主要内容,如果未能解决你的问题,请参考以下文章

Grafana中如何使用Prometheus数据源监控elasticsearch

如何使用 Grafana 设置 Prometheus Operator 以启用基本 Kubernetes 监控

如何使用 Prometheus 和 Grafana 监控 Fastify 应用程序?

idou老师教你学Istio 26:如何使用Grafana进行可视化监控

石墨或grafana可以用来监控pyspark指标吗?

Grafana系列:如何去定义并配置更适合自己监控使用的变量