概述
HikariCP提供了一些監控指標,他的監控指標都是基於MicroMeter提供出來的,而後支持Prometheus和Dropwizard。本次咱們將討論一下HikariCp的監控指標有哪些,爲何提供這些指標,以及我們如何去作監控。web
監控指標
就像com.zaxxer.hikari.metrics.PoolStats
提供的那樣,幾個重要的指標都存儲在poolState中。spring
-
totalConnections 總鏈接數,包括空閒的鏈接和使用中的鏈接。數據庫
-
idleConnections 空閒鏈接數服務器
-
activeConnections 活躍鏈接數app
totalConnections = activeConnection + idleConnections框架
-
pendingThreads 正在等待鏈接的線程數量。排查性能問題時,這個指標是一個重要的參考指標,若是正在等待鏈接的線程在至關一段時間內數量較多,能夠考慮擴大數據庫鏈接池的size。(即HikariCP的maxPoolSize)spring-boot
-
maxConnections 最大鏈接數,統計指標,統計到目前爲止鏈接的最大數量。性能
-
minConnections 最小鏈接數,統計指標,統計到目前爲止鏈接的最小數量。大數據
-
usageTime 每一個鏈接使用的時間,當鏈接被回收的時候會記錄此指標:
com.zaxxer.hikari.pool.HikariPool#recycle
ui -
acquireTime 獲取每一個鏈接須要等待時間,一個請求獲取數據庫鏈接後或者由於超時失敗後,會記錄此指標。
-
connectionCreateTime 鏈接建立時間
如何監控
這裏拿咱們比較熟悉的SpringBoot項目爲例,同時使用prometheus和grafana,項目中加入promethues的依賴:
implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'io.micrometer:micrometer-registry-prometheus:1.3.0'
同時在SpringBoot項目的application.properties配置文件中加入如下參數:
management.endpoints.web.exposure.include=prometheus 暴露prometheus格式化的指標,這樣能夠被promethues服務器抓取
接下來咱們須要啓動一個prometheus的服務,https://prometheus.io/download/ 而後更改下peometheus服務的默認配置再啓動,追加配置以下:
- job_name: 'prometheus-test' # job名稱 scrape_interval: 5s # 抓取時間間隔,這裏每5s像數據源請求一次 metrics_path: '/actuator/prometheus' static_configs: - targets: ['127.0.0.1:8080'] # 這裏是springBoot項目的地址
接着啓動一個grafana的服務,https://grafana.com/get 啓動後添加prometheus數據源,製做儀表盤等。
擴展知識
-
Micrometer Vendor-neutral application metrics facade(與供應商無關的應用程序指標外觀)。咱們能夠把它類比於日誌框架中的slf4j。把promethues類比於logback。應用程序直接依賴Micrometer來暴露指標。Micrometer比較受歡迎,已經做爲SpringBoot2.0內置的指標門面庫。
-
Dropwizard 一個Java框架,相似於SpringBoot,但國內使用較少。其中有提供metrics相關的功能。
-
Prometheus 一個監控器的實現,基於pull模型,定時像prometheus數據源拉取指標信息。作分析、處理和展現。