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の値に近づいたときに最も古いログの削除が開始されます。