Stockage et consultation des journaux de fonction

Découvrez comment stocker et voir les journaux de fonction avec le service des fonctions pour OCI.

Lorsqu'une fonction est appelée, vous voulez généralement accéder aux journaux de la fonction à des fins de dépannage. Le service de journalisation pour Oracle Cloud Infrastructure est l'option par défaut recommandée pour l'accès, la recherche et le stockage des journaux de fonction. Si vous activez Oracle Cloud Infrastructure Logging pour une application, des journaux d'appel par défaut sont créés chaque fois que des fonctions de l'application sont appelées. Voir Utilisation de la console pour activer et consulter les journaux de fonction dans le service de journalisation pour Oracle Cloud Infrastructure. Pour plus d'informations sur le contenu des journaux de fonction, voir Informations détaillées sur les fonctions.

Dans certains cas, vous pouvez vouloir envoyer des journaux de fonction vers une destination de journalisation externe telle que Papertrail. Pour envoyer des journaux de fonction vers une destination de journalisation externe plutôt que vers le service de journalisation pour Oracle Cloud Infrastructure, utilisez l'interface de ligne de commande Fn Project pour spécifier une URL syslog. Voir Utilisation des commandes de l'interface de ligne de commande Fn Project pour spécifier une URL syslog.

Notez que pour stocker et consulter les journaux d'une fonction (autres que les journaux d'appel par défaut stockés dans le service Oracle Cloud Infrastructure Logging), la fonction doit inclure des énoncés d'impression. Par exemple :
  • Pour Node.js : console.log('Entering Hello Node.js function');
  • Pour Java : System.err.println("Entering Java Hello World Function");
  • Pour Go : fmt.Println("Entering Hello Go function")

Utilisation de la console pour activer et consulter les journaux de fonction dans le service de journalisation pour Oracle Cloud Infrastructure

