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

OCIファンクションを使用してファンクション・ログを格納および表示する方法を確認します。

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

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

ファンクションのログ(Oracle Cloud Infrastructure ロギング・サービスに格納されているデフォルトの起動ログ以外)を格納および表示するには、そのファンクションに印刷文が含まれる必要があることに注意してください。例:
  • 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. 「リソース」で、「ログ」をクリックし、「アクション」メニュー(アクション・メニュー)をクリックしてから、「ログの有効化」をクリックし、次を指定します:
      • コンパートメント: 新しいログを作成するコンパートメント。デフォルトでは、現在のコンパートメントです。
      • ログ・グループ: 新しいログを作成するログ・グループ。既存のログ・グループを選択するか、次を選択します:
        • デフォルト・ログ・グループの自動作成。デフォルト・ログ・グループがない場合にデフォルト名(DEFAULT_GROUP)を使用して作成します。
        • 新規ログ・グループの作成。指定する名前と説明を使用して新しいログ・グループを作成します。
      • ログ名: 新しいログの名前。デフォルトでは、<application-name>_invokeです。
      • ログの保持: ログ・データを保持する時間。
    2. 「ログの有効化」をクリックして、新しいログ(および指定した場合は新しいログ・グループ)を作成します。

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

  6. 既存のファンクション・ログを有効にするには、「リソース」で、「ログ」をクリックし、「アクション」メニュー(アクション・メニュー)「ログの有効化」の順にクリックします。
  7. 既存のファンクション・ログのデータを表示するには、「リソース」で、「ログ」をクリックし、表示したいログを含むログ・グループの名前を「ログ・グループ」列でクリックします。

    ログ・グループの「ログ詳細」ページが開きます。ログ・データを表示したり、ログ・データを時間に基づいてソートおよびフィルタできます。

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

ヒント

ログ・データの検索時に、data.opcRequestIdフィールドを使用して、リクエストIDでログをフィルタできます。APIゲートウェイのAPIデプロイメントがOCIファンクション・バック・エンドで関数を呼び出した場合、次のように、同じdata.opcRequestIdフィールドをワイルドカードとともに使用して、APIゲートウェイリクエストとOCIファンクションリクエストの両方に関連するログを表示できます。

  1. 「ロギング検索」ページで、ログ・イベントの横にある下矢印をクリックして、そのイベントのログ・データを表示します。
  2. 関数ログの"data.opcRequestId"フィールドをクリックし、ポップアップ・メニューから「フィルタ一致」を選択します。

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

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

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

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

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

ヒント

時々、Fn Project CLIの新しいバージョンがリリースされます。最新バージョンがインストールされていることを定期的に確認することをお勧めします。詳細は、Fn ProjectのCLIをアップグレードするステップを参照してください。

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

または、Fn ProjectのCLIを使用してsyslog URLを指定することで、Papertrailなどの外部ロギング宛先にファンクション・ログを送信できます。外部ロギング宛先を使用するには、パブリック・サブネットおよびインターネット・ゲートウェイを使用してVCNを設定している必要があります(OCI関数で使用する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>"]'のフォーマットにします)。パブリック・サブネットは、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 ''

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

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

  • 「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を使用して変更する必要があります。