雑多なインフラエンジニア日記

技術ブログでっす~

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のログを有効にする。以下を参照して下さい。

http://xoxo-infra.hatenablog.com/entry/2013/03/06/205042

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かなぁ。。)


以上です。