博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Druid Monitor监控Java Web和Java SE项目
阅读量:5975 次
发布时间:2019-06-20

本文共 8127 字,大约阅读时间需要 27 分钟。

Druid Monitor

  对于数据源,大家已经接触了不少了。比如c3p0、dhcp、proxool等,之后又发现使用tomcat-jdbc可以大大的提高性能。但是针对于我们的高并发的系统来说,总希望能找到一个性能更好、更稳定的产品来代替。在开源中国上偶然发现了很多公司都在使用Druid这个数据源,然后搜索了一些相关资料,有人提供了这几个数据源的性能测试报告,突然发现这个数据源以很好的性能已经被大家普遍使用了。于是就想深入的研究一下这个数据源了。其实很多项目都是JavaSE的,但是官网针对于JavaSE的项目又没有具体说明应该怎么使用其监控统计功能。于是自己就看了一下源码发现了有配置jmxUrl的地方,可以想想这个应该就是针对于远程监控项目的配置了。在这里我就整理一下自己的使用情况供以后的人员参考,如果有错误的地方,也请大牛指证,我也多学习学习。

首先说明一下大家都知道的几个地址吧,也省的访客来回搜索了。

正式版本下载地址:Druid是一个开源项目,源码托管在github上:Druid 0.1.18之后版本都发布到maven中央仓库中,所以你只需要在项目的pom.xml中加上dependency就可以了。例如:

com.alibaba
druid
${druid-version}

也可以选择 Maven仓库查找公共的仓库地址:

接下来说明一下怎么查看DruidDataSource的监控数据。

对于web项目,使用起来很方便,只需要在web.xml中配置一下DruidStatView就行了。其它的Druid已经帮我们都实现了。

1.Druid Monitor监控Java Web项目

先说明一下数据源的配置情况吧,例:

com.XXX.stat.service.*
com.XXX.stat.dao.*
  尽管Druid已经说明只需要配置数据库中的url地址就可以帮我们自动来匹配driverClassName,但是发现如果不配置这个,日志中总是有一些警告,所以就配置了一下。官网提供了一下他自己的driverClassName有:
dbc:derby:=org.apache.derby.jdbc.EmbeddedDriver       jdbc:mysql:=com.mysql.jdbc.Driver  jdbc:log4jdbc:=net.sf.log4jdbc.DriverSpy  jdbc:oracle:=oracle.jdbc.driver.OracleDriver  jdbc:microsoft:=com.microsoft.jdbc.sqlserver.SQLServerDriver       jdbc:jtds:=net.sourceforge.jtds.jdbc.Driver    jdbc:postgresql:=org.postgresql.Driver     jdbc:fake:=com.alibaba.druid.mock.MockDriver       jdbc:hsqldb:=org.hsqldb.jdbcDriver     jdbc:db2:=COM.ibm.db2.jdbc.app.DB2Driver  jdbc:sqlite:=org.sqlite.JDBC       jdbc:ingres:=com.ingres.jdbc.IngresDriver      jdbc:h2:=org.h2.Driver     jdbc:mckoi:=com.mckoi.JDBCDriver
  接下来说一下web.xml中的配置参数都有什么,这里你也可以配置loginUserName和loginPassword,避免所有的人都可以看到你自己的数据库情况。这样子在你登录监控页面的时候就必须输入密码才可以访问了。当然也可以把你的IP加到allow之中,这样就只有你自己的机器可以访问这个监控界面了。例:
