OBServerのログは、observerのインストールディレクトリ内のlogディレクトリに保存されており、observer.log、rootservice.log、election.log、trace.logの4種類に分かれています。それぞれOBServerログ、RSログ、選挙ログ、フルパス追跡ログに対応しています。
各ログについて、例えばobserver.logの場合、ファイル名に基づいて大まかに以下のように分類されます:
observer.log
observer.log.20210901123456
observer.log.wf
observer.log.wf.20210901123456
observer.logが256MBに達すると、そのファイル名の後ろにタイムスタンプを付けて、次のログ形式にリネームされます。wfログの意味については、下記のenable_syslog_wf構成パラメータを参照してください。
ログフォーマット
ログフォーマット
[時間] ログレベル [所属モジュール] ファイル:行番号 [スレッドID] [0] [trace_id] [lt] [破棄ログ数]ログパラメータ情報
パラメータ 説明 時間 ログ生成の具体的な日付と時間を記録したタイムスタンプ ログレベル ログの重要度またはレベル 所属モジュール ログが属するモジュールまたはコンポーネントであり、ログが発生した場所と出所を示します ファイル:行番号 ログ記録のソースコードファイルパスと行番号であり、ログのソースコード位置を特定するために使用されます スレッドID そのログを生成したスレッドの一意の識別子であり、異なるスレッドが生成したログを区別するために使用されます 0 トランザクションIDを記録するか、ログに関連する他の情報を識別するために使用されます。[0]はこのフィールドの値が0であることを示します trace_id このログイベントのトレースIDを示します lt ltはラベルであり、このラベルの値が前のログ記録に費やされた時間(マイクロ秒)を示し、前のログの実行時間を示します ログ破棄数 このログが生成される前に破棄されたログの数を記録するために使用され、以前のログエントリが何らかの理由で破棄されたか、記録されなかったことを示します ログ例
[2021-09-01 11:31:18.605433] INFO [STORAGE] ob_pg_sstable_garbage_collector.cpp:170 [38715][0][Y0-0000000000000000-0-0] [lt=15] [dc=0] do one gc free sstable by queue(ret=0, free sstable cnt=0)
ログレベル
低い順に7種類あります:DEBUG、TRACE、WDIAG、EDIAG、INFO、WARN、ERROR。
その中でERRORログは特別で、ログを出力した時のスタックが出力されます(シンボルテーブルの解析が必要です)。
注意
DEBUGログを有効にすると大量のリソースを消費します。より新しいバージョンでは、RELEASEコンパイル時にDEBUGログが自動的に削除されるため、有効にしても反映されません。
所属モジュール
多くの種類があり、大まかにログが属するモジュールを区別できます。
スレッドID
ログが出力されたスレッドのIDを表示します。対応するスレッドの挙動を追跡するために使用でき、スレッドのハングやタイムアウトなどの問題を調査するのに役立ちます。
TRACE_ID
OceanBaseデータベース内部のSQLレベルのIDで、デフォルトはY0-0000000000000000-0-0です。trace_id を使用して、あるSQLの実行プロセスを特定でき、問題の調査において重要な手段です。
ログ圧縮
構成パラメータを使用して、圧縮アルゴリズム、ディスク容量の上限、各ログの非圧縮ファイル数を設定します。ログ圧縮の詳細については、ログ圧縮を参照してください。
ログ解凍
圧縮後のログファイルを確認する方法は以下の通りです:解凍して確認する、圧縮ファイルを直接確認する、obdiagツールを使用して検索する。ログ圧縮の詳細については、ログ解凍を参照してください。
関連構成パラメータ
以下のすべての構成パラメータはクラスタレベルであり、システムテナントで使用する必要があります。以下の方法で変更できます。
obclient> ALTER SYSTEM SET enable_syslog_recycle = False;
enable_syslog_recycle
OBServerノード起動前の古いログを記録するスイッチを有効にするかどうかを設定します。デフォルトはFalseです。
max_syslog_file_countと組み合わせて使用し、リサイクルロジックが古いログファイルを考慮するかどうかを決定します。有効にすると、不要なログが自動的に削除されます。
enable_syslog_recycleの詳細については、enable_syslog_recycleを参照してください。enable_syslog_wf
WFログを有効にするかどうかを設定します。デフォルトはTrueです。
有効にすると、各ログのWARNレベル以上のログが
observer.log.wfなどのWFログにコピーされます。enable_async_syslog
非同期ログ書き込み機能を有効にするかどうかを設定します。デフォルトはTrueです。
無効にすると、同期方式でログが書き込まれ、observer停止前にすべてのログが書き込まれることを保証しますが、パフォーマンスは低下するため、無効にすることは推奨されません。
max_syslog_file_count
各ログの最大ログ数を設定します。デフォルトは0です。この構成パラメータが0より大きく、かつその値が
syslog_file_uncompressed_countより大きいか等しく、かつenable_syslog_recycleがTrueの場合にのみ有効になります。注意
この構成パラメータの範囲は[0, +∞)ですが、observerソースコードではこの値が
MAX_LOG_FILE_COUNT、すなわち10240を超えないよう制約されています。超えても設定は成功しますが、実際に有効な値はMAX_LOG_FILE_COUNTになります。syslog_io_bandwidth_limit
ログの帯域幅制限を設定します。デフォルトは30Mです。
注意
ログ出力速度が制限を超えた場合、以下の情報が出力されます。
REACH SYSLOG RATE LIMITsyslog_level
出力されるログの最低レベルを設定します。ログレベルは上記を参照してください。デフォルトはWDIAGです。
syslog_disk_size
システムログのディスク容量上限を設定します。デフォルト値は0Mです。ログの利用可能容量は
syslog_disk_sizeと実際のディスク容量によって決定され、そのうち小さい方が適用されます。残りの利用可能ディスク容量が2GB未満になると、最も古い部分のログファイルが削除されます。また、ログ圧縮機能が有効になっている場合、残りの利用可能ディスク容量が4GB未満になると、ログファイルの圧縮が開始されます。syslog_compress_func
システムログの圧縮アルゴリズムを設定します。デフォルト値はnoneで、圧縮機能が無効であることを意味します。選択可能な圧縮アルゴリズムには
zstd_1.0とzstd_1.3.8アルゴリズムがあり、使用可能なアルゴリズムを設定すると圧縮機能が有効になります。注意
圧縮機能は、
.log.{timestamp}という拡張子を持つログのみを圧縮します。timestampはファイル作成時のタイムスタンプを表します。wfという拡張子を持つファイルやタイムスタンプのないファイルは圧縮されません。syslog_file_uncompressed_count
システムログの圧縮されないファイル数を設定します。
syslog_compress_funcがnone以外の場合にのみ有効になり、各システムログファイルごとに個別にカウントされ、タイムスタンプのないログファイルは含まれません。構成パラメータsyslog_compress_funcと構成パラメータsyslog_file_uncompressed_count、syslog_disk_size、max_syslog_file_countとの関係:syslog_compress_func = noneの場合:syslog_file_uncompressed_countの値は無効です。syslog_disk_sizeとmax_syslog_file_countが共同でログファイルの上限を制御し、数とサイズの両方の制限を満たします。
syslog_compress_func != noneの場合:max_syslog_file_countの値は無効です。- ログ数が
syslog_file_uncompressed_countの値を超える部分を圧縮し、全体がsyslog_disk_sizeの値に近づくと、最も古いログの削除を開始します。