黒い画面でRDSのリードレプリカ状態を取得する
こんにちは。
少し時間が開いてしまいましたが、RDSのリードレプリカ状態が監視可能になったようです。
今までもCloudWatchのReplica Lagを監視することでレプリケーションの状態は監視出来たのですが、今回のリリースによってエラーの情報も詳しく取得する事が出来るようになったみたいです。
AWSさんのブログを見るとManagement Consleで確認出来る事は分かったのですが、SDKやコマンドラインツールではどうやって取得するのかな?と思ったので試してみました。
Management Consleの出力を見るとdescribe_db_instancesから取得するのかと思ってましたけど違いました。
DB Eventから取得出来るみたいです。
正常時
もちろん正常時は以下のように何も出力されません。
AWS SDK for Rubyの場合
require 'aws-sdk' access_key = 'your access key' secret_key = 'your secret key' rds_region = 'rds.ap-northeast-1.amazonaws.com' rds = AWS::RDS.new( :access_key_id => access_key, :secret_access_key => secret_key, :rds_endpoint => rds_region ).client rds.describe_events[:events]
Command Line Toolkitの場合
$ rds-describe-events --start-time 2013-06-05T23:00:00+09:00 --end-time 2013-06-05T23:05:59+09:00
エラー発生時
こんな感じでDBイベントで取得出来ます。
AWS SDK for Rubyの場合
require 'aws-sdk' access_key = 'your access key' secret_key = 'your secret key' rds_region = 'rds.ap-northeast-1.amazonaws.com' rds = AWS::RDS.new( :access_key_id => access_key, :secret_access_key => secret_key, :rds_endpoint => rds_region ).client rds.describe_events[:events] => [{:event_categories=>["notification"], :message=>"Read Replica Replication Error - SQLError: 1062, reason: Error 'Duplicate entry '4444' for key 'ssn'' on query. Default database: 'okochangdb'. Query: 'insert into t1 values (6, 5, 'hoge', 'tough guy', 4444)'", :source_type=>"db-instance", :date=>2013-06-05 14:26:20 UTC, :source_identifier=>"okochangdb-rr01"}]
Command Line Toolkitの場合
$ rds-describe-events --start-time 2013-06-05T23:10:00+09:00 --end-time 2013-06-05T23:30:59+09:00 db-instance 2013-06-05T14:26:20.858Z okochangdb-rr01 "Read Replica Replication Error - SQLError: 1062, reason: Error 'Duplicate entry '4444' for key 'ssn'' on query. Default database: 'okochangdb'. Query: 'insert into t1 values (6, 5, 'hoge', 'tough guy', 4444)'" CATEGORY notification
感想
個人的には監視サーバとかに組み込んでアラートするならReplica Lagの方がやりやすいかなと思いましたけど、好みの問題かなぁ。