メインコンテンツまでスキップ
バージョン: Candidate-3.5

logs

StarRocks をデプロイおよび運用する際、ログシステムを理解し適切に使用することは、トラブルシューティング、パフォーマンス分析、システム調整において重要です。この記事では、StarRocks のフロントエンド (FE) およびバックエンド (BE または CN) コンポーネントのログファイルタイプ、典型的な内容、設定方法、ログのローテーションおよび保持戦略について詳しく説明します。

このドキュメントの情報は、StarRocks バージョン 3.5.x に基づいています。

FE ロギングの詳細

fe.log

主な FE ログには、起動プロセス、クラスタ状態の変化、DML/DQL リクエスト、およびスケジューリング関連の情報が含まれます。これらのログは主に、FE の実行中の動作を記録します。

設定

  • sys_log_dir: ログの保存ディレクトリ。デフォルトは ${STARROCKS_HOME}/log
  • sys_log_level: ログレベル。デフォルトは INFO
  • sys_log_roll_num: ログファイルの無制限な増加を防ぐために保持するログファイルの数を制御します。デフォルトは 10
  • sys_log_roll_interval: ローテーションの頻度を指定します。デフォルトは DAY で、ログは毎日ローテーションされます
  • sys_log_delete_age: 古いログファイルを削除するまでの保持期間を制御します。デフォルトは 7 日
  • sys_log_roll_mode: ログローテーションモード。デフォルトは SIZE-MB-1024 で、現在のログファイルが 1024 MB に達すると新しいログファイルが作成されます。sys_log_roll_interval と組み合わせて、FE ログは日次またはファイルサイズに基づいてローテーションされることを示します
  • sys_log_enable_compress: ログ圧縮が有効かどうかを制御します。デフォルトは false で、圧縮は無効です

fe.warn.log

fe.warn.log は、システム監視とトラブルシューティングに重要なログファイルです:

  • 操作監視–システムの健康状態を監視
  • 障害診断–重要な問題を迅速に特定
  • パフォーマンス分析–システムのボトルネックと異常を特定
  • セキュリティ監査–権限とアクセスエラーを記録 fe.log がすべてのレベルのログを記録するのに対し、fe.warn.log は注意が必要な警告とエラーに焦点を当て、運用担当者がシステムの問題を迅速に特定して対処するのを助けます。

fe.gc.log

fe.gc.log は、StarRocks FE の Java ガーベジコレクションログであり、JVM のガーベジコレクションの動作を監視および分析するために使用されます。

このログファイルはネイティブの JVM ログローテーションメカニズムを使用していることに注意が必要です。たとえば、次の設定でファイルサイズとファイル数に基づく自動ローテーションを有効にできます:

-Xlog:gc*:${LOG_DIR}/fe.gc.log:time,tags:filecount=7,filesize=100M

fe.out

fe.out は StarRocks FE の標準出力ログファイルです。FE プロセスの実行中に標準出力 (stdout) および標準エラー (stderr) に出力された内容を記録します。主な内容には以下が含まれます:

  • FE 起動中のコンソール出力
    • JVM 起動情報 (例: ヒープ設定、GC パラメータ)
    • FE モジュールの初期化順序 (Catalog, Scheduler, RPC, HTTP Server など)
  • stderr からのエラースタックトレース
    • Java 例外 (Exception/StackTrace)
    • ClassNotFound, NullPointerException などのキャッチされないエラー
  • 他のロギングシステムによってキャプチャされない出力
    • System.out.println()e.printStackTrace() を使用する一部のサードパーティライブラリ

以下のシナリオで fe.out を確認する必要があります:

  • FE が起動に失敗した場合: fe.out で Java 例外や無効なパラメータメッセージを確認します。
  • FE が予期せずクラッシュした場合: キャッチされない例外のスタックトレースを探します。
  • ロギングシステムの不確実性: FE ログディレクトリに出力がある唯一のログファイルが fe.out の場合、log4j の初期化に失敗したか、設定が間違っている可能性があります。 デフォルトでは、fe.out は自動ログローテーションをサポートしていません。

fe.profile.log

