代码SVN地址:
说明:
Perl脚本,用于对Linux主机和MySQL相关指标进行实时监控。
工具主要有如下参数:
下面分别说明一下:
1、查看Linux主机指标
-l,–loadPrintLoadInfo.-c,–cpuPrintCpuInfo.-s,–swapPrintSwapInfo.-d,–diskPrintDiskInfo.-n,–netPrintNetInfo.-sysPrintSysInfo(include-t,-l,-c,-s)
这些指标的数据都来自/proc目录下的相关系统元数据:
LOAD : /proc/loadavg
CPU : /proc/stat
SWAP : /proc/vmstat
DISK : /proc/diskstats
NET : /proc/net/dev
其中,查看DISK(-d)和NET(-n)需要带具体的设备名(具体可以查看/proc/diskstats和/proc/net/dev中的设备或者可以取自iostat和sar -n DEV)。
2、查看MySQL指标
通过show variables列出经常关注的核心变量。
通过show global status列出相关MYSQL status信息。
-comPrintMySQLStatus(Com_select,Com_insert,Com_update,Com_delete).-hitPrintInnodbHit%.Hit%:(Innodb_buffer_pool_read_requests–Innodb_buffer_pool_reads)/Innodb_buffer_pool_read_requests*100%-innodb_rowsPrintInnodbRowsStatus(Innodb_rows_inserted/updated/deleted/read).-innodb_pagesPrintInnodbBufferPoolPagesStatus(Innodb_buffer_pool_pages_data/free/dirty/flushed)-innodb_dataPrintInnodbDataStatus(Innodb_data_reads/writes/read/written)-innodb_logPrintInnodbLogStatus(Innodb_os_log_fsyncs/written)-innodb_statusPrintInnodbStatusfromCommand:‘ShowEngineInnodbStatus‘(history list/log unflushed/uncheckpointed bytes/read views/queries inside/queued)
另外,-innodb_status的信息来自如下:
其中:
log unflushed = Log sequence number – Log flushed up to
uncheckpointed bytes = Log sequence number – Last checkpoint at
-T,–threadsPrintThreadsStatus(Threads_running,Threads_connected,Threads_created,Threads_cached).-B,–bytesPrintBytesreceived from/send toMySQL(Bytes_received,Bytes_sent).-mysqlPrintMySQLInfo(include-t,-com,-hit,-T,-B).-innodbPrintInnodbInfo(include-t,-innodb_pages,-innodb_data,-innodb_log,-innodb_status)
3、查看MySQL的响应时间
-rtPrintMySQLDB RT(us).
通过调用tcprstat来监控MySQL的响应时间。
-rt参数依赖:
由于安装后运行tcprstat需要root用户,或者sudo进行,可以通过如下命令来避免:
$sudo chown root:root/usr/bin/tcprstat
$sudo chmod u+s/usr/bin/tcprstat
$ll/usr/bin/tcprstat-rwsr-xr-x1root root1183465May2815:38/usr/bin/tcprstat
默认工具读取tcprstat的代码如下:
$grep-n‘my$TCPRSTAT’orzdba166:my$TCPRSTAT=“/usr/bin/tcprstat–no-header-t1-n0-p $port”;
不同的路径可以自行修改。
(2)需要安装Perl的File::Lockfile模块
File::Lockfile模块同时要依赖Module-Build/version/Class-Data-Inheritable这3个模块,可以通过下面方式进行安装:
安装version模块:
$wget http://search.cpan.org/CPAN/authors/id/J/JP/JPEACOCK/version-0.99.tar.gz
$tar-zxvf version-0.99.tar.gz
$cd version-0.99$perlMakefile.PL
$make
$make test
$sudo make install
安装Class-Data-Inheritable模块:
$wget http://search.cpan.org/CPAN/authors/id/T/TM/TMTM/Class-Data-Inheritable-0.08.tar.gz
$tar-zxvfClass-Data-Inheritable-0.08.tar.gz
$cdClass-Data-Inheritable-0.08$perlMakefile.PL
$make
$make test
$sudo make install
安装Module-Build模块:
$wget http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/Module-Build-0.31.tar.gz
$tar-zxvfModule-Build-0.31.tar.gz
$cdModule-Build-0.31$perlBuild.PL
$./Build$./Buildtest
$sudo./Buildinstall
安装安装File::Lockfile模块:
$wget http://search.cpan.org/CPAN/authors/id/G/GL/GLORYBOX/File-Lockfile-v1.0.5.tar.gz
$tar-zxvfFile-Lockfile-v1.0.5.tar.gz
$cdFile-Lockfile-v1.0.5$perlBuild.PL
$perl./Build$perl./Buildtest
$sudo perl./Buildinstall
可以通过如下脚本,检查安装了哪些perl模块的脚本:
$cat check_module.pl#!/usr/bin/perluseExtUtils::Installed;my$inst=ExtUtils::Installed->new();printjoin“\n”,$inst->modules();print“\n”;
4、其他
(1)MySQL相关参数配置
-P,–portPortnumber touseformysql connection(default3306).-S,–socketSocketfile touseformysql connection.
用于指定端口或者socket。
如果需要MYSQL的其他参数要添加,直接改代码:
$grep-n-A1‘my$MYSQL’orzdba166:my$MYSQL=qq{mysql-s–skip-column-names-uroot-P$port};167-$MYSQL.=qq{-S$socket}ifdefined $socket;
(2)控制输出间隔和次数,以及是否输出颜色。
-h,–helpPrintHelpInfo.-i,–intervalTime(second)Interval.-C,–countTimes.-t,–timePrintTheCurrentTime.-nocolorPrintNOColor.
(3)日志输出
-L,–logfilePrinttoLogfile.-logfile_by_dayOneday a logfile,the suffix of logfile is‘yyyy-mm-dd’;and is valid with-L.
用于将数据输出到日志文件-L后面带输出的日志文件,另外如果加上-logfile_by_day参数的话,将按天输出日志。