druid监控记录mysql_使用Druid监控SQL执行状态
本文使用Druid的连接池替换掉原来的C3P0连接池,然后配置Druid的相关属性,完成对spring web工程的JDBC监控。
其实,我采用Druid替换其它连接池,最关键的一个理由是Druid有对SQL执行的监控统计功能。 :)
本文就是来看看看Druid的监控功能。~~~ 一起玩起来 : )
Druid介绍
Druid是一个JDBC组件库,包括数据库连接池、SQL Parser等组件。DruidDataSource是最好的数据库连接池。参考Druid wiki上的文章 <>
Druild包获取
Maven工程中添加druid依赖包:
com.alibaba
druid
1.0.26
Druid使用
替换C3P0连接池
Web工程原先采用C3P0连接池的配置:
destroy-method="close">
改成Druid连接池DruidDataSource
destroy-method="close">
StatViewServlet配置
Druid内置提供了一个StatViewServlet用于展示Druid的统计信息。
这个StatViewServlet的用途包括:
提供监控信息展示的html页面
提供监控信息的JSON API
StatViewServlet是一个标准的javax.servlet.http.HttpServlet,需要配置在你web应用中的WEB-INF/web.xml中。
DruidStatView
com.alibaba.druid.support.http.StatViewServlet
DruidStatView
/druid/*
配置完之后,可以通过如下格式的地址在浏览器访问查看。
http:/://druid
举个例子:
如果host为localhost,port为8080,context为Demo,那么,可以通过如下URL访问。
http://localhost:8080/Demo/druid
那么问题来了
查看的时候,能否提供用户名和密码作为验证呢,而不是直接就能看JDBC执行的状态信息?
答案是肯定的。
需要在上述配置的情况下,配置Servlet的 loginUsername 和 loginPassword这两个初始参数。
如:
DruidStatView
com.alibaba.druid.support.http.StatViewServlet
loginUsername
druid
loginPassword
druid
DruidStatView
/druid/*
配置好之后,登录之后才能访问。
StatFilter配置
Druid内置提供一个StatFilter,用于统计监控信息。
如果没有配置StatFilter,那么,我们无法获取相关统计信息。
比如:
无法看到SQL监控TAB上的数据。
URI监控TAB中,无法获取JDBC相关的SQL执行信息。
如何展示出这些数据呢? 解决的办法就是配置StatFilter。
StatFilter的别名是stat,在spring中使用别名配置方式如下:
将上述stat添加到dataSource中去即可。
destroy-method="close">
添加完毕之后,再来看一下上述两个TAB ( SQL监控以及 URI监控)下JDBC的内容:
在SQL监控页面,可以很清楚地看到目前执行SQL的具体情况,包括某条SQL语句执行的时间(平均、最慢)、SQL执行次数、SQL执行出错的次数等。这些信息,可以作为系统SQL语句优化的一个指标。
在URI监控页,可以清楚地看到执行某个动作,关联SQL有多少,请求次数、执行时间、并发数等信息。
StatFilter可以和其他的Filter配置使用,比如, 与log4j组合使用。
这样,我们在点击 “记录日志并重置” 的按钮时,Console中就会输入JDBC相关日志,日志采用JSON的方式记录,如:
[INFO ][2016-11-15 20:11:11,677] com.alibaba.druid.pool.DruidDataSourceStatLoggerImpl.log(DruidDataSourceStatLoggerImpl.java:77) -
{"url":"jdbc:mysql://127.0.0.1:3306/Demo?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull","dbType":"mysql","name":"DataSource-958465974","activeCount":0,"poolingCount":1,"connectCount":0,"closeCount":0}
内置Filter别名和对应的Filter类名如下:
别名
Filter类名
default
com.alibaba.druid.filter.stat.StatFilter
stat
com.alibaba.druid.filter.stat.StatFilter
mergeStat
com.alibaba.druid.filter.stat.MergeStatFilter
encoding
com.alibaba.druid.filter.encoding.EncodingConvertFilter
log4j
com.alibaba.druid.filter.logging.Log4jFilter
log4j2
com.alibaba.druid.filter.logging.Log4j2Filter
slf4j
com.alibaba.druid.filter.logging.Slf4jLogFilter
commonlogging
com.alibaba.druid.filter.logging.CommonsLogFilter
慢SQL记录
StatFilter属性slowSqlMillis用来配置SQL慢的标准,执行时间超过slowSqlMillis的就是慢。slowSqlMillis的缺省值为3000,也就是3秒。
在上面的配置中,slowSqlMillis被修改为10秒,并且通过日志输出执行慢的SQL。
slowSqlMillis属性也可以通过connectProperties来配置,例如:
... ...
Wallfilter配置
配置WallFilter,可以起到拦截作用,从而形成SQL的白名单和黑名单。
缺省情况下,配置装载的目录如下:
数据库类型
目录
mysql
META-INF/druid/wall/mysql
oracle
META-INF/druid/wall/oracle
sqlserver
META-INF/druid/wall/sqlserver
postgres
META-INF/druid/wall/postgres
从配置目录中以下文件中读取配置:
deny-variant.txt
deny-schema.txt
deny-function.txt
permit-variant.txt
permit-variant.txt
指定配置装载的目录是可以指定,例如:
...
本文实例中,采用如下的配置:
init-method="init">
destroy-method="close">
配置好Wallfilter, 我们就可以看到SQL防火墙 TAB下的内容了。
因为是默认状态,没有配置任何拦截的属性信息,所以,SQL的执行都在白名单中展示出来了。
配置Spring和jdbc的关联
最后,还有一个Tab的内容没有展示,那就是Spring监控。
Druid提供了Spring和Jdbc的关联监控。
本文在Spring的applicationContext.xml配置文件中配置如下信息,支持方法名的拦截。
class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
scope="prototype">
com.demo.mybatis.auto.*
com.demo.mybatis.manual.*
pointcut-ref="druid-stat-pointcut" />
完工后,我们再去看一下,Spring监控的TAB内容,就可以看到相关的MyBatis Mapper执行信息。
在Spring监控页,可以显示相关DAO执行的方法,方法执行的次数、执行的时间等信息。
小结
通过上述几个部分的配置,监控页面上所有的TAB都可以查看信息了。
当然,Druid还有很多其他的功能,在这篇文章中就一一展示,有兴趣的朋友可以在Druid的Github网页上查看。
druid监控记录mysql_使用Druid监控SQL执行状态相关推荐
- 美团监控系统mysql_美团开源监控Cat安装与使用
序--之前一直在美团内部使用cat,十分便捷,这次单位内部要使用,拿来研究一番.其实Cat在GitHub上的部署文档已经比较详细了 服务端篇 一.准备环境 tomcat mysql jdk8 美团ca ...
- linux 监控进程重启,linux进程监控与自动重启的简单实现方法
linux进程监控与自动重启的简单实现方法 目的: linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能. 实现原理: 由定时任务crontab调用 ...
- druid监控数据转存mysql_使用Druid监控SQL执行状态
本文使用Druid的连接池替换掉原来的C3P0连接池,然后配置Druid的相关属性,完成对Spring web工程的JDBC监控. 其实,我采用Druid替换其它连接池,最关键的一个理由是Druid有 ...
- 使用Druid监控SQL执行状态
本文使用Druid的连接池替换掉原来的C3P0连接池,然后配置Druid的相关属性,完成对Spring web工程的JDBC监控. 其实,我采用Druid替换其它连接池,最关键的一个理由是Druid有 ...
- 架构小白到砖家-11-【数据库监控问题】-打开druid的监控封印
单应用框架终于解决了用户请求问题和数据存储问题,日常生产运营过程中随着业务发展,应用的性能将经受一个比较大的考验,而数据库SQL性能是在数据量增长过后,最容易产生查询性能问题.为了方便大家快速定位问题 ...
- Mysql实现监控数据统计分析:Druid开源分布式系统与阿里巴巴的Druid数据库连接池
看到Druid很多国内的开发者所熟知的就是阿里巴巴提供的开源数据库连接池工具.如果看了这篇文章还认为Druid仅仅是一个阿里巴巴提供的开源数据库连接池工具那么就错了,它或许指的是用于大数据实时处理的开 ...
- Druid 配置及内置监控,Web页面查看监控内容 【我改】
转: Druid 配置及内置监控,Web页面查看监控内容 1.配置Druid的内置监控 首先在Maven项目的pom.xml中引入包 1 2 3 4 5 <dependency> ...
- Druid 配置及内置监控,Web页面查看监控内容
1.配置Druid的内置监控 首先在Maven项目的pom.xml中引入包 <dependency><groupId>com.alibaba</groupId>&l ...
- 监控和剖析数据库操作P6Spy,SQL Profiler,SQL 使用简介
新一篇: 关于java类的动态装载 几乎 80% - 85% 的数据库性能问题是由于应用数据库的设计或者应用程序本身的代码所引起的.因此良好的事务处理能力需要在设计应用程序的时候,在设计数据库的时候就 ...
最新文章
- 项目使用encode_Spring Cloud Security:Oauth2使用入门
- Java并发编程—Synchronized底层优化(偏向锁、轻量级锁)
- 直方图绘制与直方图均衡化实现
- elementui from表单提交_elementui upload与form一起提交
- udl 连mysql_自己如何正确获取MYSQL的ADO连接字符串
- 2017.5.29-6.3 城市规划 思考记录(非常不容易)
- Windows终端中的自定义终端和用户界面(UI)
- udp文件服务器,UDP客户端服务器文件传输
- Android模拟器无法启动
- POJ 3624 Charm Bracelet【01背包】
- java arryalist去重复_java ArrayList去重复值
- win8.1桌面上快捷方式的箭头
- 【平衡小车制作】(四)陀螺仪MPU6050(超详解)
- c语言if用法详解,C语言if语句的使用讲解
- number -1 is not iterable (cannot read property Symbol(Symbol.iterator))
- 大一新生调查报告——新生遇到的问题与需求
- Linux常用命令--压缩解压命令
- LineMod源码梳理
- 顶会论文笔记:联邦学习——ATPFL: Automatic Trajectory Prediction Model Design under Federated Learning Framework
- 高德地图轨迹展示样式修改