# datasource-monitor **Repository Path**: jktantan/datasource-monitor ## Basic Information - **Project Name**: datasource-monitor - **Description**: 使用p6spy以及dropwizard-metrics来实现hikari的数据源监控功能 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 3 - **Created**: 2018-11-23 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # datasource-monitor #### 项目介绍 使用p6spy以及dropwizard-metrics来实现hikari的数据源监控功能 #### 软件架构 > 注意,当然只支持springboot * datasource-monitor-core:核心功能部分,提供接口供UI调用 * datasource-monitor-spring-boot-starter: springboot自动化启动部分 * datasource-monitor-ui: datasource-monitor-core的可视化部分 #### 使用说明 ##### p6spy部分 datasource-monitor提供两个p6spy的appender,分别是**AnalyzeLogger**和**AnalyzeWithSlf4jLogger**: * com.gitee.jktantan.datasource.monitor.analyze.p6spy.appends.AnalyzeLogger: 只输出到控制台 * com.gitee.jktantan.datasource.monitor.analyze.p6spy.appends.AnalyzeWithSlf4jLogger: 输出到日志 使用方法: 请在p6spy配置文件spy.properties中设置如下: ```properties # specifies the appender to use for logging # Please note: reload means forgetting all the previously set # settings (even those set during runtime - via JMX) # and starting with the clean table # (only the properties read from the configuration file) # (default is com.p6spy.engine.spy.appender.FileLogger) appender=com.gitee.jktantan.datasource.monitor.analyze.p6spy.appends.AnalyzeWithSlf4jLogger ``` ##### HikariCP部分 HikariCP默认状态下,HikariCP无需特殊的配置,该插件会自动将HikariCP注册到Dropwizard metrics中。但请注意,因为高版本HikariCP的限制(高版本中,HealthCheck必须在初始化HikariCP时进行),该插件并不开启HealthCheck功能。如果想使用HealthCheck功能,请按以下教程配置: 1. 引入datasource-monitor 2. 手动生成datasource,如下: ```java @Configuration public class DatasourceConfiguration { @Value("${spring.datasource.username}") private String user; @Value("${spring.datasource.password}") private String password; @Value("${spring.datasource.url}") private String dataSourceUrl; @Value("${spring.datasource.driverClassName}") private String driverClassName; @Value("${spring.datasource.connectionTestQuery}") private String connectionTestQuery; @Autowired private MetricRegistry metricRegistry; @Autowired private HealthCheckRegistry healthCheckRegistry; @Bean public DataSource primaryDataSource() { Properties dsProps = new Properties(); dsProps.setProperty("url", dataSourceUrl); dsProps.setProperty("user", user); dsProps.setProperty("password", password); Properties configProps = new Properties(); configProps.setProperty("connectionTestQuery", connectionTestQuery); configProps.setProperty("driverClassName", driverClassName); configProps.setProperty("jdbcUrl", dataSourceUrl); HikariConfig hc = new HikariConfig(configProps); hc.setDataSourceProperties(dsProps); //这里配置 hc.setMetricRegistry(metricRegistry); hc.setHealthCheckRegistry(healthCheckRegistry); return new HikariDataSource(hc); } } ``` #### 其他说明 * uri 说明 * http://地址/上下文/dsmonitor/querystats : 获取SQL计量 * http://地址/上下文/dsmonitor/queryds: 获取数据源列表(这个列表会显示所有数据源) * http://地址/上下文/dsmonitor/dsstats: 获取数据源计量 * datasource-monitor-ui的使用:访问 http://地址/上下文/dsmonitor/index.html 即可 #### 截图 ![SQL监控](https://gitee.com/jktantan/datasource-monitor/raw/master/img/querystats.png) ![数据源监控](https://gitee.com/jktantan/datasource-monitor/raw/master/img/dsstats.png)