このページは機械翻訳したものです。

更新日 2025-03-24

ファンクションの分散トレース

OCI Functionsを使用したデバッグ時にトレースを有効にし、ファンクション・トレースを表示する方法をご紹介します。

関数が呼び出されたが、予期したとおりに実行または実行されない場合は、問題を詳細に調査する必要があります。分散トレース機能は、システムのさまざまなコンポーネントを通過する関数の実行を観察します。スタンドアロン関数をトレースおよび計測して、実行およびパフォーマンスの問題をデバッグできます。ファンクション・トレースを使用して、次のような複数の機能およびサービスで構成される完全なサーバーレス・アプリケーションに関する問題をデバッグすることもできます。

  • 別の関数を呼び出す関数
  • オブジェクト・ストレージ・サービスなどの他のサービスを呼び出す関数
  • APIゲートウェイ・サービスにデプロイされたAPIゲートウェイのバックエンドとして機能するファンクション
  • イベント・サービス、通知サービスまたはコネクタ・ハブによってイベントに応答してトリガーされるファンクション

OCI Functionsトレース機能は、Oracle Cloud Infrastructure Application Performance Monitoringサービスによって提供されます。Application Performance Monitoring (APM)の機能を使用すると、作成およびデプロイするファンクションの障害およびレイテンシの問題を特定してトラブルシューティングできます。

Application Performance Monitoringサービスで、次の手順を実行します。

  • APMドメインには、Application Performance Monitoringによってモニターされるシステムが含まれます。APMドメインは、データを格納、集計、表示およびビジュアル化するトレースおよびスパン・データのコレクタのインスタンスです。
  • トレースは、指定された期間に分散システムのすべてのコンポーネントを通過するリクエストの完全なフローです。これは、同じ単一全体のリクエスト・フローに関連するすべてのスパン・ツリー全体で構成されます。
  • スパンは、名前、開始時間および期間がトレース内の操作または論理的な作業単位です。スパンは、リクエスト・フロー全体内の作業単位の期間に関連付けられた時間セグメントです。

Application Performance Monitoringのトレース・エクスプローラを使用すると、リクエスト・フロー全体をビジュアル化し、診断のトレースおよびスパン詳細を確認できます。エラーのあるスロー・トレースおよびトレースを表示および監視できます。トレースの問題を分離して識別するために、ページ・ロード、AJAXコール、サービス・リクエストなどの特定のスパンにドリルダウンできます。Application Performance Monitoringサービスの詳細は、「Application Performance Monitoring」を参照してください。

関数のトレースを有効にするには、次を実行する必要があります。

  1. ポリシーが存在しない場合は、APMドメインにアクセスする権限をOCI Functionsサービスに付与するポリシーを設定します(OCI FunctionsサービスおよびOCI Functionsユーザーにトレース・リソースへのアクセス権を付与するポリシー・ステートメントを参照)。
  2. APMドメインを設定します。
  3. Functionsアプリケーションのトレースを有効にし、作成したAPMドメインを選択します。
  4. 1つ以上の関数のトレースを有効にします。

ファンクションのトレースを有効にすると、OCIファンクションによってデフォルトのファンクション呼出しスパンが自動的に生成されます。デフォルト・スパンでは、リクエストの処理およびコール元へのレスポンスの返送にかかった全体的な時間など、ファンクションの実行コンテキストに関する情報が取得されます。デフォルトのファンクション呼出しスパンに加えて、カスタム・スパンを定義するコードをファンクションに追加できます。カスタム・スパンを使用して、デバッグに役立つ、より機能固有の情報を取得します。たとえば、特定の作業単位の開始と終了を取得するカスタム・スパンを定義できます。たとえば、作業単位には、Vaultからのデータベース・パスワードの取得、データベース接続の開始、データベースからのレコードの取得などがあります。

