RDSのログの話

というわけで、懇親会で話題に上がったSqaleでやっているRDSのログの扱いを晒して、お茶を濁させて頂こうかと思います。

RDSってAWSのDBインスタンスのあれです。で、あれって当然、中にSSHでログインしたり出来ないので、ログ(一般ログ、スロークエリログ)をファイルで見ることができません、その代わりテーブルに書き込まれる(デフォルトではオフです)ので、それをselectすれば確認できます。しかし、この仕様だと下記の様な不都合が発生します。

  • 放っておくと容量を圧迫する
  • ローテート出来るが1世代のみ
  • スロークエリログを料理する既存のツールが使えない
    • mysqldumpslow
    • mk-query-digest など

なので、Sqaleではその問題を解消すべく運用ツールを作りました。

それが、rds-logrotate-and-upload-to-s3 です。

これはcronで実行することを想定していて、下記のことを行います。

  1. 特定AWSアカウントの全RDSインスタンスに対して
  2. slow_log, generic_logをローテート
  3. ログの内容をローカルの日付suffixをつけたファイルに書き出し
  4. スロークエリログについては、通常のファイルと同じフォーマットに変換と、mk-query-digestでの解析
  5. ログファイルを設定されたS3バケットに同期

スロークエリログのフォーマット変換部分は別のperlスクリプトに分離してあるので、単体でも使えます(パーサ部分はもともと何処かで見つけたpythonスクリプトが下敷きになっています。)。

公開するにあたって、結構コードを変えたんですが、ちゃんとデバッグしてないので、近い内にちゃんと仕上げます。pullreqくれてもいいです。というか下さい。

モニカジ2

先日開催された Monitering Casual Talk #2 でMuninのスケールアウト構成について話してきました。

資料はこちら。

ご存知通り、Muninにはスケールアウト機能が無いのですが、幾つかのスクリプトとcronだけでそれっぽいことをやってみた、という内容です。

最近Munin2.0が出て、1台で捌ける台数もそれなりに増えたとは思うんですが(自分はまだ検証してないです)、

  • 数百台規模
  • 何故かリソースの余っているサーバが複数台ある

という環境でしたら、便利に使って頂けるかも。コードはgithubで公開しているので、もしこれから試してみる人が居たら、使用感等教えてもらいたいです。

当日自分は会場で障害対応ぽいことをしていたというがあって、あまり他の方の話をちゃんと聞けてなかったんですが、みなさんがビールを好きだということはよく伝わったので、やはりモニカジはいいイベントだと思いました。

次回は同期の@が主催するらしいですね。陰ながら応援します。

しかし、みんな立派な感想エントリを書いてるのに、自分はこんないい加減な内容でいいんでしょうか。

おまけ

7月に@さん主催で開催された Automation Tech Casual Talks #1 で使った資料をBlogに上げて無かったので今更ではありますが置いておきます。思うところあってtwitterでひっそりURLを公開してましたが、気が変わりました。

内容は、Sqaleで行なっているEC2インスタンスの構築や運用の自動化についての話です。