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以上のログがwfログにコピーされます。例えば、
observer.log.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
ログの転送帯域幅制限です。デフォルトは30MBです。
注意
ログの出力速度がこの制限を超えると、以下のメッセージが出力されます。
REACH SYSLOG RATE LIMITsyslog_level
出力されるログの最低レベルです。ログレベルについては上記を参照してください。デフォルトはWDIAGです。
syslog_disk_size
システムログのディスク容量の上限です。デフォルト値は0MBです。ログの利用可能な容量は
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に近づいたときに最も古いログの削除を開始します。