OCI Functionsコンテキストには、有用なトレース情報を提供する4つの変数が追加されています。次の変数があります。

  • FN_APP_NAME:ファンクション・アプリケーション名。
  • FN_FN_NAME:関数名。
  • OCI_TRACE_COLLECTOR_URL: データ・キーを含むAPMドメインURL。
  • OCI_TRACING_ENABLED:トレースは有効になっていますか。
    • 環境変数から取得すると、0または1が返されます。
    • 関数コンテキストから取得すると、使用する言語に適したtrueまたはfalseが返されます。

トレースを有効にするために必要なIAMポリシー

トレースを有効にする前に、所属するグループに、既存のAPMドメインにアクセスする権限またはAPMドメインを作成する権限が必要です。また、OCI FunctionsにはAPMドメインにアクセスする権限が必要です。OCI FunctionsサービスおよびOCI Functionsユーザーにトレース・リソースへのアクセス権を付与するポリシー・ステートメントを参照してください。

コンソールを使用したトレースの有効化およびファンクション・トレースの表示

Oracle Cloud Infrastructure Application Performance Monitoring (APM)サービスのトレースの有効化およびファンクション・トレースの表示には、いくつかのステップが必要です。まず、関数を含むアプリケーションのトレースを有効にします。次に、1つ以上の関数に対してトレースを有効にします。その後、APMトレース・エクスプローラでファンクション・トレースを表示できます。

コンソールを使用したトレースの有効化

トレースを有効にするには、次のステップを実行します。

  1. 「アプリケーション」リスト・ページで、トレースを有効にする関数を含むアプリケーションを選択します。リストページまたはアプリケーションの検索に関するヘルプが必要な場合は、Listing Applicationsを参照してください。
  2. アプリケーションのトレースを有効にするには:
    1. 「リソース」で、「トレース」を選択します。
    2. 「トレース使用可能」オプションを選択し、次を指定します。
      • コンパートメント:トレースを作成するコンパートメント。デフォルトでは、現在のコンパートメントです。
      • APMドメイン:トレースを作成するAPMドメイン(Application Performance Monitoringサービスで定義)。既存のAPMドメインを使用するには、リストから既存のAPMドメインを選択します。または、新しいAPMドメインを作成するには、「APMドメイン」を選択します。APMドメインの詳細は、Application Performance Monitoringスタート・ガイドを参照してください。
        Note

        The APM Domain needs to have both public and private data keys for function tracing to work.キーが存在しない場合は、コンソール・インタフェースを使用して作成できます。
    3. 「トレースの有効化」を選択して、アプリケーションのトレースを有効にします。

    Functionsアプリケーションのトレースを有効にすると、アプリケーション内の1つ以上の関数に対してトレースを有効にできるようになりました。

  3. アプリケーション内の特定の関数のトレースを有効にするには:
    1. 「リソース」で、「ファンクション」を選択します。
    2. トレースを有効にする1つ以上の関数の横にある「トレースの有効化」オプションを選択します。

      「トレースの有効化」オプションは、アプリケーションのトレースを以前に有効にした場合にのみ表示されます。次に注意してください:

      • 「トレースの有効化」オプションが表示されない場合は、アプリケーションのトレースを有効にする必要があります。アプリケーションのトレースをまだ有効にしていない場合は、前のステップを参照してください。
      • 以前にアプリケーションのトレースを有効にしたが、後で無効にした場合は、「アプリケーション・トレースの有効化」リンクが表示されます。「アプリケーション・トレースの有効化」リンクを選択して、アプリケーションのトレースを再度有効にします(前のステップを参照)。アプリケーションのトレースを再度有効にすると、特定の関数に対してトレースを有効にできます。

アプリケーションおよび1つ以上のファンクションのトレースを有効にすると、ファンクション・トレースを表示できます。

コンソールを使用したファンクション・トレースの表示

