読者です 読者をやめる 読者になる 読者になる

okochangの馬鹿でありがとう

ふらふら適当に世間を生きる日々でございます

黒い画面でRDSのリードレプリカ状態を取得する

こんにちは。
少し時間が開いてしまいましたが、RDSのリードレプリカ状態が監視可能になったようです。
今までもCloudWatchのReplica Lagを監視することでレプリケーションの状態は監視出来たのですが、今回のリリースによってエラーの情報も詳しく取得する事が出来るようになったみたいです。
AWSさんのブログを見るとManagement Consleで確認出来る事は分かったのですが、SDKやコマンドラインツールではどうやって取得するのかな?と思ったので試してみました。
Management Consleの出力を見るとdescribe_db_instancesから取得するのかと思ってましたけど違いました。
DB Eventから取得出来るみたいです。

環境

  • Ruby 1.9.3
  • AWS SDK for Ruby 1.11.0
  • RDS Command Line Toolkit 1.14.001

正常時

もちろん正常時は以下のように何も出力されません。
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の方がやりやすいかなと思いましたけど、好みの問題かなぁ。