fe.profile.log の目的は、パフォーマンス分析のために詳細なクエリ実行情報を記録することです。主な機能には以下が含まれます:

  • クエリパフォーマンス分析: 各クエリの詳細な実行データを記録します。以下を含みます:
    • クエリ ID、ユーザー、データベース、SQL ステートメント
    • 実行タイミング (startTime, endTime, latency)
    • リソース使用量 (CPU、メモリ、スキャンされた行の数/サイズ)
    • 実行ステータス (RUNNING, FINISHED, FAILED, CANCELLED)
  • 実行時メトリクストラッキング: QueryDetail クラスを介して主要な指標をキャプチャします:
    • scanRows / scanBytes: スキャンされたデータ量
    • returnRows: 返された結果行の数
    • cpuCostNs: 消費された CPU 時間 (ナノ秒単位)
    • memCostBytes: メモリ使用量
    • spillBytes: ディスクにスピルされたデータ量
  • エラー診断: 失敗したクエリのエラーメッセージとスタックトレースを記録
  • リソースグループ監視: 異なるリソースグループ間でのクエリ実行メトリクスを追跡 fe.profile.log は JSON 形式で保存されます。

設定

  • enable_profile_log: プロファイルログを有効にするかどうか
  • profile_log_dir: プロファイルログを保存するディレクトリ
  • profile_log_roll_size_mb: ログローテーションサイズ (MB 単位)
  • profile_log_roll_num: 無制限な増加と過剰なディスク使用を防ぐために保持するプロファイルログファイルの数を制御します。デフォルトは 5
  • profile_log_roll_interval: ローテーションの頻度を指定します。デフォルトは DAY で、日次ローテーションを意味します。ローテーション条件が満たされると、最新の 5 ファイルが保持され、古いファイルは削除されます
  • profile_log_delete_age: 古いファイルを削除するまでの保持期間を制御します。デフォルトは 1 日
  • enable_profile_log_compress: プロファイルログの圧縮が有効かどうかを制御します。デフォルトは false で、圧縮は無効です

fe.internal.log

fe.internal.log の目的は、FE (フロントエンド) の内部操作に専用のログを記録することであり、主にシステムレベルの監査とデバッグに使用されます。主な機能には以下が含まれます:

  1. 内部操作監査: ユーザークエリとは別に、システムが開始した内部 SQL 実行を記録
  2. 統計追跡: 特に統計収集に関連する操作を記録
  3. デバッグサポート: 内部操作の問題をトラブルシューティングするための詳細なログを提供 ログ記録には以下のようなエントリが含まれます:
  • 統計モジュール (internal.statistic)
  • コアシステムモジュール (internal.base)

このログは、StarRocks の内部統計収集プロセスを分析し、内部操作に関連する問題を診断するのに特に役立ちます。

設定

  • internal_log_dir: このログの保存ディレクトリを制御
  • internal_log_modules: 内部ログモジュールを設定する配列で、fe.internal.log ファイルに記録する必要がある内部操作モジュールを定義します。デフォルトは {"base", "statistic"}
  • internal_log_roll_num: 保持するファイルの数。デフォルトは 90
  • internal_log_roll_interval: ローテーションの頻度を指定します。デフォルトは DAY で、日次ローテーションを意味します。ローテーション条件が満たされると、最新の 90 ファイルが保持され、古いファイルは削除されます
  • internal_log_delete_age: 古いファイルを削除するまでの保持期間を制御します。デフォルトは 7 日

fe.audit.log

これは StarRocks のクエリ監査ログであり、すべてのユーザークエリと接続に関する詳細情報を記録します。監視、分析、および監査に使用されます。主な目的には以下が含まれます:

  1. クエリ監視: すべての SQL クエリの実行ステータスとパフォーマンスメトリクスを記録
  2. ユーザー監査: ユーザーの行動とデータベースアクセスを追跡
  3. パフォーマンス分析: クエリ実行時間やリソース消費などのメトリクスを提供
  4. 問題診断: エラーステータスとエラーコードを記録し、トラブルシューティングを容易にする

