V4.2.3バージョンから、Alertログが追加されました。これはアラート関連のログ情報を表示するために使用されます。
Alertログの概要
Alertログは警告ログであり、OBServerの実行中に発生した重要なINFO、WARN、ERRORログを含みます。クラスタ内の重要なイベントを記録し、クラスタ状態の監視や一般的な問題のトラブルシューティングに役立てることを目的としています。
Alertログフォーマット
ログファイルはCSV形式で保存され、各ログフィールドは|で区切られ、ログ情報のテキストは""で囲まれます。
ログ例:
2023-12-21 13:46:57.650115|INFO|LOG|OB_LOG_SERVICE_START_SUCCESS|0|1001|51152|OBServer|Y5B690B7C0505-00060C87BB2B5971-0-0|start|ob_log_service.h:224|"OBServer log service start success, cost 638519 us."
Alertログには以下の12個のフィールドが含まれます:日時、レベル、モジュール、イベント、エラーコード、テナントID、スレッド番号、スレッド名、TRACE ID、関数名、コード位置、詳細情報(解決策を含む)。 各フィールドの具体的な意味は以下のとおりです:
フィールド |
意味 |
例 |
|---|---|---|
| 時間 | ログが出力された時間 | 2023-12-21 13:46:57.650115 |
| レベル | ログレベル。例:INFO、WARN、ERROR | INFO |
| モジュール | ログが属するモジュール。例:STORAGE、SQL、TRANS | STORAGE |
| イベント | イベント識別子。クラスタの実行中に発生した重要なイベントを一意に識別します。 | OB_LOG_SERVICE_START_SUCCESS |
| エラーコード | エラーに対応するコード。INFOログのエラーコードは0です。 | -4012 |
| テナントID | 現在のタスクが属するテナントの番号 | 1002 |
| スレッド番号 | 現在のスレッドのスレッド番号 | 51152 |
| スレッド名 | 現在のスレッドのスレッド名 | observer |
| TRACE ID | 現在のSQL文の識別子。SQLの実行プロセスを追跡するために使用されます。 | Y5B690B7C0505-00060C87BB2B5971-0-0 |
| 関数名 | ログが存在する関数の関数名 | start |
| コード位置 | ログが存在するコード位置 | ob_log_service.h:224 |
| 詳細情報 | ログイベントの説明、エラー原因、解決策 | "observer log service start success, cost 638519 us." |
Alertログの保存場所
Alertログは、{observerインストールディレクトリ}/log/alert ディレクトリにあり、ログファイル名は alert.log です。
単一のAlertログファイルのサイズは256MBを超えません。ログファイルのサイズが256MBに達すると、システムはログローテーションを実行します。元のログファイルには、日付時刻のサフィックス(形式:yyyyMMddHHmmss)が追加されます。例:alert.log.20220304102928236。
Alertログのクエリ
外部テーブルに基づいてAlertログを確認する
alert.log ファイルはCSV形式で保存されており、システムテナント以外では外部テーブルの形式でのみログの確認が可能です。
Alertログファイルと比較して、外部テーブルにはIPアドレスとPORTフィールドが追加されており、これらはAlertが属するノードのIPアドレスとポート番号を示します。以下のコマンドを使用してAlertログを確認します:
obclient> SELECT * FROM sys_external_tbs.__all_external_alert_log_info;
クエリ結果は次のとおりです:
+----------------------------+-------+----------------+---------------------------------------+---------+----------------+------+-----------+-----------+-------------+-----------------------------------+-------------------+--------------------------+-----------------------------------------------------------+
| time | level | module | event | errcode | ip | port | tenant_id | thread_id | thread_name | trace_id | func_name | code_location | message |
+----------------------------+-------+----------------+---------------------------------------+---------+----------------+------+-----------+-----------+-------------+-----------------------------------+-------------------+--------------------------+-----------------------------------------------------------+
| 2024-04-01 14:01:21.367457 | INFO | SERVER | OB_SERVER_INIT_BEGIN | 0 | xx.xx.xx.xx | 2882 | 0 | 70604 | observer | Y0-00000000xxxxxxxx-0-0 | init | ob_server.cpp:263 | [server_start 1/18] observer init begin. |
| 2024-04-01 14:01:21.378711 | INFO | LIB | OB_SERVER_SYSLOG_SERVICE_INIT_BEGIN | 0 | xx.xx.xx.xx | 2882 | 0 | 70604 | observer | Y0-00000000xxxxxxxx-0-0 | init | ob_log.cpp:1491 | [server_start 2/18] observer syslog service init begin. |
| 2024-04-01 14:01:21.381666 | INFO | LIB | OB_SERVER_SYSLOG_SERVICE_INIT_SUCCESS | 0 | xx.xx.xx.xx | 2882 | 0 | 70604 | observer | Y0-00000000xxxxxxxx-0-0 | init | ob_log.cpp:1565 | [server_start 3/18] observer syslog service init success. |
| 2024-04-01 14:01:22.267567 | INFO | SERVER | OB_SERVER_INIT_SUCCESS | 0 | xx.xx.xx.xx | 2882 | 0 | 70604 | observer | Y0-00000000xxxxxxxx-0-0 | init | ob_server.cpp:540 | [server_start 4/18] observer init success. |
| 2024-04-01 14:01:22.267599 | INFO | SERVER | OB_SERVER_START_BEGIN | 0 | xx.xx.xx.xx | 2882 | 0 | 70604 | observer | Y0-00000000xxxxxxxx-0-0 | start | ob_server.cpp:854 | [server_start 5/18] observer start begin. |
| 2024-04-01 14:01:22.267613 | INFO | SERVER | OB_SERVER_INSTANCE_START_BEGIN | 0 | xx.xx.xx.xx | 2882 | 0 | 70604 | observer | Y0-00000000xxxxxxxx-0-0 | start | ob_server.cpp:872 | [server_start 6/18] observer instance start begin. |
| 2024-04-01 14:01:22.300143 | INFO | STORAGE_BLKMGR | OB_SERVER_BLOCK_MANAGER_START_BEGIN | 0 | xx.xx.xx.xx | 2882 | 0 | 70604 | observer | Y0-00000000xxxxxxxx-0-0 | start | ob_block_manager.cpp:199 | [server_start 7/18] block manager start begin. |
| 2024-04-01 14:01:22.354769 | INFO | STORAGE_BLKMGR | OB_SERVER_BLOCK_MANAGER_START_SUCCESS | 0 | xx.xx.xx.xx | 2882 | 0 | 70604 | observer | Y0-00000000xxxxxxxx-0-0 | start | ob_block_manager.cpp:256 | [server_start 8/18] block manager start success. |
| 2024-04-01 14:02:15.592144 | INFO | BOOTSTRAP | OB_BOOTSTRAP_PREPARE_BEGIN | 0 | xx.xx.xx.xx | 2882 | 1 | 71165 | T1_L0_G0 | YB42AC1E87E2-00061502xxxxxxxx-0-0 | prepare_bootstrap | ob_bootstrap.cpp:243 | bootstrap prepare begin. |
| 2024-04-01 14:02:21.341029 | INFO | BOOTSTRAP | OB_BOOTSTRAP_PREPARE_SUCCESS | 0 | xx.xx.xx.xx | 2882 | 1 | 71165 | T1_L0_G0 | YB42AC1E87E2-00061502xxxxxxxx-0-0 | prepare_bootstrap | ob_bootstrap.cpp:275 | bootstrap prepare success. |
+----------------------------+-------+----------------+---------------------------------------+---------+----------------+------+-----------+-----------+-------------+-----------------------------------+-------------------+--------------------------+-----------------------------------------------------------+
10 rows in set, 6 warnings (0.008 sec)
alert.log ファイルが256MBに達すると、新しいAlertログファイルが生成されます。この場合、外部テーブルのファイルリストを手動で更新する必要があります:
obclient> ALTER EXTERNAL TABLE sys_external_tbs.__all_external_alert_log_info refresh;
更新後に再度クエリを実行すると、すべてのログ内容を確認できます。
注意
ツールの互換性とアップグレードの一貫性を確保するため、__all_external_alert_log_info テーブルを手動で作成しないでください。
Alertログに基づく問題のトラブルシューティング
INFOログ
alert.logファイル内のINFOログを確認することで、特定のプロセスの進捗状況を把握できます。例えば、以下のOBServer起動シナリオのログでは、[server_start 3/12]の情報から、observerプロセスの起動フローが12のステップで構成されており、現在3番目のステップにあることがわかります。このステップのイベント識別子はOB_SERVER_SYSLOG_SERVICE_INIT_SUCCESSで、「システムログサービスの初期化に成功しました」と表されています。2024-02-22 11:39:39.910566|INFO|SERVER|OB_SERVER_START_BEGIN|0|0|88288|OBServer|Y0-00000000xxxxxxxx-0-0|main|main.cpp:556|"[server_start 1/12] OBServer start begin." 2024-02-22 11:39:39.933725|INFO|LIB|OB_SERVER_SYSLOG_SERVICE_INIT_BEGIN|0|0|88288|OBServer|Y0-00000000xxxxxxxx-0-0|init|ob_log.cpp:1457|"[server_start 2/12] OBServer syslog service start begin." 2024-02-22 11:39:39.937152|INFO|LIB|OB_SERVER_SYSLOG_SERVICE_INIT_SUCCESS|0|0|88288|OBServer|Y0-00000000xxxxxxxx-0-0|init|ob_log.cpp:1531|"[server_start 3/12] OBServer syslog service start success."WARN/ERRORログ
alert.logファイル内のWARNログおよびERRORログを確認することで、イベントの説明情報を見たり、エラーの原因や解決策を得たりできます。例えば、以下のログはCLOGモジュールがディスクのサイズ変更操作に失敗したことを示しており、エラー原因として新しいディスクサイズがすべてのテナントを収容するには不十分であることが示されています。同時に、この問題を解決する方法として、log_disk_sizeを43526MBより大きい値に設定することが提案されています。2023-11-17 03:19:38.592090|ERROR|CLOG|OB_CLOG_ALLOCATE_DISK_SPACE_FAILED|-4290|0|2569344|OBServer|Y0-0000000000000000-0-0|resize_|ob_server_log_block_mgr.cpp:211|"new log_disk_size(21504MB) is not enough to hold all tenants. [suggestion] set log_disk_size greater than 43526MB."