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

时间:2018-08-01 20:42:22

标签: jdbc grafana prometheus

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

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

具体来说,我正在寻找统计信息,例如

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

2 个答案:

答案 0 :(得分:1)

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

有多种方法可以将Spring Boot应用程序端点公开给Prometheus,然后可以链接grafana以使用Prometheus。请查看此link,以获取有关操作方法的示例

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

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

答案 1 :(得分:0)

导出器有助于将主机的度量标准公开给端点。 端点可以是import sys try: from pip._internal import main except: from pip import main def install(package, version): ## required syntax for these windows due to some security options installTrusted = ['install','--trusted-host=pypi.python.org','--trusted-host=files.pythonhosted.org','--trusted-host=pypi.org'] ## add package to syntax installTrusted.extend(package) try: ## install package main(installTrusted) except Exception as e: ## let the user know which module could not be downloaded print(e) if version==3: input('could not import ' + package[0]) else: raw_input('could not import ' + package[0]) if __name__ == "__main__": ## check which version of python is being used pythonVersion = sys.version_info[0] ## install packages install(['pip','--upgrade'], pythonVersion) install(['setuptools', '--upgrade'],pythonVersion) install(['pandas'], pythonVersion) install(['numpy'], pythonVersion) ## --------------------------------------------------------- ## this the section displayed on picture of error message if pythonVersion == 3: input('installing matplotlib') else: raw_input('installing matplotlib') install(['matplotlib'], pythonVersion) if pythonVersion == 3: input('done installing') else: raw_input('done installing') ## -------------------------------------------------------- install(['python-docx'], pythonVersion) install(['python-dateutil'], pythonVersion) install(['pathlib'], pythonVersion) install(['statsmodels'], pythonVersion) install(['scipy'], pythonVersion) install(['tqdm'], pythonVersion) install(['pillow'],pythonVersion) install(['python-resize-image'],pythonVersion) install(['shutil'],pythonVersion) install(['textwrap'],pythonVersion) /metrics

您需要配置/prometheus才能从终结点计算机抓取指标

Prometheus官方文档中有出口商列表

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

您可以找到Oracle,MySql和PostGres的导出器。

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

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