AWS RDSログ監視
2013/03/04に発表があった通り、RDSのログがAPI経由で見れるようになりました。
http://aws.typepad.com/aws_japan/2013/03/amazon-rds-access-to-logs.html
従来では、エラーログ、スロークエリログ、ジェネラルログは一旦テーブルに
吐き出し、テーブルに対してselectを実行して、異常が無いか確認していたかと
思います。
しかーし、APIが提供されたことにより、少しは楽になりそうです。
# 1時間づつに勝手にローテされ、かつ24時間しか保持されないので、APIから
# 取得した結果をファイルに吐き出したり、世代管理は相変わらず、自分でや
# るのが微妙ですが。。
早速導入して、使ってみたので簡単に説明します。
MySQLのログを有効にする。以下を参照して下さい。
API(zip)を取得して展開する。
cd /tmp
wget http://s3.amazonaws.com/rds-downloads/RDSCli.zip
unzip RDSCli.zip
cp -Rp RDSCli-1.13.002 /usr/local/RDSCli-1.13.002
ln -s /usr/local/RDSCli-1.13.002 /usr/local/RDSCli
コマンド実行に必要な環境変数を設定する。
・~/.bash_profile 抜粋
export AWS_CREDENTIAL_FILE=~/.rdscli.cfg
export AWS_RDS_HOME=/usr/local/RDSCli
export PATH=${AWS_RDS_HOME}/bin:${PATH}
・~/.rdscli.cfgの内容
AWSAccessKeyId=XXXXXXXXXX
AWSSecretKey=XXXXXXXXXX
その他にも、JAVAのパスが環境変数に必要だったりしますが、以下を
参照して頂ければ、解るかと思います。
http://docs.aws.amazon.com/AmazonRDS/latest/CommandLineReference/StartCLI.html
アクセスキーってどうやって取るの?などの話は以下を参照して下さい。
http://xoxo-infra.hatenablog.com/entry/2013/02/08/013002
動作確認
・以下を実行して何もエラーが出ず、ヘルプの結果が出ればOK。
$ rds --help
MySQLのログ一覧を参照する。
$ rds-describe-db-log-files \
--db-instance-identifier DBインスタンス名
DBLOGFILES error/mysql-error-running.log Tue Mar 12 19:00:00 JST 2013 0
DBLOGFILES error/mysql-error-running.log.0 Tue Mar 12 08:00:00 JST 2013 0
DBLOGFILES error/mysql-error-running.log.1 Tue Mar 12 09:00:00 JST 2013 0
DBLOGFILES error/mysql-error-running.log.2 Tue Mar 12 10:00:00 JST 2013 0
DBLOGFILES error/mysql-error-running.log.3 Tue Mar 12 11:00:00 JST 2013 0
ログの中身を参照する。
$ rds-download-db-logfile \
--db-instance-identifier DBインスタンス名 \
--log-file-name general/mysql-general.log
/rdsdbbin/mysql/bin/mysqld, Version: 5.1.63-log (MySQL Community Server (GPL)). started with:
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
rds-download-db-logfile と同類のコマンドで、rds-watch-db-logfile というのが
ありますが、推測するに、tail -f 的な使い方をするのかな!?
このコマンドをNagiosなり、Zabbixと連携させてログ監視が可能となります。
って、肝心などうやってログ監視実装すんだよ?を書いてないですねw
今後書きます。。(テーブルにselectか、テーブルダンプからgrepかなぁ。。)
以上です。