druid监控设置以及常见问题解决方案

来源:互联网 发布:php没有大数据框架吗 编辑:程序博客网 时间:2024/06/05 04:28

配置监控

1.打开监控统计
<!-- 配置数据源 使用的是Druid数据源 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
        init-method="init" destroy-method="close">
        <!-- 基本属性 url、user、password -->
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />

        <!-- 配置初始化大小、最小、最大 -->
        <property name="initialSize" value="10" />
        <property name="minIdle" value="10" />
        <property name="maxActive" value="20" />

        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="60000" />

        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000" />

        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="300000" />

        <property name="validationQuery" value="SELECT 'x' FROM DUAL" />
        <property name="testWhileIdle" value="true" />
        <property name="testOnBorrow" value="false" />
        <property name="testOnReturn" value="false" />

        <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
        <property name="poolPreparedStatements" value="true" />
        <property name="maxPoolPreparedStatementPerConnectionSize"
            value="20" />

        <!-- 配置监控统计拦截的filters -->
        <property name="filters" value="stat,wall" />

    </bean>


2.展示监控统计

在web.xml里配置

<!-- 展示Druid的统计信息,统计数据源和sql  -->
<servlet>
    <servlet-name>DruidStatView</servlet-name>
    <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    <init-param>
        <!-- 白名单 -->
        <param-name>allow</param-name>
        <param-value>192.168.1.120/24,111.206.116.68,127.0.0.1</param-value>
    </init-param>
    <init-param>
        <!-- 用户名 -->
        <param-name>loginUsername</param-name>
        <param-value>account</param-value>
    </init-param>
    <init-param>
        <!-- 密码 -->
        <param-name>loginPassword</param-name>
        <param-value>tyts</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>DruidStatView</servlet-name>
    <url-pattern>/druid/*</url-pattern>
</servlet-mapping>
<!-- 如果需要监控uri,设置Web关联监控配置 -->
<filter>
    <filter-name>DruidWebStatFilter</filter-name>
    <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
    <init-param>
        <param-name>exclusions</param-name>
        <!-- 排除统计干扰 -->
        <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>DruidWebStatFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>


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

注意点

1.访问权限(这里有两层限制)
      (1)限定指定的ip可以访问。

             如果是限定指定ip,可以直接写完整的ip。例如111.206.116.68。

             如果是限定指定的子网里的所有ip都可以访问,那就是ip/子网掩码数。例如 192.168.1.120/24 就相当于192.168.1.*

      (2)需要通过用户名和密码才可以进入展示页面(去掉web.xml中的初始化配置用户名和密码则可以不用登陆直接访问)
2.统计的filters
    druid提供了一些内置filter实例。这里用的是stat和wall。一个是用于监控,一个是用于防火墙
    如果想使用sql防火墙,必须加上wall
3.weburi-detail.html详情页里不能显示带.json后缀的uri详情,因为在druid的代码进行了处理
if (url.startsWith("/weburi-") && url.indexOf(".json") > 0) {
    String uri = StringUtils.subString(url, "weburi-", ".json");
    return returnJSONResult(RESULT_CODE_SUCCESS, getWebURIStatData(uri));
}

可能遇到的问题以及解决方案

1、如果使用的是druid-1.0.12.jar,可能会遇到sql监控没有数据的问题。

     解决:换成druid-1.0.11.jar就可以解决,本人没有试其他版本另外servlet和其他servlet的前后位置也会影响。

2、Spring监控没有数据

     解决:

在spring.xml文件中配置以下代码(不要在spring-mvc.xml中配置)

<!-- druid spring monitor setting -->
<bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor" /><bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype"><property name="patterns">

<list>

<value>cn.XXX.XXX.service.*</value>

<value>cn.XXX.XXX.dao.*</value>

</list>

</property>

</bean>

<aop:config proxy-target-class="true">

<aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" />

</aop:config>





0 0
原创粉丝点击