AuditLoader を使用して StarRocks 内の監査ログを管理する
このトピックでは、プラグイン - AuditLoader を使用して、StarRocks 内のテーブルで監査ログを管理する方法について説明します。
StarRocks は監査ログを内部データベースではなく、ローカルファイル fe/log/fe.audit.log に保存します。プラグイン AuditLoader を使用すると、クラスター内で監査ログを直接管理できます。インストール後、AuditLoader はファイルからログを読み取り、HTTP PUT を介して StarRocks にロードします。その後、SQL ステートメントを使用して StarRocks 内の監査ログをクエリできます。
監査ログを保存するテーブルを作成する
StarRocks クラスター内にデータベースとテーブルを作成し、監査ログを保存します。詳細な手順については、CREATE DATABASE および CREATE TABLE を参照してください。
監査ログのフィールドは異なる StarRocks バージョン間で異なるため、以下の例から選択して、使用している StarRocks に互換性のあるテーブルを作成する必要があります。
注意
- 例のテーブルスキーマを変更しないでください。変更すると、ログのロードが失敗します。
- 監査ログのフィールドは異なる StarRocks バージョン間で異なるため、新しいバージョンの AuditLoader は、利用可能なすべての StarRocks バージョンから共通のフィールドを収集します。
CREATE DATABASE starrocks_audit_db__;
CREATE TABLE starrocks_audit_db__.starrocks_audit_tbl__ (
`queryId` VARCHAR(64) COMMENT "クエリの一意ID",
`timestamp` DATETIME NOT NULL COMMENT "クエリ開始時間",
`queryType` VARCHAR(12) COMMENT "クエリタイプ(query、slow_query、connection)",
`clientIp` VARCHAR(32) COMMENT "クライアントIP",
`user` VARCHAR(64) COMMENT "クエリユー ザー名",
`authorizedUser` VARCHAR(64) COMMENT "ユーザーの一意識別子、すなわち user_identity",
`resourceGroup` VARCHAR(64) COMMENT "リソースグループ名",
`catalog` VARCHAR(32) COMMENT "カタログ名",
`db` VARCHAR(96) COMMENT "クエリが実行されるデータベース",
`state` VARCHAR(8) COMMENT "クエリ状態(EOF、ERR、OK)",
`errorCode` VARCHAR(512) COMMENT "エラーコード",
`queryTime` BIGINT COMMENT "クエリ実行時間(ミリ秒)",
`scanBytes` BIGINT COMMENT "クエリでスキャンされたバイト数",
`scanRows` BIGINT COMMENT "クエリでスキャンされた行数",
`returnRows` BIGINT COMMENT "クエリが返す結果行数",
`cpuCostNs` BIGINT COMMENT "クエリのCPU消費時間(ナノ秒)",
`memCostBytes` BIGINT COMMENT "クエリのメモリ使用量(バイト)",
`stmtId` INT COMMENT "SQL文の増分ID",
`isQuery` TINYINT COMMENT "SQLがクエリかどうか(1または0)",
`feIp` VARCHAR(128) COMMENT "この文を実行したFE IP",
`stmt` VARCHAR(1048576) COMMENT "SQL元文",
`digest` VARCHAR(32) COMMENT "スロークエリのフィンガープリント",
`planCpuCosts` DOUBLE COMMENT "クエリ計画段階のCPU使用量(ナノ秒)",
`planMemCosts` DOUBLE COMMENT "クエリ計画段階のメモリ使用量(バイト)",
`pendingTimeMs` BIGINT COMMENT "クエリがキューで待機した時間(ミリ秒)",
`candidateMVs` VARCHAR(65533) NULL COMMENT "候補マテリアライズドビューのリスト",
`hitMvs` VARCHAR(65533) NULL COMMENT "ヒットしたマテリアライズドビューのリスト",
`warehouse` VARCHAR(32) NULL COMMENT "Warehouse名"
) ENGINE = OLAP
DUPLICATE KEY (`queryId`, `timestamp`, `queryType`)
COMMENT "監査ログテーブル"
PARTITION BY date_trunc('day', `timestamp`)
PROPERTIES (
"replication_num" = "1",
"partition_live_number"="30"
);
starrocks_audit_tbl__ は動的パーティションで作成されます。デフォルトでは、テーブル作成後 10 分で最初の動的パーティションが作成されます。その後、監査ログをテーブルにロードできます。次のステートメントを使用してテーブル内のパーティションを確認できます。
SHOW PARTITIONS FROM starrocks_audit_db__.starrocks_audit_tbl__;
パーティションが作成されたら、次のステップに進むことができます。