うまいぼうぶろぐ

linuxとhttpdとperlのメモ

mMeasureのinstall

久々にinstallしてみたら、公式通りにやっても一部動作しなかったので復習メモ。(昔はどうやってinstallしたんだろ。。。。)

mmeasure

mysql(主にMyISAM)のパラメータ、ステータスを見てアドバイスしてくれるsoftware。

グラフの作成にrrdtoolを使うのでaptとかで入れておく。

install

からDLして適当な場所に展開する。

config

$ cp mmeasure_template.conf mmeasure.conf

適当に設定。

Port番号について

WebUIになっているphpmysql_connectにポートの指定がない。

  • web/index.php
7: $link = mysql_connect( $conf[ 'MYSQL_HOST' ], $conf[ 'MYSQL_USER' ], $conf[ 'MYSQL_PASSWORD' ] )

なので、mmeasure.confのMYSQL_PORTを指定してもwebUIが触れない。変更する場合はMYSQL_HOSTの後にコロンで指定。

MYSQL_HOST=127.0.0.1:3307
グラフサイズ

templateには指定がないけど、これを指定しないとグラフが作成されない?

SMALLは一覧表示用、LARGEが通常表示用。

WIDTH_SMALL="200"
HEIGHT_SMALL="50"
WIDTH_LARGE="600"
HEIGHT_LARGE="150"
画像の場所

WEBDIRがデフォルトだと動かなかった?表示されたphpのhtmlのソースを見ると、画像はimages/graphs以下にリンクしているため。

変更前 WEBDIR="$PATH_MMEASURE/web/graphs"
変更後 WEBDIR="$PATH_MMEASURE/web/images/graphs"

グラフ更新のログ

毎回画像を生成したログを吐いて結構邪魔なので、追記するのをやめてみた。

  • /path/to/mmeasure/daemon/update_graphs.sh
#echo "----- $DIR -----" >>"$LOGNAME" 2>&1
echo "----- $DIR -----" >"$LOGNAME" 2>&1

InnoDBステータスを表示

phpが5.2以降の場合のみ? show innodb statusを表示する、、はずが動かない。web/detail.phpを修正。

# diff -u detail.php.bak detail.php
--- detail.php.bak      2010-10-02 01:45:43.338024000 +0900
+++ detail.php  2010-10-02 01:45:07.492280000 +0900
@@ -25,7 +25,7 @@
                $query = "show innodb status";
                $result = mysql_query( $query ) or die( "Query failed : " . mysql_error() );
                $var = mysql_fetch_array( $result );
-               $innodb_status = htmlspecialchars( $var[ 0 ] );
+               $innodb_status = htmlspecialchars( $var[ 2 ] );
 ?>
 <pre><?php print $innodb_status; ?></pre>
 <?php

その他のステータス

global status

データ操作クエリー比率(Cmd_select とか) はSHOW GLOBAL STATUS の値を使用するべきだと思うんだけど、mmeasure はSHOW STATUS の値をとってきているので値が取れないので、がっつり置換する。

$ find /path/to/mmeasure/ -type f -print0 | \
 xargs -0 grep -l --null 'show status'    | \
 xargs -0 perl -i.bak -p -e 's/show status/show global status/g;'
table cache

mysqlの変数で5.0までtable_cacheだった名前が、table_open_cacheに変わっているので変更する。

$ find /path/to/mmeasure/ -type f -print0 | \
 xargs -0 grep -l --null table_cache      | \
 xargs -0 perl -i.bak -p -e 's/table_cache/table_open_cache/g;'
queries

mysql 5.1 から総クエリー回数がSHOW STATUS の "Questions"から、"Queries" に変更になっているのでその部分も修正する。

$ find /path/to/mmeasure/ -type f -print0 | \
 xargs -0 grep -l --null Questions        | \
 xargs -0 perl -i.bak -p -e 's/Questions/Queries/g;'