設定

  • audit_log_dir: このログの保存ディレクトリを制御
  • audit_log_roll_num: 保持するファイルの数。デフォルトは 90
  • audit_log_roll_interval: ローテーションの頻度を指定します。デフォルトは DAY で、日次ローテーションを意味します。ローテーション条件が満たされると、最新の 90 ファイルが保持され、古いファイルは削除されます
  • audit_log_delete_age: 古いファイルを削除するまでの保持期間を制御します。デフォルトは 7 日
  • audit_log_json_format: JSON 形式でログを記録するかどうか。デフォルトは false
  • audit_log_enable_compress: 圧縮が有効かどうか

fe.big_query.log

これは StarRocks の専用の大規模クエリログファイルであり、高リソース消費のクエリを監視および分析するために使用されます。その構造は監査ログに似ていますが、以下の 3 つの追加フィールドが含まれています:

  • bigQueryLogCPUSecondThreshold: CPU 時間のしきい値
  • bigQueryLogScanBytesThreshold: スキャンサイズ (バイト単位) のしきい値
  • bigQueryLogScanRowsThreshold: スキャン行数のしきい値

設定

  • big_query_log_dir: このログの保存ディレクトリを制御
  • big_query_log_roll_num: 保持するファイルの数。デフォルトは 10
  • big_query_log_modules: 内部ログモジュールの種類。デフォルトは query
  • big_query_log_roll_interval: ローテーションの頻度を指定します。デフォルトは DAY で、日次ローテーションを意味します。ローテーション条件が満たされると、最新の 10 ファイルが保持され、古いファイルは削除されます
  • big_query_log_delete_age: 古いファイルを削除するまでの保持期間を制御します。デフォルトは 7 日

fe.dump.log

これは StarRocks のクエリダンプログであり、特に詳細なクエリデバッグと問題診断に使用されます。主な目的には以下が含まれます:

  • 例外デバッグ: クエリ実行中に例外が発生した場合に自動的に完全なクエリコンテキストを記録
  • 問題再現: クエリの問題を再現するのに十分な詳細情報を提供
  • 詳細診断: メタデータ、統計、実行プランなどのデバッグ情報を含む
  • 技術サポート: 技術サポートチームが問題を分析するための包括的なデータを提供 以下のコマンドで有効にできます:
SET enable_query_dump = true;

設定

  • dump_log_dir: このログの保存ディレクトリを制御
  • dump_log_roll_num: 保持するファイルの数。デフォルトは 10
  • dump_log_modules: 内部ログモジュールの種類。デフォルトは query
  • dump_log_roll_interval: ローテーションの頻度を指定します。デフォルトは DAY で、日次ローテーションを意味します。ローテーション条件が満たされると、最新の 10 ファイルが保持され、古いファイルは削除されます
  • dump_log_delete_age: 古いファイルを削除するまでの保持期間を制御します。デフォルトは 7 日

fe.features.log

これは StarRocks のクエリプラン機能ログであり、クエリ実行プランの機能情報を収集および記録するために使用されます。主に機械学習とクエリ最適化分析に役立ちます。主な目的には以下が含まれます:

  1. クエリプラン機能の収集: クエリ実行プランからさまざまな特性を抽出
  2. 機械学習データソース: クエリコスト予測モデルのトレーニングデータを提供
  3. クエリパターン分析: 実行パターンと機能分布を分析
  4. オプティマイザの改善: コストベースオプティマイザ (CBO) の改善をサポートするデータを提供

設定で有効にできます。

// プラン機能収集を有効にする  
enable_plan_feature_collection = false // デフォルトでは無効

// クエリコスト予測を有効にする
enable_query_cost_prediction = false // デフォルトでは無効

設定

  • feature_log_dir: このログの保存ディレクトリを制御
  • feature_log_roll_num: 保持するファイルの数。デフォルトは 5
  • feature_log_roll_interval: ローテーションの頻度を指定します。デフォルトは DAY で、日次ローテーションを意味します。ローテーション条件が満たされると、最新の 5 ファイルが保持され、古いファイルは削除されます
  • feature_log_delete_age: 古いファイルを削除するまでの保持期間を制御します。デフォルトは 3 日
  • feature_log_roll_size_mb: ログローテーションサイズ。デフォルトは 1024 MB で、1 GB ごとに新しいファイルが作成されます

BE/CN ロギングの詳細

