配置druid连接池的内置监控统计功能

配置druid连接池的内置监控统计功能

打开监控统计功能

Druid的监控统计功能是通过filter-chain扩展实现,如果你要打开监控统计功能,配置StatFilter,具体如下所示

<!-- 数据库连接 -->
    <bean id="dataBasePasswordCallback" class="com.haiyoung.util.DataBasePasswordCallback"/>
    <bean id="dataSource_pyxis" class="com.alibaba.druid.pool.DruidDataSource"
          destroy-method="close" init-method="init" lazy-init="true">
        <!-- 基本属性 url、user、password -->
        <property name="url" value="${db.url}"/>
        <property name="username" value="${db.username}"/>
        <property name="password" value="${db.password}"/>
        <property name="connectionProperties"
                  value="......"/>
        <property name="passwordCallback" ref="dataBasePasswordCallback"/>

        <!-- 配置初始化大小、最小、最大 -->
        <property name="initialSize" value="${db.initialSize}"/>
        <property name="minIdle" value="${db.minIdle}"/>
        <property name="maxActive" value="${db.maxActive}"/>
        <!-- 配置获取连接等待超时的时间,单位是毫秒 -->
        <property name="maxWait" value="${db.maxWait}"/>
        <!-- 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true -->
        <property name="maxPoolPreparedStatementPerConnectionSize" value="${db.maxPoolPreparedStatementPerConnectionSize}"/>
        <!-- 配置间隔多久才进行一次检测(启动destroy线程),检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="${db.timeBetweenEvictionRunsMillis}"/>
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒;即最多允许一个连接空闲多长时间,超出此时间的连接,会被destroy线程关闭 -->
        <property name="minEvictableIdleTimeMillis" value="${db.minEvictableIdleTimeMillis}"/>
        <!-- 对空闲接连再被使用时,如果空闲时间超过timeBetweenEvictionRunsMillis,会发出验证sql进行有效检测 -->
        <property name="testWhileIdle" value="true"/>
        <property name="testOnBorrow" value="false"/>
        <property name="testOnReturn" value="false"/>
        <property name="validationQuery" value="${db.validationQuery}"/>
        <!-- 移除执行超时的sql,单位是秒 -->
        <property name="removeAbandoned" value="${db.removeAbandoned}"/>
        <property name="removeAbandonedTimeout" value="${db.removeAbandonedTimeout}"/>
        <property name="logAbandoned" value="true"/>

        <!-- 配置监控统计拦截的filters 
        Druid的监控统计功能是通过filter-chain扩展实现,如果你要打开监控统计功能,配置StatFilter,具体看这里
        -->
        <property name="proxyFilters">
            <list>
                <ref bean="druid_stat_filter"/>
                <ref bean="druid_wall_filter"/>
                <ref bean="druid_log_filter"/>
            </list>
        </property>
    </bean>

    <bean class="com.alibaba.druid.filter.stat.StatFilter" id="druid_stat_filter">
        <!-- 慢sql规则,单位毫秒 -->
        <property name="slowSqlMillis" value="10000"/>
        <!-- 记录慢sql到日志 -->
        <property name="logSlowSql" value="true"/>
        <!-- 统计时合并相似sql -->
        <property name="mergeSql" value="true"/>
    </bean>

    <!-- sql防御 -->
    <bean class="com.alibaba.druid.wall.WallFilter" id="druid_wall_filter">
        <!-- 记录违反规则的sql到日志 -->
        <property name="logViolation" value="true"/>
    </bean>

    <bean class="com.alibaba.druid.filter.logging.Slf4jLogFilter" id="druid_log_filter">
        <!-- 记录真正执行的语句,即参数已注入的sql -->
        <property name="statementExecutableSqlLogEnable" value="true"/>
        <!-- 其它配置 -->
        <property name="statementCreateAfterLogEnabled" value="false"/>
        <property name="statementPrepareAfterLogEnabled" value="false"/>
        <property name="statementParameterSetLogEnabled" value="false"/>
        <property name="statementCloseAfterLogEnabled" value="false"/>
        <property name="resultSetCloseAfterLogEnabled" value="false"/>
    </bean>

配置StatViewServlet

Druid内置提供了一个StatViewServlet用于展示Druid的统计信息。
这个StatViewServlet的用途包括:

  • 提供监控信息展示的html页面
  • 提供监控信息的JSON API
    StatViewServlet是一个标准的javax.servlet.http.HttpServlet,需要配置在你web应用中的WEB-INF/web.xml中。
    具体配置如下所示:
  <servlet>
      <servlet-name>DruidStatView</servlet-name>
      <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>DruidStatView</servlet-name>
      <url-pattern>/druid/*</url-pattern>
  </servlet-mapping>

根据配置中的url-pattern来访问内置监控页面,如果是上面的配置,内置监控页面的首页是/druid/index.html
http://ip:port/context-name/druid/index.html

监控页面展示

  • 数据源列表
    数据源列表
  • SQL监控
    SQL监控

druid监控功能很丰富,可以通过配置开启,官网wiki有详细介绍
https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章