web.xmlcss
配置web应用的监控git
<servlet> <servlet-name>druidStatView</servlet-name> <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class> <init-param> <!-- 用户名 --> <param-name>loginUsername</param-name> <param-value>druid</param-value> </init-param> <init-param> <!-- 密码 --> <param-name>loginPassword</param-name> <param-value>druid</param-value> </init-param> <init-param> <!-- 密码 --> <param-name>loginPassword</param-name> <param-value>druid</param-value> </init-param> <init-param> <!-- 白名单ip --> <param-name>allow</param-name> <param-value>127.0.0.1</param-value> </init-param> <init-param> <!-- 清空计数 --> <param-name>resetEnable</param-name> <param-value>false</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>druidStatView</servlet-name> <url-pattern>/druid/*</url-pattern> </servlet-mapping>
<filter> <filter-name>DruidWebStatFilter</filter-name> <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class> <init-param> <!--过滤不监控的url类型--> <param-name>exclusions</param-name> <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value> </init-param> <init-param> <!-- url能够查看sql --> <param-name>profileEnable</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>principalCookieName</param-name> <!-- 对应cookie name --> <param-value>USER_COOKIE</param-value> </init-param> <init-param> <!-- 对应于Session name --> <param-name>principalSessionName</param-name> <param-value>USER_SESSION</param-value> </init-param> <init-param> <!--监控Session数--> <param-name>sessionStatMaxCount</param-name> <param-value>1000</param-value> </init-param> <init-param> <!--Session状态--> <param-name>sessionStatEnable</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>DruidWebStatFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
spring配置文件github
配置Spring-jdbc监控web
<!-- Spring-jdbc的信息 --> <bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor"> </bean> <bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype"> <property name="patterns"> <list> <!--拦截哪些类的方法--> <value>com.hollycrm..*Service*.*</value> <value>com.hollycrm..*dao*.*</value> </list> </property> </bean> <!--proxy-target-class="true"加上这个,采用基于类代理方式--> <aop:config proxy-target-class="true"> <aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" /> </aop:config>
注意:spring
<property name="connectionProperties" value="druid.stat.slowSqlMillis=5000;druid.stat.mergeSql=true"/> druid.stat.slowSqlMillis=5000:设置慢sql的时间 druid.stat.mergeSql=true:合并sql eg: 当你程序中存在没有参数化的sql执行时,sql统计的效果会很差。好比: 1. select * from t where id = 1 2. select * from t where id = 2 3. select * from t where id = 3 在统计中,显示为3条sql,这不是咱们但愿要的效果。StatFilter提供合并的功能,可以将这3个SQL合并为以下的SQL select * from t where id = ?
<property name="filters" value="stat,log4j,mergeStat,wall" /> stat:sql log4j:日志 mergeStat:合并sql wall:sql白名单
白名单: 可能 会致使某些sql不能执行,由于默认是不启动的。在workflow中添加备注的sql,没法执行。报sql注入。
参考文档:sql
http://blog.csdn.net/dengtaowei/article/details/45698367cookie
参考文档:session
https://github.com/alibaba/druid/wikiapp
http://blog.csdn.net/xiaoyu411502/article/details/51392237ui
效果:
Sql监控(sql执行的状况)
URI监控(每个请求的状况)
Spring与jdbc交互监控(service/dao的方法中jdbc状况)
数据源监控