ファンクション・ログの格納および表示

ファンクションが呼び出されるとき、通常、トラブルシューティングのためにファンクションのログにアクセスする必要があります。Oracle Cloud Infrastructure Loggingサービスは、ファンクション・ログのアクセス、検索および格納を行うデフォルトかつ推奨のオプションです。コンソールを使用したOracle Cloud Infrastructure Loggingのファンクション・ログの有効化および表示を参照してください。ファンクション・ログの内容の詳細は、ファンクションの詳細を参照してください。

または、Papertrailなどの外部ロギング宛先にファンクション・ログを送る必要が生じることもあります。Oracle Cloud Infrastructure Loggingサービスではなく外部ロギング宛先にログを送るには、Fn ProjectのCLIを使用してsyslog URLを指定します。Fn Project CLIコマンドを使用したsyslog URLの指定を参照してください。

ファンクションのログを格納および表示するには、そのファンクションにprint文が含まれる必要があることに注意してください。例:
  • node.jsの場合: console.log('Entering Hello Node.js function');
  • javaの場合: System.err.println("Entering Java Hello World Function");
  • goの場合: fmt.Println("Entering Hello Go function")

コンソールを使用したOracle Cloud Infrastructure Loggingのファンクション・ログの有効化および表示

Oracle Cloud Infrastructure Loggingサービスでファンクション・ログを有効化および表示するには:

  1. ファンクション開発者としてコンソールにサインインします。
  2. コンソールナビゲーション・メニューを開き、「開発者サービス」をクリックします。「関数」で「アプリケーション」をクリックします。
  3. ログを作成、有効化および表示するファンクションを使用するアプリケーションを含むリージョンおよびコンパートメントを選択します。

    「アプリケーション」ページには、選択したコンパートメント内のすべてのアプリケーションが表示されます。

  4. ログを作成、有効化および表示するファンクションを使用するアプリケーションを選択します。
  5. Oracle Cloud Infrastructure Loggingサービスで新しいファンクション・ログを作成および有効化するには:
    1. 「リソース」で、「ログ」をクリックし、アクション・アイコン(3つのドット)をクリックしてから、「ログの有効化」をクリックし、次を指定します:
      • コンパートメント: 新しいログを作成するコンパートメント。デフォルトでは、現在のコンパートメントです。
      • ログ・グループ: 新しいログを作成するログ・グループ。既存のログ・グループを選択するか、次を選択します:
        • デフォルト・ログ・グループの自動作成。デフォルト・ログ・グループがない場合にデフォルト名(DEFAULT_GROUP)を使用して作成します。
        • 新規ログ・グループの作成。指定する名前と説明を使用して新しいログ・グループを作成します。
      • ログ名: 新しいログの名前。デフォルトでは、<application-name>_invokeです。
      • ログの保持: ログ・データを保持する時間。
    2. 「ログの有効化」をクリックして、新しいログ(および指定した場合は新しいログ・グループ)を作成します。

    詳細は、リソースのロギングの有効化を参照してください。

  6. 既存のファンクション・ログを有効化するには、「リソース」で、「ログ」をクリックし、アクション・アイコン(3つのドット)をクリックしてから、「ログの有効化」をクリックします。
  7. 既存のファンクション・ログのデータを表示するには、「リソース」で、「ログ」をクリックし、表示したいログを含むログ・グループの名前を「ログ・グループ」列でクリックします。

    ログ・グループの「ログ詳細」ページがオープンし、ログ・データを表示したり、ログ・データを時間でソートしてフィルタできます。

  8. ログ・イベントの横にある下向き矢印をクリックして、そのイベントのログ・データを表示します。
  9. 「ログ検索で探索」をクリックしてログ・データを検索します。
    ヒント

    ログ・データを検索する場合、data.opcRequestIdフィールドを使用して、リクエストIDでログをフィルタできます。APIゲートウェイのAPIデプロイメントがOracle Functionsバックエンドでファンクションを起動する場合、次のように、APIゲートウェイ・リクエストとOracle Functionsリクエストの両方に関連するログを表示するには、ワイルドカードと同じdata.opcRequestIdフィールドを組み合せて使用します。
    1. 「ロギング検索」ページで、ログ・イベントの横にある下向き矢印をクリックして、そのイベントのログ・データを表示します。
    2. ファンクション・ログの"data.opcRequestId"フィールドをクリックし、ポップアップ・メニューから「フィルタ一致」を選択します。

      たとえば、関数ログに"data.opcRequestId": "/01FJA5VCVM0000000000025M1Z/01FJA5VCVM0000000000025M20"フィールドが含まれているとします。フィールド"data.opcRequestId": "/01FJA5VCVM0000000000025M1Z/01FJA5VCVM0000000000025M20"は、フィルタとして「ログ検索(基本モード)」ページにコピーされます。

    3. 「ログ検索(基本モード)」ページで、「拡張モードの表示」をクリックし、「問合せ」フィールドに表示される "data.opcRequestId"フィールド値の後半を* (アスタリスク)ワイルドカードに置き換えます。

      たとえば、data.opcRequestId: '/01FJA5VCVM0000000000025M1Z/*'を読み取るようにします。

      この図は、ログ検索(拡張モード)ページの一部を示しています。ワイルドカードはdata.opcRequestIdフィールドの2番目の半分です。
    4. 「検索」をクリックします。

Fn Project CLIコマンドを使用したsyslog URLの指定

Oracle Cloud Infrastructure Loggingサービスは、ファンクション・ログのアクセス、検索および格納を行うデフォルトかつ推奨のオプションです。

