エンドツーエンド・トレースとは?
OceanBaseデータベースは分散システムとして、複雑な呼び出しパスを持っています。タイムアウトが発生した場合、問題がOceanBase内部のコンポーネントにあるのか、それともネットワークの問題によるものかを迅速に特定することは困難であり、運用保守担当者は経験やobserverログに基づいて分析するしかありませんでした。診断効率を向上させるため、今回の更新では、ユーザーのSQLリクエストがデータベースの全パスにおいて、異なるコンポーネントや段階で実行される関連情報を追跡し、可視化してユーザーに提示する、全く新しいエンドツーエンド・トレースメカニズムが導入されました。これにより、ユーザーは問題の位置を迅速に特定でき、コンポーネント内部の問題を迅速かつ正確に発見することが可能になります。
エンドツーエンド・トレースのパス
エンドツーエンド・トレースは、主に2つのデータフローパスをカバーします。
- 1つ目は、リクエストがアプリケーションから始まり、クライアント(JDBCやOCIなど)を通じてODP(プロキシサーバー)に渡され、その後ODPからOBServerに転送され、最終的に結果がアプリケーションに返されるパスです。
- 2つ目は、リクエストがアプリケーションから直接クライアントを経由してOBServerに送信され、結果が直接返されるパスです。
エンドツーエンド・トレースの目的は、これら2つのパス上のすべてのコンポーネントにおける問題の特定です。 ユーザーはクライアントを使用してOceanBaseデータベースに接続し、クライアントからリクエストを送信する際、そのリクエストはOBProxyを経由してOBServerに転送されるか、または直接OBServerに到達します。エンドツーエンド・トレース機能を利用することで、運用保守担当者はPL/SQLのDBMS_MONITORパッケージのメソッドを使用し、必要に応じてアプリケーションでのエンドツーエンド・トレース(trace)の有無や、トレース情報の出力詳細を制御および監視できます。
エンドツーエンド・トレースのログ
エンドツーエンド・トレースのログ、すなわちトレースログ(trace logs)は、データアクセスパスに基づいて記録内容が決定されます。ODPを介してデータベースにアクセスする場合、トレース情報はOBProxyとOBServerの両方のログファイルに記録されます。直接OBServerにアクセスする場合は、OBServerのログファイルにのみ記録されます。具体的には、OBProxyのトレースログファイルはobproxy_trace.logという名前で、OBServerのはtrace.logという名前です。各ログファイルのサイズ制限は256MBで、ログがこのサイズに達すると、システムは新しいログファイルを作成し、古いファイルをアーカイブします。アーカイブファイルの数はパラメータmax_syslog_file_countによって制御され、上限を超えるファイルは自動的に削除されます。 運用保守担当者は、すべてのトレースログを収集・分析することで、各トランザクションやSQLクエリが呼び出しチェーン全体でどの程度の時間を費やして実行されたか、その他の関連情報を追跡できます。これにより、問題の正確な特定に重要な手がかりを提供するだけでなく、運用保守の効率も大幅に向上します。