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狀況)
數據源監控