AuditConsoleのMySQLテーブル
AuditConsoleはデフォルトではローカルファイルシステム上の簡易DBへ監査ログをストアする設定になっていますが、ちょっと規模が大きなサイトはこの運用ではまったく遅くて話になりません。
INSTALLにも書いてあるとおりMySQLでの運用がおすすめ。
でAuditConsoleのウェブ画面で監査ログを参照するのは人間にはやさしいんですが、計算機に喰わせたいデータを抽出するにはちょっとつらい。ページ送りなんかもあるしね。
じゃあMySQLのテーブルを直接いじればいいじゃないってことでちょっと調査。show tablesで参照したところこんな17つのテーブルがあるようです。
mysql> show tables ; +--------------------------+ | Tables_in_AuditConsoleDB | +--------------------------+ | AUDIT_EVENTS | | AUDIT_EVENT_FILES | | DATA_NODES | | EVENT_MESSAGES | | EVENT_SESSION | | LOG_MESSAGES | | OBSERVERS | | OBSERVERS_ATTRIBUTES | | SENSORS | | SESSIONS | | SITES | | SITE_ALIASES | | TAGS | | USERS | | USER_ATTRIBUTES | | USER_PERMISSIONS | | VIEWS | +--------------------------+ 17 rows in set (0.00 sec)
監査ログそのものはAUDIT_EVENTSに入っていますが、それが引っかかった原因となるルールの情報なんかはEVENT_MESSAGESにある。
それぞれのテーブルにはEVENT_IDという項目があり、これでJOINすればいいようです。
今回は特定のルール番号に引っかかったURIを抽出したかったのでこんなSQL文で抽出。
select distinct REQUEST_URI from AUDIT_EVENTS inner join EVENT_MESSAGES on AUDIT_EVENTS.EVENT_ID = EVENT_MESSAGES.EVENT_ID where EVENT_MESSAGES.RULE_ID = '970007' and AUDIT_EVENTS.DATE >= '2013-08-27' and AUDIT_EVENTS.DATE < '2013-09-31' ;
AUDIT_EVENTS.DATEはリクエストヘッダに含まれている日付が入るようです。実際にリクエストされた日付も多分どこかにあるんだろうな。