RDSのログの話
というわけで、懇親会で話題に上がったSqaleでやっているRDSのログの扱いを晒して、お茶を濁させて頂こうかと思います。
RDSってAWSのDBインスタンスのあれです。で、あれって当然、中にSSHでログインしたり出来ないので、ログ(一般ログ、スロークエリログ)をファイルで見ることができません、その代わりテーブルに書き込まれる(デフォルトではオフです)ので、それをselectすれば確認できます。しかし、この仕様だと下記の様な不都合が発生します。
- 放っておくと容量を圧迫する
- ローテート出来るが1世代のみ
- スロークエリログを料理する既存のツールが使えない
- mysqldumpslow
- mk-query-digest など
なので、Sqaleではその問題を解消すべく運用ツールを作りました。
それが、rds-logrotate-and-upload-to-s3 です。
これはcronで実行することを想定していて、下記のことを行います。
- 特定AWSアカウントの全RDSインスタンスに対して
- slow_log, generic_logをローテート
- ログの内容をローカルの日付suffixをつけたファイルに書き出し
- スロークエリログについては、通常のファイルと同じフォーマットに変換と、mk-query-digestでの解析
- ログファイルを設定されたS3バケットに同期
スロークエリログのフォーマット変換部分は別のperlスクリプトに分離してあるので、単体でも使えます(パーサ部分はもともと何処かで見つけたpythonスクリプトが下敷きになっています。)。
公開するにあたって、結構コードを変えたんですが、ちゃんとデバッグしてないので、近い内にちゃんと仕上げます。pullreqくれてもいいです。というか下さい。
モニカジ2
先日開催された Monitering Casual Talk #2 でMuninのスケールアウト構成について話してきました。
資料はこちら。
ご存知通り、Muninにはスケールアウト機能が無いのですが、幾つかのスクリプトとcronだけでそれっぽいことをやってみた、という内容です。
最近Munin2.0が出て、1台で捌ける台数もそれなりに増えたとは思うんですが(自分はまだ検証してないです)、
- 数百台規模
- 何故かリソースの余っているサーバが複数台ある
という環境でしたら、便利に使って頂けるかも。コードはgithubで公開しているので、もしこれから試してみる人が居たら、使用感等教えてもらいたいです。
当日自分は会場で障害対応ぽいことをしていたというがあって、あまり他の方の話をちゃんと聞けてなかったんですが、みなさんがビールを好きだということはよく伝わったので、やはりモニカジはいいイベントだと思いました。
次回は同期の@ume3_が主催するらしいですね。陰ながら応援します。
しかし、みんな立派な感想エントリを書いてるのに、自分はこんないい加減な内容でいいんでしょうか。