アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

サーバのステータス情報を取得・保存するシェルスクリプト

初めて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