StarRocks は、すべての監査ログをローカルファイル fe/log/fe.audit.log に保存します。これらのログは、内部システムデータベースからはアクセスできません。監査ログ機能はデフォルトで有効になっており、AuditLoader プラグインがインストールされています。このプラグインは、ローカルファイルからログを読み取り、HTTP PUT メソッドを使用して StarRocks データベースにインポートします。これにより、データベースで実行されたすべての操作を表示および分析できます。
注意事項
-
監査ログ機能はデフォルトで有効になっており、`_starrocks_audit_db_` データベースと `starrocks_audit_tbl` テーブルが自動的に作成されます。以降のすべての監査ログは、このテーブルに保存されます。`_starrocks_audit_db_` データベースまたは `starrocks_audit_tbl` テーブルを削除すると、Manager の SQL タスククエリ機能が失敗するため、削除しないでください。
-
監査ログは動的パーティショニングを使用し、デフォルトで監査データを 30 日間保持します。データ保持期間は、
dynamic_partition.startおよびdynamic_partition.endパラメーターを変更することで調整できます。 -
監査ログ機能は無効にできません。
機能
EMR StarRocks Manager ページで、左側のナビゲーションウィンドウにある メタデータ管理 をクリックします。`default_catalog` の下に、自動的に作成されたデータベース `_starrocks_audit_db_` とそのテーブル `starrocks_audit_tbl` があります。
`starrocks_audit_tbl` の `CREATE TABLE` 文を表示するには、SHOW CREATE TABLE starrocks_audit_tbl; を実行します:
CREATE TABLE `starrocks_audit_tbl` (
`queryId` varchar(64) NOT NULL COMMENT "クエリの一意の ID",
`timestamp` datetime NOT NULL COMMENT "クエリの開始時刻",
`queryTime` bigint(20) NOT NULL COMMENT "クエリの実行時間 (ミリ秒)",
`queryType` varchar(12) NULL COMMENT "クエリのタイプ (query、slow_query、connection)",
`clientIp` varchar(32) NULL COMMENT "クライアントの IP アドレス",
`user` varchar(64) NULL COMMENT "クエリを実行したユーザー名",
`authorizedUser` varchar(64) NULL COMMENT "一意のユーザー識別子、つまり user_identity",
`resourceGroup` varchar(64) NULL COMMENT "リソースグループ名",
`catalog` varchar(32) NULL COMMENT "データカタログ名",
`db` varchar(96) NULL COMMENT "クエリが実行されたデータベース",
`state` varchar(8) NULL COMMENT "クエリのステータス (EOF、ERR、OK)",
`errorCode` varchar(512) NULL COMMENT "エラーコード",
`scanBytes` bigint(20) NULL COMMENT "クエリによってスキャンされたバイト数",
`scanRows` bigint(20) NULL COMMENT "クエリによってスキャンされた行数",
`returnRows` bigint(20) NULL COMMENT "クエリによって返された行数",
`cpuCostNs` bigint(20) NULL COMMENT "クエリが消費した CPU 時間 (ナノ秒)",
`memCostBytes` bigint(20) NULL COMMENT "クエリが消費したメモリ (バイト)",
`stmtId` int(11) NULL COMMENT "SQL ステートメントの増分 ID",
`isQuery` tinyint(4) NULL COMMENT "SQL ステートメントがクエリであるかどうか (1 または 0)",
`feIp` varchar(128) NULL COMMENT "ステートメントを実行したフロントエンド (FE) の IP アドレス",
`stmt` varchar(1048576) NULL COMMENT "元の SQL ステートメント",
`digest` varchar(32) NULL COMMENT "スロー SQL のフィンガープリント",
`planCpuCosts` double NULL COMMENT "クエリプランニングフェーズで消費された CPU 時間 (ナノ秒)",
`planMemCosts` double NULL COMMENT "クエリプランニングフェーズで消費されたメモリ (バイト)",
`warehouse` varchar(96) NULL COMMENT "クエリが使用するコンピュートグループ",
`stmtType` varchar(8) NULL COMMENT "SQL タイプ (DQL、DML、DDL、DCL、OTHER)",
`isFilter` tinyint(4) NULL COMMENT "SQL ステートメントがフィルターされたかどうか (1 または 0)",
`errorMsg` varchar(1048576) NULL COMMENT "エラー詳細",
`pendingTimeMs` bigint(20) NULL COMMENT "クエリがキューで待機した時間 (ミリ秒)",
`candidateMVs` varchar(65533) NULL COMMENT "クエリで考慮された候補のマテリアライズドビューのリスト。",
`hitMvs` varchar(65533) NULL COMMENT "クエリが正常に使用 (ヒット) したマテリアライズドビューのリスト。"
) ENGINE=OLAP
DUPLICATE KEY(`queryId`, `timestamp`, `queryTime`)
COMMENT "監査ログテーブル"
PARTITION BY RANGE(`timestamp`)
(PARTITION p20250909 VALUES [("0000-01-01 00:00:00"), ("2025-09-10 00:00:00")),
PARTITION p20250910 VALUES [("2025-09-10 00:00:00"), ("2025-09-11 00:00:00")),
PARTITION p20250911 VALUES [("2025-09-11 00:00:00"), ("2025-09-12 00:00:00")),
PARTITION p20250912 VALUES [("2025-09-12 00:00:00"), ("2025-09-13 00:00:00")),
PARTITION p20250913 VALUES [("2025-09-13 00:00:00"), ("2025-09-14 00:00:00")))
DISTRIBUTED BY HASH(`queryId`) BUCKETS 3
PROPERTIES (
"compression" = "LZ4",
"datacache.enable" = "true",
"dynamic_partition.buckets" = "3",
"dynamic_partition.enable" = "true",
"dynamic_partition.end" = "3",
"dynamic_partition.history_partition_num" = "0",
"dynamic_partition.prefix" = "p",
"dynamic_partition.start" = "-30",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.time_zone" = "Asia/Shanghai",
"enable_async_write_back" = "false",
"replication_num" = "1",
"storage_volume" = "builtin_storage_volume"
);