非web项目如何配置Druid监控

参考: http://blog.csdn.net/binglovezi/article/details/50610269
两种方式:
第一种方式.jmx
(2)修改项目的启动脚本,加上启动参数:
-Djava.net.preferIPv4Stack=true 
-Dcom.sun.management.jmxremote 
-Djava.rmi.server.hostname=192.168.10.89 
-Dcom.sun.management.jmxremote.port=9876 
-Dcom.sun.management.jmxremote.authenticate=false  
-Dcom.sun.management.jmxremote.ssl=false 
比如:
java -jar -Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.10.89   -Dcom.sun.management.jmxremote.port=9876  -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false "business.jar" &

(2)随便找一个web项目,配置监控的过滤器:
<!-- driud监控 -->
<servlet>  
	<servlet-name>DruidStatView</servlet-name>  
	<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>  
	<!-- 远程访问JavaSE项目使用jmx连接 -->  
	<init-param>  
		<param-name>jmxUrl</param-name>  
		<param-value>service:jmx:rmi:///jndi/rmi://192.168.10.89:9876/jmxrmi</param-value>  
	</init-param>  
	<init-param>  
		<param-name>loginUsername</param-name>  
		<param-value>admin</param-value>  
	</init-param>  
	<init-param>  
		<param-name>loginPassword</param-name>  
		<param-value>admin</param-value>  
	</init-param>  
</servlet>  
<servlet-mapping>  
	<servlet-name>DruidStatView</servlet-name>  
	<url-pattern>/druid/*</url-pattern>  
</servlet-mapping> 

第二种方式:sh
在服务端执行一下这个shell:
from: https://github.com/alibaba/druid/tree/master/src/main/scripts
#!/bin/sh
if [ -z "$JAVA_HOME" ] ; then
  echo "Error: JAVA_HOME is not defined."
  exit 1
fi
basepath=$(cd `dirname $0`; pwd)
dubboName=$(basename $basepath)
pid=$(ps -ef | grep $dubboName | grep -v grep | grep -v "$0" |  awk '{print $2 }')
#echo $pid
"$JAVA_HOME/bin/java" -Dfile.encoding="UTF-8" -cp "./lib/druid-1.0.5.jar:$JAVA_HOME/lib/tools.jar" com.alibaba.druid.support.console.DruidStat  $@ $pid

请在{'-sql','-ds','-act'}参数中选择一个或多个
Usage: druidStat -help | -sql -ds -act [-detail] [-id id] <pid> [refresh-interval]
参数: 
  -help             打印此帮助信息
  -sql              打印SQL统计数据
  -ds               打印DataSource统计数据
  -act              打印活动连接的堆栈信息
  -detail           打印统计数据的全部字段信息
  -id id            要打印的数据的具体id值
  pid               使用druid连接池的jvm进程id
  refresh-interval  自动刷新时间间隔, 以秒为单位


说明: 
  -sql,-ds,-act参数中要至少指定一种数据进行打印, 可以
    组合使用, 比如 -sql -ds 一起的话就打印两种统计数据
  -id id可以跟 -sql 或-ds组合, 比如  -sql -id 5 或 -ds -id 1086752
  pid必需指定, refresh-interval可选, 如不指定,则打印数据后退出
  pid和refresh-interval参数必需放在命令行的最后, 否则解析会出错


例子: 
  打印3983进程的sql 统计数据.
      >druidStat -sql 3983
  打印3983进程的ds统计数据.
      >druidStat -ds 3983
  打印3983进程的sql的id为10的详细统计数据.
      >druidStat -sql -id 10 -detail 3983
  打印3983进程的当前活动连接的堆栈信息
      >druidStat -act 3983
  打印3983进程的ds,sql,和act信息
      >druidStat -ds -sql -act 3983
  每隔5秒自动打印ds统计数据
      >druidStat -ds 3983 5


如果是web项目呢?
(1)配置Druid的过滤器
<!-- driud监控 -->
<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>admin</param-value>  
        </init-param>  
        <init-param>  
            <param-name>loginPassword</param-name>  
            <param-value>admin</param-value>  
        </init-param>  
</servlet>  
<servlet-mapping>  
	    <servlet-name>DruidStatView</servlet-name>  
	    <url-pattern>/druid/*</url-pattern>  
</servlet-mapping> 

当然,无论是web还是非web,两种情况下连接池的参数中一定要开启监控才行:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init"
          destroy-method="close">
        <!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass -->
        <property name="driverClassName" value="${jdbc.driver}"/>
        <!-- 基本属性 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="${jdbc.pool.init}"/>
        <property name="minIdle" value="${jdbc.pool.minIdle}"/>
        <property name="maxActive" value="${jdbc.pool.maxActive}"/>
        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="60000"/>
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000"/>
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="300000"/>
        <property name="validationQuery" value="${jdbc.testSql}"/>
        <property name="testWhileIdle" value="true"/>
        <property name="testOnBorrow" value="true"/>
        <property name="testOnReturn" value="false"/>
        <property name="proxyFilters">  
            <list>  
                <ref bean="stat-filter" />  
            </list>  
        </property>  
    </bean>
     <!-- 慢SQL记录-->  
    <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">  
        <property name="mergeSql" value="true" />  
        <property name="slowSqlMillis" value="500" />  
        <property name="logSlowSql" value="true" />  
    </bean>  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值