サーバのステータス情報を取得・保存するシェルスクリプト
初めてLinuxのシェルスクリプトを作ってみました。
こういう感じでいいのだろうか。
MySQLサーバのステータス情報を取得・保存するシェルスクリプト。
これを定期的に自動実行するようcronにでも登録しておけば
後々解析などがしやすい…はず。
下記を参考に…というかほぼ丸ごとコピーしました。
参考:はじめてのMySQLチューニング - ThinkIT
http://thinkit.co.jp/cert/article/0707/2/1/2.htm
上記と大きく違うのは、
SHOW STATUS; で取得できる項目のうち、
以下6点のみを抜き出して、項目ごとにファイルに保存しています。
ログファイルのサイズが膨大になりそうなので…。
- Threads_running
- Open_tables
- Opened_tables
- Key_blocks_unused
- Qcache_free_memory
- Qcache_lowmem_prunes
#!/bin/bash DIR=/home/hoge/data #データ保存先ディレクトリ DATE=`/bin/date "+%Y/%m/%d %H:%M:%S"` SOCKET=/var/lib/mysql/mysql.sock COMMAND="/usr/bin/mysqladmin -u root -pzoom0624 extended-status" if [ -S $SOCKET ];then $COMMAND | /bin/awk '{print $2,$4}' | /bin/egrep -v '(^ |Variable_name)' | \ while read LABEL DATA do if [ ${LABEL} = "Threads_running" -o ${LABEL} = "Open_tables" -o ${LABEL} = "Opened_tables" -o ${LABEL} = "Key_blocks_unused" -o ${LABEL} = "Qcache_free_memory" -o ${LABEL} = "Qcache_lowmem_prunes" ];then /bin/echo $DATE $DATA >> $DIR/$LABEL.log fi done else /bin/echo "MySQL is not running." fi