Pour activer et consulter les journaux de fonction dans le service de journalisation pour Oracle Cloud Infrastructure :

  1. Dans la page de liste Applications, sélectionnez l'application avec les fonctions pour lesquelles vous voulez créer, activer et consulter les journaux. Si vous avez besoin d'aide pour trouver la page de liste ou l'application, voir Liste des applications.
  2. Sélectionnez l'onglet Surveillance et allez à la section Journaux.
  3. Pour créer et activer un nouveau journal de fonction dans le service de journalisation pour Oracle Cloud Infrastructure :
    1. Dans le menu Actions (trois points) de la catégorie Journaux d'appel de fonction, sélectionnez Activer le journal et spécifiez :
      • Compartiment : Compartiment dans lequel créer le nouveau journal. Par défaut, le compartiment courant.
      • Groupe de journaux : Groupe de journaux dans lequel créer le nouveau journal. Sélectionnez un groupe de journaux existant ou sélectionnez Créer un nouveau groupe pour créer un nouveau groupe de journaux avec un nom et une description que vous fournissez.
      • Nom du journal : Nom du nouveau journal. Par défaut, <nom d'application>_invoke.
      • Conservation des journaux : Durée de conservation des données de journaux.
      • Marqueurs : Si vous êtes autorisé à créer une ressource, vous disposez également des autorisations nécessaires pour appliquer des marqueurs à structure libre à cette ressource. Pour appliquer un marqueur défini, vous devez être autorisé à utiliser l'espace de noms de marqueur. Pour plus d'informations sur le marquage, voir Marqueurs de ressource. Si vous ne savez pas si vous devez appliquer des marqueurs, ignorez cette option ou demandez à un administrateur. Vous pouvez appliquer des marqueurs plus tard.
    2. Sélectionnez Activer le journal pour créer le nouveau journal (et le nouveau groupe de journaux, si vous l'avez spécifié).
  4. Pour activer un journal de fonctions existant actuellement inactif, dans le menu Actions (trois points) de la catégorie Journaux d'appel de fonction, sélectionnez Activer le journal.
  5. Pour voir les données d'un journal de fonctions existant, sélectionnez le nom du groupe de journaux contenant le journal à afficher dans la colonne Groupe de journaux.

    Le journal s'ouvre dans la page Détails du journal du groupe de journaux, ce qui vous permet de voir les données de journal et de trier et de filtrer les données de journal par heure.

  6. Sélectionnez la flèche vers le bas à côté d'un événement de journal pour voir les données de journal pour cet événement.
  7. Sélectionnez Explorer avec la recherche dans les journaux pour rechercher des données dans les journaux.

Conseil

Lors de la recherche de données de journal, vous pouvez utiliser le champ data.opcRequestId pour filtrer les journaux par ID demande. Si un déploiement d'API dans le service de passerelle d'API appelle une fonction sur un élément dorsal du service des fonctions pour OCI, vous pouvez voir les journaux relatifs à la demande du service de passerelle d'API et à la demande du service des fonctions pour OCI en utilisant le même champ data.opcRequestId avec un caractère générique, comme suit :

  1. Dans la page Recherche de journalisation, sélectionnez la flèche vers le bas située à côté d'un événement de journal pour voir les données de journal pour cet événement.
  2. Sélectionnez le champ "data.opcRequestId" dans le journal des fonctions et sélectionnez Correspondance de filtre dans le menu contextuel.

    Par exemple, supposons que le journal des fonctions contient le champ "data.opcRequestId": "/01FJA5VCVM0000000000025M1Z/01FJA5VCVM0000000000025M20". Le champ "data.opcRequestId": "/01FJA5VCVM0000000000025M1Z/01FJA5VCVM0000000000025M20" est copié dans la page Recherche de journaux (mode de base) en tant que filtre.

  3. Dans la page Recherche de journaux (mode de base), sélectionnez Afficher le mode avancé et remplacez la seconde moitié de la valeur de champ "data.opcRequestId" affichée dans le champ Interrogation par le caractère générique * (astérisque).

    Par exemple, pour lire data.opcRequestId: '/01FJA5VCVM0000000000025M1Z/*'

    Cette image présente une partie de la page Recherche de journaux (mode avancé), avec un caractère générique comme deuxième moitié du champ "data.opcRequestId".
  4. Sélectionner une recherche.

Utilisation des commandes de l'interface de ligne de commande Fn Project pour spécifier une URL syslog

Conseil

De nouvelles versions de l'interface de ligne de commande Fn Project sont parfois disponibles. Nous vous recommandons de vérifier régulièrement que la dernière version est installée. Pour plus d'informations, voir Étapes de mise à niveau de l'interface de ligne de commande Fn Project.

Le service de journalisation pour Oracle Cloud Infrastructure est l'option par défaut recommandée pour l'accès, la recherche et le stockage des journaux de fonction.

Vous pouvez également envoyer des journaux de fonction à une destination de journalisation externe comme Papertrail en utilisant l'interface de ligne de commande Fn Project pour spécifier une URL syslog. Notez que pour utiliser une destination de journalisation externe, vous devez avoir configuré un VCN avec des sous-réseaux publics et une passerelle Internet (voir Création du VCN et des sous-réseaux à utiliser avec le service des fonctions pour OCI, s'ils n'existent pas déjà).

Pour envoyer des journaux de fonction à une destination de journalisation externe en définissant l'URL syslog :

  1. Connectez-vous à votre environnement de développement en tant que développeur de fonctions.
  2. Pour créer une nouvelle application et spécifier que toutes les fonctions de l'application doivent envoyer leurs journaux à une destination de journalisation externe, entrez :

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

    où :

    • <app-name> est le nom de la nouvelle application. Évitez d'entrer des informations confidentielles.
    • <logging-service-url> est l'URL syslog à laquelle envoyer des journaux.
    • <subnet-ocid> est l'OCID du sous-réseau public (ou des sous-réseaux, six au maximum) dans lesquels exécuter les fonctions. Si un sous-réseau régional a été défini, la meilleure pratique consiste à sélectionner ce sous-réseau pour effectuer un basculement sur tous les domaines de disponibilité, ce qui est plus simple à mettre en oeuvre. Si aucun sous-réseau régional n'a été défini et que vous devez respecter les exigences de haute disponibilité, sélectionnez plusieurs sous-réseaux (encadrez chaque OCID par des guillemets doubles, séparé par des virgules, dans le format '["<subnet-ocid>","<subnet-ocid>"]'. Nous recommandons que les sous-réseaux publics se trouvent dans la même région que le registre Docker spécifié dans le contexte d'interface de ligne de commande Fn Project (voir Création d'un contexte d'interface de ligne de commande Fn Project pour se connecter à Oracle Cloud Infrastructure).

    Par exemple :

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

    Notez que si vous configurez ensuite le service de journalisation pour Oracle Cloud Infrastructure afin de stocker les journaux, les détails de l'URL syslog existante sont conservés. Donc, si vous décidez plus tard de reprendre l'envoi des journaux de fonction vers la destination de journalisation externe, il suffit de désactiver le service de journalisation pour Oracle Cloud Infrastructure et les journaux sont de nouveau envoyés à l'URL syslog.

  3. Pour mettre à jour une application existante et spécifier que toutes les fonctions de l'application doivent envoyer leurs journaux à une destination de journalisation externe, entrez :

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

    où :

    • <app-name> est le nom de l'application à mettre à jour.
    • <logging-service-url> est l'URL syslog à laquelle envoyer des journaux.

    Par exemple :

    fn update app acmeapp --syslog-url tcp://my.papertrail.com:4242
  4. Pour mettre à jour une application existante et supprimer la destination de journalisation externe spécifiée pour l'URL syslog, entrez :

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

    où :

    • <app-name> est le nom de l'application à mettre à jour.

    Par exemple :

    fn update app acmeapp --syslog-url ''

Options de journalisation précédemment prises en charge

Dans les versions antérieures du service des fonctions pour OCI (avant la version du service Oracle Cloud Infrastructure Logging), vous pouvez spécifier où le service des fonctions pour OCI stocke les journaux d'une fonction en configurant une 'politique de journalisation' pour l'application contenant la fonction. Auparavant, vous pouviez utiliser la console pour configurer une politique de journalisation pour :

  • Stocker des journaux en tant qu'objets dans un seau de stockage dans le service Stockage d'objets pour Oracle Cloud Infrastructure en sélectionnant l'option Journalisation OCI.

    Pour que vous puissiez consulter les journaux de fonction enregistrés dans un seau de stockage, le groupe auquel vous appartenez doit être autorisé à accéder aux énoncés de politique d'identité suivants :

  • Stocker des journaux en les envoyant à une destination de journalisation externe comme Papertrail en sélectionnant l'option URL Syslog.

Pour une application existante où vous avez déjà configuré une politique de journalisation, la fonctionnalité ci-dessus est toujours prise en charge et la politique de journalisation existante est appliquée. Toutefois, notez ce qui suit :

  • Vous ne pouvez pas utiliser la console pour configurer une nouvelle politique de journalisation ou modifier une politique de journalisation existante.
  • Si la politique de journalisation existante spécifiait le stockage des journaux de fonction en tant qu'objets dans un seau de stockage dans le service Stockage d'objets pour Oracle Cloud Infrastructure :
    • La possibilité de stocker les journaux dans le service Stockage d'objets sera obsolète dans une version future.
    • Nous vous recommandons de passer au stockage des journaux à l'aide d'Oracle Cloud Infrastructure Logging.
    • Une fois que vous aurez adopté le service de journalisation pour Oracle Cloud Infrastructure pour stocker les journaux, vous ne pourrez pas revenir au stockage des journaux dans le service Stockage d'objets.
    • Les journaux stockés dans le service Stockage d'objets continueront d'exister (chaque nom de journal incluant l'OCID de la fonction associée, comme précédemment).
  • Si la politique de journalisation existante indiquait une URL syslog :
    • Si vous passez à l'utilisation du service de journalisation pour Oracle Cloud Infrastructure pour stocker les journaux, les détails de l'URL syslog existante sont conservés. Donc, si vous décidez plus tard de reprendre l'envoi des journaux de fonction vers la destination de journalisation externe, il suffit de désactiver le service de journalisation pour Oracle Cloud Infrastructure et les journaux sont de nouveau envoyés à l'URL syslog.
    • Pour modifier l'URL syslog dans la politique de journalisation existante, vous devez utiliser l'interface de ligne de commande Fn Project.