DruidWebStatFilter
com.alibaba.druid.support.http.WebStatFilter
exclusions
*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
sessionStatMaxCount
1000
profileEnable
true
principalSessionName
users.username
DruidStatView
com.alibaba.druid.support.http.StatViewServlet
allow
128.242.127.1/24,127.0.0.1
deny
192.168.1.118
resetEnable
false
loginUsername
druid
loginPassword
druid
DruidStatView
/druid/*
配置好web.xml之后,启动自己的JavaWeb服务,访问一下地址就可以看到Druid的监控界面。我在这里的访问地址是:http://192.168.1.118:8778/druid-monitor/druid/sql.html
   
输入用户名密码(druid/druid)就可以进入监控页面。
 
2.Druid Monitor监控JavaSE项目
  监控javaSE项目可以通过jmx访问远程服务端,也可以通过到服务端运行官网提供的druidStat.sh命令。先说明一下怎么通过Jmx来访问,这一种既方便也不至于登录生产环境的服务器。
  首先既然需要使用Jmx来访问,那么服务端就必须提供Jmx的访问端口和IP地址。那么需要在我们的启动文件中增加java的运行参数。需要添加-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname -Dcom.sun.management.jmxremote.port -Dcom.sun.management.jmxremote.authenticate -Dcom.sun.management.jmxremote.ssl参数来暴漏自己的服务器地址。例:linux的运行脚本  
RESINWEBINF=/home/v31/common-biz  LIBDIRS=${RESINWEBINF}/lib  CP=.:${RESINWEBINF}/resources  for Jars in `ls ${LIBDIRS}`  do  CP=${CP}:${LIBDIRS}/${Jars}  done    java  -Xms2048m -Xmx2048m -cp ${CP}   -Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.1.76  -Dcom.sun.management.jmxremote.port=9004  -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false  com.company.main.StartMain  >>logs/error.log 2>&1 &

 

然后再部署一个web项目来访问这个JMX的IP和端口。启动服务,检查我们的端口是否已经启动
 
最后在我们本地的web.xml中配置jmxUrl地址来访问就可以查看到数据源的监控数据。例
DruidStatView
com.alibaba.druid.support.http.StatViewServlet
jmxUrl
service:jmx:rmi:///jndi/rmi://192.168.1.76:9004/jmxrmi
DruidStatView
/druid/*

  配置好这些之后访问我们自己的web容器,发现果然可以查看统计信息了。还有人使用jconsole来访问,这个我没有尝试过,因为觉得那个操作对我来说太麻烦了。

3.Druid Monitor监控,使用druidStat.sh

  这个命令脚本在git源码的druid\src\main\scripts目录下,

druidStat.bat脚本为:

@echo off    rem Copyright 1999-2011 Alibaba Group Holding Ltd.  rem   rem Licensed under the Apache License, Version 2.0 (the "License");  rem you may not use this file except in compliance with the License.  rem You may obtain a copy of the License at  rem   rem      http://www.apache.org/licenses/LICENSE-2.0  rem   rem Unless required by applicable law or agreed to in writing, software  rem distributed under the License is distributed on an "AS IS" BASIS,  rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  rem See the License for the specific language governing permissions and  rem limitations under the License.      set _RUNJAVA="%JAVA_HOME%\bin\java.exe"  set _TOOLSJAR="%JAVA_HOME%\lib\tools.jar"    %_RUNJAVA% -classpath "./druid-0.2.6.jar;%_TOOLSJAR%" com.alibaba.druid.support.console.DruidStat %*
druidStat.sh脚本为:
#!/bin/sh    if [ -z "$JAVA_HOME" ] ; then    echo "Error: JAVA_HOME is not defined."    exit 1  fi    "$JAVA_HOME/bin/java" -Dfile.encoding="UTF-8" -cp "./druid-0.2.6.jar:$JAVA_HOME/lib/tools.jar" com.alibaba.druid.support.console.DruidStat  $@
有了这个脚本,我们就可以直接在服务器上运行看到统计信息。这里我只说明一下linux的查看方式。我们修改一下druidStat.sh的druid-0.2.6.jar的目录和名称,然后放到自己的服务器上运行即可。先说明一下命令的使用方法吧。
  看到了druidStat.sh的命令帮助,相信大家已经会了一多半了。接下来说明一下怎么使用。直接上图:
如果需要查看某一个ID的具体情况,可以使用-id -detail来查看sql的详情。
 
结尾:提供一个本项目的下载地址:
这个只是一个tomcat的运行项目包,而非源码包,所以直接复制到自己的tomcat中,然后修改其中的参数即可,不要导入到自己的eclipse中了。
 
原文地址:

转载于:https://www.cnblogs.com/kuoAT/p/8191747.html

你可能感兴趣的文章
10 Reasons Why Your Projects Should Use the Dojo
查看>>
利益驱动创新
查看>>
进制转换公式
查看>>
【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载【转】
查看>>
鼠标移动监听的注意事项
查看>>
linux 使用FIO测试磁盘iops
查看>>
POJ 1150 The Last Non-zero Digit 《挑战程序设计竞赛》
查看>>
asp.net C# 将数据导出到Execl汇总
查看>>
java 堆与栈的区别
查看>>
python安装pyopenssl
查看>>
在EXCEL指定SHEET页,指定文字位置,插入批注
查看>>
SQLServer导入Excel截断数据的解决办法
查看>>
canvas requestAnimationFrame 动画
查看>>
java线程:互斥锁与读写锁
查看>>
TS流 PS流 ES流
查看>>
10个步骤:如何成为iPhone游戏开发者
查看>>
【代码审计】使用SonarQube进行代码质量分析管理
查看>>
opencv+python机读卡识别(四)百度API进行数字识别
查看>>
算法踩坑6-二叉搜索树排序
查看>>
GCD的基本使用
查看>>