Druid使用起步1

http://www.kankanews.com/ICkengine/archives/27640.shtml

当我们在javaWEB项目中使用到druid来作为我们的连接池的时候,一定不会忘了添加监控功能。下面我们就来看一下,在一个简单的web项目中(尚未使用任何框架)我们是如果来配置我们的web.xml来完成我们的监控配置

首先是过滤器filter的配置,在web.xml中添加如下配置

<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>

过滤器中的配置,是用来定义我们的监控选项,在以上的监控配置中,我们定义了一个简单的监控,并采用了大量的默认配置,如果你想使用更丰富的监控配置,可以在druid的github wiki上获取更多的选项,地址:druid Filter 配置

选项配置结束之后,就是我们监控界面的路径配置了,servlet配置我们将在哪里打开我们的监控页面,在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>

以上配置中,我们将我们的网页监控路径放在了,项目路径下的 druid路径中,类似于 www.myroject.com/druid.

同样的,上面的配置只是一个简单的配置,更丰富的选项,需要您移步:druid servlet 配置

至此,一个简单的web项目就配好了监控的页面,但是大多数人在开发javaWEB项目中时都避免不了使用到各种框架和其他的技术,我将在后面的博文中陆续写出相应的配置方式。


WebStatFilter用于采集web-jdbc关联监控的数据。

配置WebStatFilter


web.xml配置

  <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>

exlusions配置

经常需要排除一些不必要的url,比如.js,/jslib/等等。配置在init-param中。比如:

    <init-param>
        <param-name>exclusions</param-name>
        <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
    </init-param>

sessionStatMaxCount配置

缺省sessionStatMaxCount是1000个。你可以按需要进行配置,比如:

    <init-param>
        <param-name>sessionStatMaxCount</param-name>
        <param-value>1000</param-value>
    </init-param>

sessionStatEnable配置

你可以关闭session统计功能,比如:

    <init-param>
        <param-name>sessionStatEnable</param-name>
        <param-value>false</param-value>
    </init-param>

principalSessionName配置

你可以配置principalSessionName,使得druid能够知道当前的session的用户是谁。比如:

    <init-param>
        <param-name>principalSessionName</param-name>
        <param-value>xxx.user</param-value>
    </init-param>

根据需要,把其中的xxx.user修改为你user信息保存在session中的sessionName。

注意:如果你session中保存的是非string类型的对象,需要重载toString方法。

principalCookieName

如果你的user信息保存在cookie中,你可以配置principalCookieName,使得druid知道当前的user是谁

    <init-param>
        <param-name>principalCookieName</param-name>
        <param-value>xxx.user</param-value>
    </init-param>

根据需要,把其中的xxx.user修改为你user信息保存在cookie中的cookieName

profileEnable

druid 0.2.7版本开始支持profile,配置profileEnable能够监控单个url调用的sql列表。

<init-param>
    <param-name>profileEnable</param-name>
    <param-value>true</param-value>
</init-param>

结果展示

Demo


Druid内置提供了一个StatViewServlet用于展示Druid的统计信息。

这个StatViewServlet的用途包括:

  • 提供监控信息展示的html页面
  • 提供监控信息的JSON API

注意:使用StatViewServlet,建议使用druid 0.2.6以上版本。

StatViewServlet配置


1. 配置web.xml

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://110.76.43.235:9000/druid/index.html 
http://110.76.43.235:8080/mini-web/druid/index.html 

2. 配置allow和deny

StatViewSerlvet展示出来的监控信息比较敏感,是系统运行的内部情况,如果你需要做访问控制,可以配置allow和deny这两个参数。比如:

  <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>128.242.127.1/24,128.242.128.1</param-value>
    </init-param>
    <init-param>
        <param-name>deny</param-name>
        <param-value>128.242.127.4</param-value>
    </init-param>
  </servlet>

判断规则

  • deny优先于allow,如果在deny列表中,就算在allow列表中,也会被拒绝。
  • 如果allow没有配置或者为空,则允许所有访问

ip配置规则

配置的格式

  <IP>
  或者
  <IP>/<SUB_NET_MASK_size>

其中

  128.242.127.1/24

24表示,前面24位是子网掩码,比对的时候,前面24位相同就匹配。

不支持IPV6

由于匹配规则不支持IPV6,配置了allow或者deny之后,会导致IPV6无法访问。

3. 配置resetEnable

在StatViewSerlvet输出的html页面中,有一个功能是Reset All,执行这个操作之后,会导致所有计数器清零,重新计数。你可以通过配置参数关闭它。

  <servlet>
      <servlet-name>DruidStatView</servlet-name>
      <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    <init-param>
        <param-name>resetEnable</param-name>
        <param-value>false</param-value>
    </init-param>
  </servlet>

猜你喜欢

转载自blog.csdn.net/bestone0213/article/details/49472055