読者です 読者をやめる 読者になる 読者になる

muninにMySQLのクエリキャッシュヒット率を表示させる

その他

muninのプラグインを作ろうと思ったので、作ってみた。
MySQLのクエリキャッシュヒット率をグラフ表示するだけだけど・・・。

ちなみに、僕はシェルが書けないので、
PHPで値を出力してシェルに渡すという面倒な手法を使っています。
サーバのOSは CentOS6 です。

以下のPHPスクリプトでヒット率を計算する。

<?php

//キャッシュヒット率を計算する
exec('mysqladmin -u root --password=server_password extended-status | grep Qcache', $output);

$cache_items = array(
	'Qcache_free_blocks',
	'Qcache_free_memory',
	'Qcache_hits',
	'Qcache_inserts',
	'Qcache_lowmem_prunes',
	'Qcache_not_cached',
	'Qcache_queries_in_cache',
	'Qcache_total_blocks'
);

$cache_data = array();
foreach($output as $str){
	$str = str_replace(array('|', ' '), '', $str);
	foreach($cache_items as $cache_item){
		if(strpos($str, $cache_item) !== false){
			$cache_data[$cache_item] = str_replace($cache_item, '', $str);
		}
	}
}

echo round($cache_data['Qcache_hits'] / ($cache_data['Qcache_hits'] + $cache_data['Qcache_inserts'] + $cache_data['Qcache_not_cached']) * 100, 0);
?>


以下のシェルスクリプトでヒット率をグラフ化する。

#!/bin/sh

#%# family=auto
#%# capabilities=autoconf

#値を返すスクリプトの実行コマンド
GETNUM=`php /var/lib/mysql/get_db_sprex_query_cache.php`

if [ "$1" = "autoconf" ]; then
        if [ -n ${GETNUM} ] ; then
                echo yes
                exit 0
        else
                echo no
                exit 0
        fi
fi

if [ "$1" = "config" ]; then
    echo 'graph_title mysql_query_cache' 
    echo 'graph_args -r --lower-limit 0 --upper-limit 100'
    echo 'graph_vlabel hit' 
    echo 'graph_category mysql2' 
    echo 'total.label hit' 
    echo 'total.min 0' 
    echo 'total.draw LINE2' 
    echo 'total.type GAUGE' 
	exit 0
fi

echo "total.value $GETNUM";


シェルスクリプトは以下のものをそのままコピーして使っています。
ありがとうございます、とても参考になりました。
問題があれば削除します。
http://www.seeds-std.co.jp/seedsblog/671.html

あとは実行権限を与えて
# chmod 777 -R /usr/share/munin/plugins/random_number

リンクを貼って
# ln -s /usr/share/munin/plugins/random_number /etc/munin/plugins/random_number

再起動するだけ
# /etc/init.d/munin-node restart