orastats & mysqlstats通用监控工具
Posted by anysql on 2013-03-19以前曾写过Oracle与MySQL的监控工具,但随着数据库版本的变化,性能指标也在发生变化,常常需要改进代码,然后再进行编译,比较麻烦。这个时间和OceanBase开发人员在一起久了,受了他们一点灵气的影响,想出了通用的监控工具的方法。
将所有性能指标理解成一个Key及一个Value的组合,Key为字符串类型,Value为浮点数类型,可以自定义SQL在数据库中查询出来。比如下面的SQL语句:
select name, bytes from v$sgastat
union all
select name, value from v$sysstat
将上面查询的结果,再加一个当前的时间点(Key=orastats.timestamp)存放到一个Hash表中,然后根据一定的格式规则显示出其中的数据,就是一个非常好的通用监控工具了,我们以如下SQL为例。
select name, value from v$sga
输出格式使用如下格式进行控制,对任何一个Key需要指定数值的类型(显示当前值还是差量值?),然后指定一个简写的指标名字。
Key|{CURR|DELTA}|Label|...
编写如下的文本文件(orastats.txt)。
user=sys
query=select name, value from v$sga
format=Fixed Size|curr|Fixed|
Variable Size|curr|VarS|
Database Buffers|curr|Data|
loop=10
wait=5
使用orastats工具来运行,就可以得到如下有效的监控输出。
D:\MyTools\x64>orastats parfile=orastats.txt
2013-03-19 22:57:08 Fixed VarS Data
2013-03-19 22:57:08 2174k 134m 134m
2013-03-19 22:57:13 2174k 134m 134m
2013-03-19 22:57:18 2174k 134m 134m
2013-03-19 22:57:23 2174k 134m 134m
2013-03-19 22:57:28 2174k 134m 134m
2013-03-19 22:57:37 2174k 134m 134m
不指定Format选项的话,会以Key/Value的方式显示数据。
D:\MyTools\x64>orastats parfile=orastats.txt wait=5 loop=1 format=
orastats.timestamp=2013-03-19 22:58:46
Database Buffers=134217728.000000
Fixed Size=2174888.000000
Redo Buffers=5005312.000000
Variable Size=134217816.000000
为MySQL也准备了类拟的工具(mysqlstats),这样的话数据库的版本变了,只需要改一下配置文件即可以跟上时代了,明天会加入Linux下的一些基本负载信息,就可以完全用于收集Oracle或MySQL的性能数据了。


Recent Comments