トレースが有効になっている関数のトレースを表示するには:

  1. 「アプリケーション」リスト・ページで、トレースを表示するファンクションを含むアプリケーションを選択します。リストページまたはアプリケーションの検索に関するヘルプが必要な場合は、Listing Applicationsを参照してください。
  2. 関数のトレースを表示するには:
    1. アプリケーションでトレースが有効になっているすべての関数のトレースを表示するには:
      1. 「リソース」で、「トレース」を選択します。
      2. トレースの名前を選択します。
        ノート

        トレース名は、アプリケーションのトレースをすでに有効にしている場合にのみ表示されます。
    2. トレースが有効になっている特定の関数のトレースを表示するには:
      1. 「リソース」で、「ファンクション」を選択します。
      2. ファンクションの横にある「アクション」メニュー(アクション・メニュー)を選択し、「トレースの表示」を選択します。
        ノート

        「トレースの表示」オプションは、ファンクションのトレースをすでに有効にしている場合にのみ表示されます。

    選択した関数のトレースがAPMトレース・エクスプローラに表示されます。デフォルトでは、デフォルトの関数呼び出しスパンおよび関数に定義されたカスタムスパンに対してトレースが表示されます。

  3. APMトレース・エクスプローラで:
    1. トレースを選択して、そのトレースのスパンを表示します。
    2. スパンを選択すると、そのスパンについて取得された詳細が表示されます。

    APMトレース・エクスプローラの使用の詳細は、トレース・エクスプローラの使用を参照してください。

関数のチェーンのトレース

デフォルトでは、関数トレースは関数呼び出し全体のトレースを提供します。ただし、多くの場合、最新のクラウド・アプリケーションでは、関数の呼出しを連鎖する必要があります。OCIファンクション・トレースでは、別のファンクションによって起動されたファンクションの実行をトレースできます。この機能は、APMトレース・エクスプローラの単一のスパン・ツリーでコールのチェーン内の各関数の実行を調べることができることを意味します。

ファンクションのチェーンをトレースするには、ファンクション・コードからのファンクション呼出しリクエストで、X-B3ヘッダーX-B3-TraceIdX-B3-SpanIdX-B3-ParentSpanIdおよびX-B3-Sampledを伝播する必要があります。

ファンクションの実行後、ファンクションのトレース・データが収集され、APMトレース・エクスプローラで使用できます。APMトレース・エクスプローラの使用の詳細は、トレース・エクスプローラの使用を参照してください。

ファンクションへのカスタム・スパンの追加

関数トレースを有効にすると、デフォルトの関数呼び出しスパンが関数呼び出し全体のトレースを提供します。デフォルトのスパンは適切な情報を提供できますが、コードを調査するときは、より深く掘り下げることができます。カスタム・スパンがコードに直接追加され、メソッドまたはコード・ブロックのスパンを定義できます。結果のデータにより、実行時のファンクションの全体像がよりよくわかります。

カスタム・スパンを使用するには、Oracle Cloud Infrastructure Application Performance Monitoring (APM)サービスを使用してアプリケーションおよびファンクションのトレースを有効にする必要があります。トレースを設定するには、次の手順を実行する必要があります。

  1. ポリシーが存在しない場合は、APMドメインにアクセスする権限をOCI Functionsサービスに付与するポリシーを設定します(OCI FunctionsサービスおよびOCI Functionsユーザーにトレース・リソースへのアクセス権を付与するポリシー・ステートメントを参照)。
  2. APMドメインを設定します。
  3. Functionsアプリケーションのトレースを有効にし、作成したAPMドメインを選択します。
  4. 1つ以上の関数のトレースを有効にします。

これらのステップはすでにカバーされています。ただし、カスタム・スパンにはさらにいくつかのことが必要です。

  • Zipkinなどの分散トレース・クライアント・ライブラリを選択します。
  • 関数の依存関係にクライアントライブラリを追加します。
  • ファンクション・コードで、OCI_TRACING_ENABLEDファンクションのコンテキスト変数を使用して、トレースが有効になっているかどうかを確認します。
  • ファンクション・コードで、OCI_TRACE_COLLECTOR_URLファンクション・コンテキスト変数を使用して、カスタム・スパンをAPMドメインに送信します。
  • 関数コードにインストゥルメンテーションを追加します。
ノート

カスタム・スパンを使用するには、次のFn Project FDKの最小バージョンが必要です:

  • Java FDK: 1.0.129
  • Python FDK: 0.1.22
  • ノードFDK: 0.0.20