{be or cn}.INFO.log

主に BE/CN ノードによって生成されるさまざまな実行時の動作ログを記録し、これらのログは INFO レベルです。例:

  • システム起動情報:
    • BE プロセスの起動と初期化
    • ハードウェアリソースの検出 (CPU、メモリ、ディスク)
    • 設定パラメータの読み込み
  • クエリ実行情報:
    • クエリの受信とディスパッチ
    • フラグメント実行ステータス
  • ストレージ関連情報:
    • タブレットのロードとアンロード
    • Compaction 実行プロセス
    • データインポートステータス
    • ストレージスペース管理

設定

  • sys_log_level: ログレベル、デフォルトは INFO
  • sys_log_dir: ログの保存ディレクトリ、デフォルトは ${STARROCKS_HOME}/log
  • sys_log_roll_mode: ログローテーションモード、デフォルトは SIZE-MB-1024 で、現在のログファイルが 1024 MB に達すると新しいログファイルが作成されます
  • sys_log_roll_num: 保持するログファイルの数、デフォルトは 10

{be or cn}.WARN.log

be.WARN.log は WARNING レベル以上のログエントリを保存します。例としては、 クエリ実行の警告:

  • クエリ実行時間が長すぎる
  • メモリ割り当て失敗の警告
  • オペレーター実行例外 ストレージ関連の警告:
  • 異常なタブレットステータス
  • 遅い Compaction 実行
  • データファイルの破損警告
  • ストレージ I/O 例外

設定

  • sys_log_level: ログレベル、デフォルトは INFO
  • sys_log_dir: ログの保存ディレクトリ、デフォルトは ${STARROCKS_HOME}/log
  • sys_log_roll_mode: ログローテーションモード、デフォルトは SIZE-MB-1024 で、現在のログファイルが 1024 MB に達すると新しいログファイルが作成されます
  • sys_log_roll_num: 保持するログファイルの数、デフォルトは 10

{be or cn}.ERROR.log

be.ERROR.logERROR レベル以上のログエントリを保存します。典型的なエラーログの内容: クエリ実行エラー

  • クエリのタイムアウトまたはキャンセル
  • メモリ不足によるクエリの失敗 データ処理エラー
  • データロードの失敗 (例: フォーマットエラー、制約違反)
  • データ書き込みの失敗
  • データ読み取りエラー (例: ファイルの破損、I/O エラー) ストレージシステムエラー
  • タブレットロードの失敗
  • Compaction 実行の失敗
  • 破損したデータファイル
  • ディスク I/O エラー

設定

  • sys_log_level: ログレベル、デフォルトは INFO
  • sys_log_dir: ログの保存ディレクトリ、デフォルトは ${STARROCKS_HOME}/log
  • sys_log_roll_mode: ログローテーションモード、デフォルトは SIZE-MB-1024 で、現在のログファイルが 1024 MB に達すると新しいログファイルが作成されます
  • sys_log_roll_num: 保持するログファイルの数、デフォルトは 10

{be or cn}.FATAL.log

主に BE/CN ノードによって生成されるさまざまな実行時の動作ログを記録し、これらのログは FATAL レベルです。このようなログが生成されると、BE/CN ノードプロセスは終了します。

設定

  • sys_log_level: ログレベル、デフォルトは INFO
  • sys_log_dir: ログの保存ディレクトリ、デフォルトは ${STARROCKS_HOME}/log
  • sys_log_roll_mode: ログローテーションモード、デフォルトは SIZE-MB-1024 で、現在のログファイルが 1024 MB に達すると新しいログファイルが作成されます
  • sys_log_roll_num: 保持するログファイルの数、デフォルトは 10

error_log

このログは主に、データインポート中に BE/CN ノードで発生したさまざまなエラー、拒否されたレコード、および ETL の問題を記録します。ユーザーは http://be_ip:be_port/api/get_log_file を介してインポートエラーの主な理由を取得できます。ログファイルは ${STARROCKS_HOME}/storage/error_log ディレクトリに保存されます。

設定

  • load_error_log_reserve_hours: エラーログファイルが保持される期間。デフォルトは 48 時間で、ログファイルは作成されてから 48 時間後に削除されます。