Amazon RDS(MySQL) の error.log や slowquery.log について
Aurora を使いたいのだが、まだまだ MySQL にもお世話になっている。
ログについて確認したのでまとめ。
概要
RDS(MySQL)では以下のログを出力可能。
- error.log
- general.log
- slowquery.log
デフォルトでテーブルに記録されるが ParamaterGroup で設定すればログファイルに記録される。
また、1はデフォルトで出力されており、2,3については ParamaterGroup で設定が必要。
保管場所
- テーブルでもファイルでもRDS のストレージ内
どちらでも勝手にローテートされる
- ファイルの場合
- 1時間ごとにファイルが切り替わる
- 24時間でローテートされる
- 容量がストレージの2%を超えている場合、ローテート時に2%以下に収まるように削除されるので注意
- テーブルの場合
- ストレージの使用容量によってローテートタイミングが決まる
- 使用容量 < 90%
- ログ容量がストレージの 20% を超えた、もしくは ログ容量が10GBを超えたとき
- 24時間毎にローテート
- それまでは
- 蓄積
- ログ容量がストレージの 20% を超えた、もしくは ログ容量が10GBを超えたとき
- 使用容量 > 90%
- ログ容量がストレージの 10% を超えた、もしくは ログの合計が5GBを超えたとき
- 24時間毎にローテート
- それまでは
- 蓄積
- ログ容量がストレージの 10% を超えた、もしくは ログの合計が5GBを超えたとき
- 使用容量 < 90%
- ストレージの使用容量によってローテートタイミングが決まる
- ファイルの場合
あれ?TABLE の方がいいんじゃない?
出力設定
パラメータグループにて以下のパラメータを適宜設定する
パラメータ | 設定 | デフォルト | 説明 |
---|---|---|---|
slow_query_log | 1 or 0 | 0 | slowquery ログを出力する場合、1に設定 |
general_log | 1 or 0 | 0 | general ログを出力する場合、1に設定 |
long_query_time | 0~ (秒数) | 10 | slowqueryログに出力させる時間を設定 |
log_queries_not_using_indexes | 1 or 0 | 0 | インデックスを使用しないすべてのクエリをスロークエリログに記録する場合、1に設定 |
log_output | FILE/TABLE/NONE | TABLE | ログの出力先設定 |
確認方法(ファイルに出力した場合)
AWS RDS Console で確認する
こちらの手順を参照
AWS Cli で確認する
RDS の以下のサブコマンドを利用する
- describe-db-log-files
- download-db-log-file-portion
なお download-db-log-file-portion では 一度に10,000行までしか取得できないので注意。
# まず LogFileName を確認 $ aws rds describe-db-log-files --db-instance-identifier HOGE # 次に LogFile を表示(1文字づつ出るらしいので jq で加工する) $ aws rds download-db-log-file-portion --db-instance-identifier HOGE --log-file-name FUGA/PIYO.log | jq -r ".LogFileData | add"
API、SDK
こちらは カッツ…アイ!
ログの閲覧権限
- IAMポリシーで制御可能
- DescribeDBLogFiles
- DownloadDBLogFilePortion
- DownloadCompleteDBLogFile
※ DownloadCompleteDBLogFile がないとダウンロードに失敗した。
Amazon Web Services パターン別構築・運用ガイド
- 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,小西秀和,佐藤瞬
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/03/25
- メディア: 大型本
- この商品を含むブログ (2件) を見る