または、Fn ProjectのCLIを使用してsyslog URLを指定することで、Papertrailなどの外部ロギング宛先にファンクション・ログを送信できます。外部ロギング宛先を使用するには、パブリック・サブネットおよびインターネット・ゲートウェイを使用してVCNを設定している必要があります(Oracle Functionsで使用するVCNおよびサブネットの作成を参照してください)。

Syslog URLを設定して外部ロギング宛先にファンクション・ログを送信するには:

  1. ファンクション開発者として開発環境にログインします。
  2. 新しいアプリケーションを作成し、アプリケーション内のすべてのファンクションがログを外部ロギング宛先に送信するように指定するには、次のように入力します:

    fn create app <app-name> --syslog-url <logging-service-url> --annotation oracle.com/oci/subnetIds='["<subnet-ocid>"]'

    ここでは:

    • <app-name>は新しいアプリケーションの名前です。機密情報の入力は避けてください。
    • <logging-service-url>は、ログの送信先のsyslog URLです。
    • <subnet-ocid>は、ファンクションを実行するパブリック・サブネット(最大6個)のOCIDです。リージョナル・サブネットが定義されている場合、そのサブネットを選択し、可用性ドメイン全体でフェイルオーバーを実装しやすくすることがベスト・プラクティスです。リージョナル・サブネットが定義されておらず、高可用性の要件を満たす必要がある場合は、複数のサブネットを選択します(各OCIDを二重引用符で囲み、カンマで区切って、'["<subnet-ocid>","<subnet-ocid>"]'のフォーマットにします)。Oracleでは、サブネットはFn ProjectのCLIコンテキストで指定されているDockerレジストリと同じリージョン内にあることをお薦めします(Oracle Cloud Infrastructureに接続するためのFn ProjectのCLIコンテキストの作成を参照)。

    例:

    fn create app acmeapp --syslog-url tcp://my.papertrail.com:4242 --annotation oracle.com/oci/subnetIds='["ocid1.subnet.oc1.phx.aaaaaaaacnh..."]'

    その後、ログを格納するためにOracle Cloud Infrastructure Loggingを設定する場合、既存のsyslog URLの詳細が保持されることに注意してください。このため、後から外部ロギング宛先へのファンクション・ログの送信の再開を決める場合は、ただOracle Cloud Infrastructure Loggingを無効にすることが必要です。ログはsyslog URLに再び送信されます。

  3. 既存のアプリケーションを更新し、アプリケーション内のすべてのファンクションがログを外部ロギング宛先に送信するように指定するには、次のように入力します:

    fn update app <app-name> --syslog-url <logging-service-url> 

    ここでは:

    • <app-name>は、更新するアプリケーションの名前です
    • <logging-service-url>は、ログの送信先のsyslog URLです

    例:

    fn update app acmeapp --syslog-url tcp://my.papertrail.com:4242
  4. 既存のアプリケーションを更新し、syslog URLで指定された外部ロギング宛先を削除するには、次のように入力します:

    fn update app <app-name> --syslog-url '' 

    ここでは:

    • <app-name>は、更新するアプリケーションの名前です

    例:

    fn update app acmeapp --syslog-url ''

以前にサポートされていたロギング・オプション

以前のOracle Functionsリリース(Oracle Cloud Infrastructure Loggingサービスのリリースよりも前)では、ファンクションを含むアプリケーションに対してロギング・ポリシーを設定することで、Oracle Functionsがファンクションのログを格納する場所を指定できました。以前は、コンソールを使用してロギング・ポリシーを次のように設定できました:

  • 「OCIロギング」オプションを選択して、Oracle Cloud Infrastructure Object Storageのストレージ・バケットにログをオブジェクトとして格納します。

    ストレージ・バケット内のファンクション・ログを表示するには、所属するグループに次のアイデンティティ・ポリシー・ステートメントへのアクセス権が付与されている必要があります:

  • 「Syslog URL」オプションを選択してPapertrailなどの外部ロギング宛先にログを送信することで、ログを格納します。

既存のアプリケーションでロギング・ポリシーをすでに設定していた場合は、前述の機能が引き続きサポートされ、既存のロギング・ポリシーが適用されます。ただし、次の点に注意してください:

  • コンソールを使用して新しいロギング・ポリシーを設定したり、既存のロギング・ポリシーを編集したりすることはできません。
  • 既存のロギング・ポリシーで、ファンクション・ログをオブジェクトとしてOracle Cloud Infrastructure Object Storageのストレージ・バケットに格納するように指定されている場合:
    • ログをオブジェクト・ストレージに格納する機能は、将来のリリースで非推奨になる予定です。
    • Oracle Cloud Infrastructure Loggingを使用したログの格納に切り替えることをお薦めします。
    • Oracle Cloud Infrastructure Loggingを使用したログの格納に切り替えた場合、オブジェクト・ストレージへのログの格納に戻すことはできません。
    • オブジェクト・ストレージに格納されたログは、引き続き存在します(以前のように各ログ名には関連するファンクションのOCIDが含まれます)。
  • 既存のロギング・ポリシーでsyslog URLが指定されている場合:
    • ログを格納するためにOracle Cloud Infrastructure Loggingの使用に切り替えても、既存のsyslog URLの詳細は保持されます。このため、後から外部ロギング宛先へのファンクション・ログの送信の再開を決める場合は、ただOracle Cloud Infrastructure Loggingを無効にすることが必要です。ログはsyslog URLに再び送信されます。
    • 既存のロギング・ポリシーのsyslog URLを変更する場合は、Fn ProjectのCLIを使用して変更する必要があります。