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はリクエストヘッダに含まれている日付が入るようです。実際にリクエストされた日付も多分どこかにあるんだろうな。