Configurer la collecte de journaux d'API REST

Oracle Log Analytics vous permet de configurer une collecte continue des journaux basée sur une API REST à partir des URL de point d'extrémité qui répondent avec des messages de journal. La source de journaux de l'API REST doit être configurée avec une API qui répond avec les messages de journal générés dans la période spécifiée dans la demande.

Il s'agit d'une méthode recommandée lorsque vous souhaitez automatiser la collecte continue des journaux à partir d'environnements, de plates-formes ou d'applications telles que les services OCI, Fusion Apps, les applications ERP ou toute autre application émettant des journaux au moyen d'une API. Des macros peuvent être utilisées dans la définition de source pour spécifier une heure de journal à partir de laquelle démarrer la collecte de journaux, fournir un décalage pour itérer et collecter des données sur les résultats de page d'un point d'extrémité de journal et collecter des journaux sur une fenêtre de collecte ou une période.

Vous pouvez également utiliser une source d'API REST pour collecter des journaux à partir des API SOAP au moyen de HTTP ou HTTPS. Pour les API SOAP, configurez les points d'extrémité POST avec des données utiles XML SOAP, utilisez application/xml ou le type de contenu requis par l'API, et utilisez l'analyseur XML ou les paramètres du sous-analyseur pour extraire les enregistrements de journal de la réponse SOAP.

Flux global pour la collecte des journaux à l'aide d'une source basée sur une API REST

Voici les tâches de haut niveau pour la collecte des informations de journal au moyen d'une source basée sur une API REST :

Pour le flux de bout en bout d'ingestion des journaux de vérification Fusion Applications, voir Ingérer les journaux de vérification Fusion Applications.

Note

Les aspects suivants doivent être pris en compte pour la collection d'API SOAP :

  • Le contenu au format PDF ou PDF compressé n'est pas pris en charge.
  • L'extraction et le réassemblage de rapports fragmentés ne sont pas pris en charge.
  • Le traitement de l'espace de noms XML peut nécessiter l'utilisation de l'option ignorer l'espace de noms de l'analyseur ou d'un XPath non sensible à l'espace de noms, selon la réponse SOAP.

Créer une source d'API REST

Oracle Log Analytics fournit déjà une source de journaux définie par Oracle pour la collecte des journaux de l'API REST. Vérifiez si vous pouvez utiliser la source d'API REST définie par Oracle disponible ou tout analyseur défini par Oracle. Si ce n'est pas le cas, procédez comme suit pour créer une source de journaux :

Avant de commencer, si vous devez créer un nouvel analyseur adapté à vos journaux, terminez-le. Voir Créer un analyseur.

  1. Ouvrez le menu de navigation et cliquez sur Observabilité et gestion. Sous Log Analytics, cliquez sur Administration.

    Les ressources d'administration sont répertoriées dans le volet de navigation de gauche sous Administration. Cliquez sur Sources.

  2. La page Sources s'ouvre. Cliquez sur Créer une source.

    La boîte de dialogue Créer une source s'affiche.

  3. Dans le champ Nom, entrez le nom de la source de journaux.

  4. Dans la liste Type de source, sélectionnez API REST.

  5. Cliquez sur Type d'entité et sélectionnez le type qui identifie le mieux votre application.

  6. Cliquez sur Analyseur et sélectionnez un analyseur approprié pour le type de journaux à collecter.

  7. Dans l'onglet Points d'extrémité, ajoutez des points d'extrémité dans l'ordre dans lequel ils doivent être exécutés. Cliquez sur Ajouter un point d'extrémité de journal pour ajouter un point d'extrémité Journal ou un point d'extrémité Initialisation. Cliquez sur Ajouter un point d'extrémité de liste pour plusieurs journaux pour obtenir plusieurs journaux lorsqu'un point d'extrémité retourne une liste d'éléments et qu'un point d'extrémité enfant Journal doit collecter des détails pour chaque élément.

    Utilisez l'initialisation pour configurer des appels tels que la connexion, l'extraction de jeton de session ou la création de conteneur. Les réponses de point d'extrémité d'initialisation peuvent être référencées par des points d'extrémité ultérieurs, mais ne sont pas collectées en tant qu'enregistrements de journal. Placez les points d'extrémité d'initialisation avant les points d'extrémité qui utilisent leurs valeurs de réponse. Les témoins HTTP sont transmis aux points d'extrémité suivants.

    • Pour fournir un point d'extrémité unique, cliquez sur Ajouter un point d'extrémité de journal. La boîte de dialogue Add log endpoint s'ouvre.

      Entrez les informations suivantes :

      1. Sélectionnez le type de point d'extrémité de journal :

        • Sélectionnez Journal lorsque la réponse du point d'extrémité contient les enregistrements de journal à collecter.
        • Sélectionnez Initialisation lorsque le point d'extrémité extrait des valeurs, telles qu'un jeton de session, pour des points d'extrémité ultérieurs. Les témoins HTTP sont transmis aux points d'extrémité suivants.
          Note

          Assurez-vous d'enregistrer les valeurs extraites, telles que le jeton de session, pour pouvoir les utiliser lors de l'exécution d'autres points d'extrémité dans le flux de travail.
      2. Entrez le nom du point d'extrémité du journal.

      3. Construisez l'URL du journal pour collecter les journaux périodiquement. Voir URL du point d'extrémité du journal dans Types de point d'extrémité.

      4. Sélectionnez la méthode d'API GET ou POST.

        Si vous avez sélectionné POST, entrez les données utiles POST et spécifiez le type de contenu de demande requis par l'API à partir de application/json, text/plain, text/javascript, text/html ou application/xml. Pour les API SOAP, entrez l'enveloppe SOAP dans les données utiles POST et utilisez un type de contenu application/xml, tel que requis par le point d'extrémité. Pour utiliser les macros USERNAME/PASSWORD dans vos données utiles POST, voir Macros USERNAME et PASSWORD.

      5. Facultativement, spécifiez l'URL du serveur mandataire de journal.

      6. Facultativement, cliquez sur Afficher les en-têtes de demande pour développer la section, puis cliquez sur Ajouter pour fournir les en-têtes de demande sous la forme de paires Nom-Valeur.

      7. Facultativement, cliquez sur Afficher les paramètres d'interrogation pour développer la section, puis cliquez sur Ajouter pour fournir des paramètres d'interrogation sous la forme de paires Nom-Valeur.

      8. Dans la section Données d'identification, sélectionnez le type de données d'identification de journal. Voir Sélectionner le type de données d'identification pour la collecte de journaux d'API REST.

        Si les données utiles POST contiennent USERNAME ou PASSWORD, spécifiez le nom des données d'identification pour les macros USERNAME/PASSWORD dans la section Données d'identification. L'agent de gestion remplace ces macros par les valeurs des données d'identification sélectionnées au moment de la collecte.

      9. Pour valider les informations de configuration que vous avez entrées, cliquez sur Valider. S'il y a des erreurs, corrigez-les.

        Cliquez sur Enregistrer les modifications.

    • Pour fournir un point d'extrémité qui retourne une réponse JSON ou XML avec les informations utilisées pour générer plusieurs demandes de point d'extrémité de journal, cliquez sur Ajouter un point d'extrémité de liste pour plusieurs journaux. La boîte de dialogue Ajouter un point d'extrémité de liste pour plusieurs journaux s'ouvre.

      1. Onglet Configurer un point d'extrémité de liste :

        • Entrez le nom du point d'extrémité de liste de journaux.

        • Construisez l'URL de la liste de journaux pour obtenir les informations sur les fichiers journaux. Voir URL du point d'extrémité de la liste de journaux dans Types de point d'extrémité. Par exemple :

          https://example.org/fetchlogfiles_data
        • Facultativement, spécifiez l'URL du serveur mandataire de journal.

        • Sélectionnez la méthode d'API GET ou POST.

          Si vous avez sélectionné POST, entrez les données utiles POST et spécifiez le type de contenu de demande requis par l'API à partir de application/json, text/plain, text/javascript, text/html ou application/xml. Pour les API SOAP, entrez l'enveloppe SOAP dans les données utiles POST et utilisez un type de contenu application/xml, tel que requis par le point d'extrémité. Pour utiliser les macros USERNAME/PASSWORD dans vos données utiles POST, voir Macros USERNAME et PASSWORD.

          L'exemple de données utiles XML suivant montre l'utilisation du jeton de session extrait du point d'extrémité d'initialisation :

          <sessionToken>{getSessionToken:/Envelope/Body/loginResponse/loginResult}</sessionToken>
        • Facultativement, cliquez sur Afficher les en-têtes de demande pour développer la section, puis cliquez sur Ajouter pour fournir les en-têtes de demande sous la forme de paires Nom-Valeur.

        • Facultativement, cliquez sur Afficher les paramètres d'interrogation pour développer la section, puis cliquez sur Ajouter pour fournir des paramètres d'interrogation sous la forme de paires Nom-Valeur.

        • Dans la section Données d'identification, sélectionnez le type de données d'identification de journal. Voir Sélectionner le type de données d'identification pour la collecte de journaux d'API REST.

          Si les données utiles POST contiennent {USERNAME} ou {PASSWORD}, spécifiez le nom des données d'identification pour les macros USERNAME/PASSWORD dans la section Données d'identification. L'agent de gestion remplace ces macros par les valeurs des données d'identification sélectionnées au moment de la collecte.

        • Cliquez sur Suivant.

      2. Onglet Configurer un point d'extrémité de journal :

        • Indiquez l'exemple de réponse du point d'extrémité de liste de journaux. Pour les réponses JSON, utilisez des variables JSONPath. Pour les réponses XML ou SOAP, utilisez des variables XPath.

          Il s'agit de l'exemple JSON de la réponse que vous obtiendriez pour le point d'extrémité de liste de journaux que vous avez fourni dans l'onglet précédent. Par exemple :

          { "totalSize": 4, "records": [ {"id": "firstId", "type": "firstType"}, {"id": "secondId", "type": "secondType"} ] }

          Dans l'exemple ci-dessus, le chemin JSON records[*].id peut être utilisé dans l'URL du point d'extrémité. Pour plus de détails sur les variables de chemin JSON, voir Variables pour la collecte de journaux d'API REST.

          Voici un exemple XML pour SOAP :

          <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://example.oracle.com/">
            <soapenv:Body>
              <ns:getItemsResponse>
                <ns:getItemsResult>
                  <ns:string>Widget</ns:string>
                  <ns:string>Gadget</ns:string>
                </ns:getItemsResult>
              </ns:getItemsResponse>
            </soapenv:Body>
          </soapenv:Envelope>

          Exemple de variable XPath :

          {getItems_ListEndpoint:/Envelope/Body/getItemsResponse/getItemsResult/string}
        • Entrez le nom du point d'extrémité du journal.

        • Construisez l'URL du journal, les en-têtes de demande, les paramètres de formulaire ou les données utiles POST en intégrant des variables de la réponse du point d'extrémité de liste. Utilisez JSONPath pour les réponses JSON et XPath pour les réponses XML ou SOAP. Voir URL du point d'extrémité du journal dans Types de point d'extrémité. Par exemple :

          https://example.org/fetchLogs?time={START_TIME}&id={testLogListEP:$.records[*].id}
        • Sélectionnez la méthode d'API GET ou POST.

          Si vous avez sélectionné POST, entrez les données utiles POST et spécifiez le type de contenu de demande requis par l'API à partir de application/json, text/plain, text/javascript, text/html ou application/xml. Pour les API SOAP, entrez l'enveloppe SOAP dans les données utiles POST et utilisez un type de contenu application/xml, tel que requis par le point d'extrémité.

          Ces données utiles de point d'extrémité de journal peuvent référencer à la fois les valeurs de point d'extrémité d'initialisation antérieures et l'élément courant à partir du point d'extrémité de liste.

          Exemple de données utiles XML pour l'appel POST qui référence le jeton de session et le point d'extrémité de liste :

          <ns:getItemDetail>
            <ns:sessionToken>{getSessionToken:/Envelope/Body/loginResponse/loginResult}</ns:sessionToken>
            <ns:itemName>{getItems_ListEndpoint:/Envelope/Body/getItemsResponse/getItemsResult/string}</ns:itemName>
          </ns:getItemDetail>
        • Facultativement, spécifiez l'URL du serveur mandataire de journal.

        • Facultativement, cliquez sur Afficher les en-têtes de demande pour développer la section, puis cliquez sur Ajouter pour fournir les en-têtes de demande sous la forme de paires Nom-Valeur.

        • Facultativement, cliquez sur Afficher les paramètres d'interrogation pour développer la section, puis cliquez sur Ajouter pour fournir des paramètres d'interrogation sous la forme de paires Nom-Valeur.

        • Dans la section Données d'identification, sélectionnez le type de données d'identification de journal. Voir Sélectionner le type de données d'identification pour la collecte de journaux d'API REST.

        • Cliquez sur Suivant.

      3. Onglet Vérifier et ajouter : Les informations de configuration fournies dans les onglets précédents sont validées. Vérifiez la liste des URL à partir desquelles les journaux seront collectés.

        S'il y a des erreurs, corrigez-les.

        Vérifiez que les points d'extrémité Initialisation apparaissent avant les points d'extrémité qui les référencent et que chaque point d'extrémité Liste de journaux a un point d'extrémité Journal enfant qui collecte les enregistrements.

        Cliquez sur Enregistrer.

  8. Cliquez sur Créer une source.

Types de point d'extrémité

Point d'extrémité de liste de journaux : Lorsque vous cliquez sur Ajouter un point d'extrémité de liste pour plusieurs journaux lors de la création de la source de journaux de l'API REST, vous pouvez spécifier le point d'extrémité de liste de journaux qui retourne une liste d'éléments. Le point d'extrémité de liste de journaux doit retourner une réponse JSON ou XML, avec JSONPath pour JSON et XPath pour XML. JSONPath ou XPath peut être utilisé pour construire une liste d'URL de point d'extrémité de journal pour collecter les journaux. Spécifiez les variables requises pour créer la liste des points d'extrémité de journal à partir de la réponse. En outre, vous pouvez utiliser les macros {START_TIME} et {CURR_TIME} pour insérer dynamiquement les valeurs de temps correspondantes dans l'URL.

Point d'extrémité de journal : Lorsque vous cliquez sur Ajouter un point d'extrémité de journal lors de la création de la source de journaux de l'API REST, vous pouvez ajouter l'un des deux types de point d'extrémité de journal. Le type de point d'extrémité de journal peut être l'un de ces deux types : Initialisation et Journal. Le point d'extrémité d'initialisation extrait des valeurs, telles qu'un jeton de session, pour les points d'extrémité ultérieurs. Le point d'extrémité d'initialisation n'extrait pas les enregistrements de journal. Les éléments de sa réponse peuvent être utilisés dans les points d'extrémité suivants. Le point d'extrémité Journal est utilisé pour collecter des journaux à partir d'un point d'extrémité d'API REST spécifique à intervalles réguliers. Vous pouvez utiliser les macros {START_TIME}, {CURR_TIME} et {TIME_WINDOW} pour insérer dynamiquement les valeurs de temps correspondantes dans l'URL. La macro {OFFSET} peut être utilisée pour prendre en charge la pagination. Vous pouvez également utiliser des variables de chemin JSON à partir de la réponse de l'appel de point d'extrémité de liste de journaux pour remplacer des propriétés spécifiques.

  • {START_TIME} : Pour spécifier l'heure à partir de laquelle les journaux doivent être collectés
  • {OFFSET} : Pour gérer la collecte de journaux paginée
  • {CURR_TIME} : Pour indiquer l'heure courante
  • {TIME_WINDOW} : Pour spécifier un intervalle ou une durée de collecte
  • {USERNAME} et {PASSWORD} : Pour les API SOAP qui requièrent des valeurs de nom d'utilisateur et de mot de passe dans les données utiles POST. L'agent OMA remplace les macros par les valeurs des données d'identification configurées au moment de la collecte.

Pour plus d'informations sur l'utilisation des macros, voir START_TIME Macro, CURR_TIME Macro, OFFSET Macro et TIME_WINDOW Macro.

Pour plus d'informations sur l'utilisation des variables de la réponse du point d'extrémité de la liste des journaux qui peuvent être spécifiées dans l'URL du point d'extrémité du journal, des exemples de JSONPath et XPath et l'utilisation de filtres de variable, voir Variables pour la collecte de journaux d'API REST.

Macro START_TIME

Utilisez la macro START_TIME pour spécifier l'heure à partir de laquelle les journaux doivent être collectés.START_TIME La macro peut être utilisée dans une URL de point d'extrémité, des paramètres de formulaire ou des données utiles POST.

L'exemple suivant montre l'URL du point d'extrémité qui collecte les journaux supérieurs à un horodatage spécifié par la macro START_TIME :

https://example.org/fetchLogs?sortBy=timestamp&sortOrder=ascending&filter=timestamp+gt+{START_TIME:yyyy-MM-dd'T'HH:mm:ss.SSSZ}

Syntaxe :

{START_TIME<+nX>:<epoch | timestamp format supported by SimpleDateFormat java class>.TZ=<timezone name>}
  • n est la valeur d'heure de l'intervalle de dates. X est exprimé en jours (D), heures (h), minutes (m), mois (M), année (Y).

  • +nX est le nombre de jours, d'heures, de minutes, de mois ou d'années à ajouter à l'heure de début. C'est facultatif. Par exemple, +3D.

  • Les formats d'heure pris en charge sont les mêmes que ceux de la classe java SimpleDateFormat. Le format d'heure par défaut est yyyy-MM-dd'T'HH:mm:ss.SSSZ. Par exemple, 2001-07-04T12 :08 :56.235-0700.

    La spécification du format epoch ou de l'heure est facultative. Si epoch est fourni, la macro est remplacée par une valeur milliseconde epoch.

    Pour les formats d'horodatage pris en charge par SimpleDateFormat, voir Plate-forme Java Standard, éd. 8 : Classe SimpleDateFormat.

  • TZ sert à indiquer le fuseau horaire de l'horodatage. Il n'est pas applicable si l'époque est déjà fournie. Le format pris en charge est le même que les ID à 3 lettres de la classe java TimeZone, par exemple UTC.

  • Vous pouvez inclure plusieurs instances de cette macro dans l'URL.

  • Exemples :

    1. {START_TIME:yyyy-MM-dd'T'HH:mm:ss.SSS.TZ=UTC}
    2. {START_TIME:epoch}

La valeur de la macro START_TIME est déterminée de l'une des façons suivantes :

  • Lorsque la collecte commence pour la première fois pour un point d'extrémité, START_TIME est la date historique basée sur la propriété de collecte d'agent Données historiques. La valeur par défaut de cette propriété est 30 days, c'est-à-dire que la valeur de l'horodatage est 30 jours avant l'horodatage courant.

  • Si le champ Heure est défini dans l'analyseur, dans les collectes de journaux suivantes, la valeur de START_TIME est la valeur maximale de la valeur d'horodatage extraite dans la collecte de journaux précédente.

  • Si le champ Heure n'est pas extrait des enregistrements de journal en le définissant dans l'analyseur, l'horodatage courant est la valeur de START_TIME.

Si l'API comporte des filtres, utilisez greater than equal to au lieu de greater than pour vous assurer que tous les enregistrements de journal ayant le même horodatage sont chargés.

Macro CURR_TIME

Utilisez la macro CURR_TIME pour insérer l'heure courante dans l'URL du point d'extrémité de l'API REST, les paramètres de formulaire et les données utiles POST.

L'exemple suivant montre l'URL du point d'extrémité qui utilise la macro CURR_TIME dans le paramètre d'interrogation :

https://example.org/fetchLogs?sortBy=timestamp&sortOrder=ascending&time={CURR_TIME:yyyy-MM-dd'T'HH:mm:ss.SSSZ}
  • Le format d'utilisation de la macro est le même que celui de la macro START_TIME.

  • Vous pouvez inclure plusieurs instances de cette macro dans l'URL.

Macro OFFSET

Utilisez la macro OFFSET pour les points d'extrémité qui fournissent des réponses paginées ou pour gérer le comportement de décalage dans une réponse d'API. La macro OFFSET peut être utilisée dans l'URL du point d'extrémité de l'API REST, les paramètres de formulaire et les données utiles POST pour extraire plusieurs pages ou fragments dans un seul cycle de collecte de journaux.

Format : {OFFSET(<start value>, <increment>)}

  • La macro OFFSET est utilisée pour appeler et collecter des données de manière itérative sur des résultats paginés d'un point d'extrémité de journal spécifique afin d'obtenir tous les enregistrements disponibles. L'appel de demande d'API REST initial commence par la valeur de début et est incrémenté à chaque appel suivant de la valeur incrément. Ces appels récursifs basés sur un index sont arrêtés lorsqu'aucune autre entrée de journal n'est trouvée. Le décalage n'est pas reporté au cycle de collecte suivant. Elle commence par la valeur par défaut ou initiale de chaque cycle de collecte.

  • Dans le format ci-dessus, la valeur de début est la valeur initiale de l'index et la valeur par défaut est 0. Il est facultatif de spécifier une valeur de début.

    Valeurs possibles : Nombre entier positif incluant 0

  • Dans le format ci-dessus, incrément spécifie la valeur à ajouter à la valeur de début lors des appels suivants. La valeur par défaut est 1. Il est facultatif de spécifier la valeur incrément.

    Valeurs possibles : Entier positif uniquement. Exclusions 0.

  • Vous ne pouvez inclure qu'une seule instance de cette macro dans l'URL.

Les exemples suivants montrent différentes façons d'utiliser la macro OFFSET :

  • {OFFSET}

    Utilise les valeurs par défaut start value (Valeur de début) = 0, incrément = 1.

  • {OFFSET(5)}

    valeur de début = 5, incrément = 1 (par défaut)

  • {OFFSET(5,2)}

    valeur de début = 5, incrément = 2

L'exemple suivant montre l'URL du point d'extrémité qui utilise la macro OFFSET :

https://example.org/fetchLogs?startIndex={OFFSET(0,1000)}&count=1000

Dans l'exemple ci-dessus, OFFSET(0,1000) indique que la valeur de début est égale à 0 lors du premier appel, puis lors des appels suivants, incrémentée de 1000. Par conséquent, lorsque la macro OFFSET est interprétée, l'URL du point d'extrémité pour plusieurs appels est la suivante :

Premier appel : https://example.org/fetchLogs?startIndex=0&count=1000

Deuxième appel : https://example.org/fetchLogs?startIndex=1000&count=1000

Macro TIME_WINDOW

Utilisez la macro TIME_WINDOW pour spécifier l'intervalle de collecte pendant lequel les journaux doivent être collectés. Il peut être utilisé dans l'URL du point d'extrémité de l'API REST pour extraire les journaux en quelques minutes, heures ou jours, quel que soit l'intervalle de collecte de l'agent. Par exemple, si la fenêtre de temps est 1d (un jour) et que l'intervalle de l'agent est de 10 minutes, la collecte de journaux suivante n'a lieu qu'après une journée.

L'exemple suivant définit l'intervalle de collecte de journaux pendant 6 heures en spécifiant TIME_WINDOW comme 6h dans l'URL du point d'extrémité :

https://example.org/fetchLogs?timewindow={TIME_WINDOW(6h)}

Format : {TIME_WINDOW(<number><timeunit>)}

Dans le format ci-dessus :

  • number : Numéro de chiffre supérieur à zéro.

  • unité de temps : h pour les heures, d pour les jours, m pour les minutes. La valeur par défaut est d (jours).

Assurez-vous que l'intervalle de collecte de l'agent est inférieur à la fenêtre de temps fournie. Vous ne pouvez utiliser la macro TIME_WINDOW qu'une seule fois dans le point d'extrémité.

Macros USERNAME et PASSWORD

Pour les API SOAP qui nécessitent des valeurs de nom d'utilisateur et de mot de passe dans les données utiles POST, entrez {USERNAME} et {PASSWORD} dans l'enveloppe XML SOAP. Lorsqu'une macro est présente, spécifiez le nom des données d'identification pour les macros USERNAME/PASSWORD dans la section Données d'identification du point d'extrémité. L'agent OMA remplace les macros par les valeurs des données d'identification configurées au moment de la collecte.

Ceci est distinct de l'authentification de base au niveau du point d'extrémité ou de l'authentification par jeton.

Note

Lorsque l'API SOAP nécessite un nom d'utilisateur et un mot de passe, vous devez inclure uniquement les macros {USERNAME} et {PASSWORD} dans les données utiles POST. Vous ne devez pas remplacer les macros par les valeurs réelles de nom d'utilisateur et de mot de passe. Les valeurs sont collectées à partir des données d'identification configurées.

Exemple de données utiles XML SOAP pour un appel POST comportant les macros ci-dessus :

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://example.oracle.com/">
  <soapenv:Header/>
  <soapenv:Body>
    <ns:login>
      <ns:username>{USERNAME}</ns:username>
      <ns:password>{PASSWORD}</ns:password>
    </ns:login>
  </soapenv:Body>
</soapenv:Envelope>

Variables pour la collecte de journaux de l'API REST

Utilisez des variables pour remplacer les valeurs d'une réponse de point d'extrémité précédente par une demande de point d'extrémité ultérieure lors de l'exécution. Les variables peuvent être utilisées dans l'URL, les paramètres de formulaire, les données utiles POST ou les valeurs d'en-tête de demande HTTP. Pour les réponses REST, utilisez des expressions JSONPath. Pour les réponses XML ou SOAP, utilisez des expressions XPath.

Si une demande de point d'extrémité dépend d'une valeur d'un point d'extrémité antérieur et que ce point d'extrémité antérieur échoue, le point d'extrémité dépendant n'est pas appelé et les messages de journal ne sont pas collectés à partir de ce point d'extrémité dépendant.

Format de la variable dans un point d'extrémité ultérieur :

{<endpoint_name>:<JSONPath or XPath expression>}

Pour les réponses JSON, utilisez des expressions JSONPath telles que $.records[*].id. Pour les réponses XML ou SOAP, utilisez des expressions XPath telles que /Envelope/Body/loginResponse/loginResult.

  • Dans le format ci-dessus, endpoint_name est le nom du point d'extrémité précédent dont la réponse fournit la valeur. Pour les flux SOAP, il peut s'agir d'un point d'extrémité d'initialisation, tel qu'un point d'extrémité de connexion, ou d'un point d'extrémité de liste de journaux.

    Pour les expressions JSONPath, le filtre (<filter_field_name>=<value>) est facultatif. Seul l'attribut correspondant à filter_field_name est extrait de la réponse JSON et utilisé dans le point d'extrémité ultérieur. Par exemple :

    https://www.example.com/log/{foo:$.items[*].links[*].href(rel='self')}

    Pour un exemple détaillé du filtre, voir Exemple de filtreJSONPath.

    Pour des exemples d'expressions XPATH, voir Exemples SOAP/XPATH.

  • Le contenu de réponse JSON et XML peut être utilisé pour extraire les valeurs de variable. Utilisez JSONPath pour les réponses JSON et XPath pour les réponses XML ou SOAP.

  • La même variable peut être spécifiée plusieurs fois.

  • Les variables peuvent faire référence à des points d'extrémité antérieurs qui sont des sources valides pour des valeurs de point d'extrémité ultérieures. Utilisez des points d'extrémité d'initialisation pour des valeurs de configuration telles que des jetons de session. Utilisez des points d'extrémité de liste de journaux pour les valeurs qui génèrent des demandes de point d'extrémité de journal enfants.

  • Les formats Chemin JSON suivants sont pris en charge : Simple JSONPath, Array JSONPath et Multiple-array JSONPath.

  • Pour les réponses SOAP avec des espaces de noms XML, utilisez le format XPath pris en charge par l'analyseur XML et le résolveur de variable de point d'extrémité. Si le résolveur d'analyseur ou de variable est configuré pour ignorer les espaces de noms, écrivez le chemin XPath sans préfixes d'espace de noms.

Chemin JSONPath simple

Si la réponse JSON comporte plusieurs niveaux d'éléments imbriqués, vous pouvez spécifier le chemin JSON en tant que notation spéciale des noeuds et leurs connexions aux noeuds enfants suivants.

Pour l'exemple suivant, utilisez le chemin JSON $.foo.abc pour obtenir result comme sortie :

{
    "foo" : 
    {
        "abc" : "result"
    }
}

Pour l'exemple suivant, utilisez le chemin JSON $.*.id pour obtenir la sortie ["id1", "id3"] ou $.*.* pour obtenir la sortie ["id1", "id2", "id3"] :

{
    "foo" : {
        "id" : "id1"
    },
    "foo2" : {
        "ID" : "id2",
        "id" : "id3"
    }
}

Pour l'exemple suivant, utilisez le chemin JSON $.foo.* pour obtenir la sortie ["id1", "value1"] :

{
    "foo" : {
        "id" : "id1",
        "abcd" : "value1"
    },
    "foo2" : {
        "id" : "id2"
    }
}

Tableau JSONPath

Si la réponse JSON comporte un tableau d'objets à partir duquel les données doivent être extraites, spécifiez le nom de l'objet de tableau et utilisez [] pour extraire les éléments appropriés dans cet objet de tableau. Par exemple, la réponse JSON suivante comporte deux tableaux d'objets records et item :

{
     "records": [
         {"id": "firstId", "type":"firstType"},
         {"id":"secondId", "type":"secondType"}
     ],
     "items": [
         {"name":"firstName", "field":"value"},
         {"name":"secondName", "field":"value"},
         {"name":"thirdName", "field":"value"}
     ]
}
  • Spécifiez le chemin JSON $.records[0].id pour extraire firstId en tant que sortie, $.records[1].id pour extraire secondId en tant que sortie ou $.records[*].id pour extraire id de tous les objets JSON. Dans le dernier cas, la sortie est une liste de chaînes ["firstId", "secondId"].

  • Vous pouvez également spécifier des conditions dans le chemin JSON à l'aide de (). Dans l'exemple ci-dessus, pour extraire id uniquement des records dont type est firstType, utilisez le chemin JSON $.records[*].id(type='firstType').

Chemin JSONPath à plusieurs tableaux

Prenons l'exemple suivant :

Pour l'URL du point d'extrémité de la liste de journaux getlist :

https://www.example.com/url_list

Réponse JSON au point d'extrémité de liste de journaux :

{
  "records": [ { "id": "firstId", "type": "firstType" }, { "id": "secondId", "type": "secondType" } ],
  "items": [ { "name": "firstName", "field": "value" }, { "name": "secondName", "field": "value" }, { "name": "thirdName", "field": "value" } ]
}

URL du point d'extrémité du journal (en référence aux variables de getlist) :

https://www.example.com/{getlist:$.records[*].id}/{getlist:$.items[*].name}

Avec les variables {getlist:$.records[*].id} et {getlist:$.items[*].name}, l'agent génère les points d'extrémité de journal ci-dessous avec toutes les combinaisons des deux champs de tableau ["firstId", "secondId"] et ["firstName", "secondName", "thirdName"] :

  • https://www.example.com/firstId/firstName

  • https://www.example.com/secondId/firstName

  • https://www.example.com/firstId/secondName

  • https://www.example.com/secondId/secondName

  • https://www.example.com/firstId/thirdName

  • https://www.example.com/secondId/thirdName

Exemple de filtre JSONPath

Tenez compte de la réponse JSON suivante à partir du point d'extrémité de liste de journaux foo :

{
    "items": [
        {
            "BusinessEventCode": "JournalBatchApproved",
            "CreationDate": "2019-07-27T17:19:19.261+00:00",
            "links": [
                {
                    "rel": "self",
                    "href": "/erpBusinessEvents/self/100100120766717"
                },
                {
                    "rel": "canonical",
                    "href": "/erpBusinessEvents/rel/100100120766717"
                }
            ]
        }
    ]
}

Considérons maintenant l'exemple de point d'extrémité de journal suivant :

https://www.example.com/log/{foo:$.items[*].links[*].href(rel='self')}

Dans l'exemple ci-dessus, le paramètre de chemin est remplacé par l'élément de tableau $.items[*].links[*].href à partir de la réponse JSON du point d'extrémité de liste de journaux foo et une condition supplémentaire est spécifiée pour sélectionner uniquement rel='self'.

Pour la réponse JSON ci-dessus, l'agent génère le point d'extrémité de journal suivant :

https://www.example.com/log/erpBusinessEvents/self/100100120766717

Exemples SOAP/XPath

Utilisez des expressions XPath lorsqu'un point d'extrémité antérieur renvoie un code XML ou SOAP XML.

  • Exemple de réponse au point d'extrémité d'initialisation :

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://example.oracle.com/">
      <soapenv:Body>
        <ns:loginResponse>
          <ns:loginResult>abc123</ns:loginResult>
        </ns:loginResponse>
      </soapenv:Body>
    </soapenv:Envelope>
  • Exemple de variable utilisée dans des données utiles POST de point d'extrémité ultérieures :

    <ns:sessionToken>{getSessionToken:/Envelope/Body/loginResponse/loginResult}</ns:sessionToken>
  • Exemple de réponse de point d'extrémité de liste de journaux :

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://example.oracle.com/">
      <soapenv:Body>
        <ns:getItemsResponse>
          <ns:getItemsResult>
            <ns:string>Widget</ns:string>
            <ns:string>Gadget</ns:string>
          </ns:getItemsResult>
        </ns:getItemsResponse>
      </soapenv:Body>
    </soapenv:Envelope>
  • Exemple de données utiles POST de point d'extrémité de journal enfant :

    <ns:getItemDetail>
      <ns:sessionToken>{getSessionToken:/Envelope/Body/loginResponse/loginResult}</ns:sessionToken>
      <ns:itemName>{getItems_ListEndpoint:/Envelope/Body/getItemsResponse/getItemsResult/string}</ns:itemName>
    </ns:getItemDetail>

Sélectionner le type de données d'identification pour la collecte de journaux de l'API REST

Pour autoriser une connexion entre l'agent et la source d'API REST, configurez d'abord les données d'identification d'API dans le magasin de données d'identification de l'agent. Après avoir configuré les données d'identification sources dans le service d'agent de gestion côté agent, vous pouvez utiliser ces informations lors de la création de la source de journaux de l'API REST.

Pour configurer les données d'identification sources dans le service d'agent de gestion afin de permettre à l'agent de gestion de collecter des données à partir de votre hôte émetteur de journaux, voir Données d'identification sources de l'agent de gestion.

Lors de l'ajout du point d'extrémité de journal ou du point d'extrémité de liste de journaux, fournissez les informations de données d'identification dans le flux de travail en sélectionnant le type de données d'identification de journal. Sélectionnez l'une des options suivantes :

  • Aucune
  • Authentification de base : Spécifiez le nom des données d'identification de journal des données d'identification que vous avez créées dans le service d'agent de gestion.
  • Jeton statique : Spécifiez le nom des données d'identification de journal des données d'identification que vous avez créées dans le service d'agent de gestion.
  • Jeton dynamique (OAuth 2.0) :

    Spécifiez le nom des données d'identification de jeton du jeton que vous avez créé dans le service d'agent de gestion. En outre, fournissez les informations sur le jeton, telles que Nom du point d'extrémité du jeton, URL du point d'extrémité du jeton, Type d'octroi et, facultativement, Portée.

    Si le mandataire de jeton est identique à celui du point d'extrémité de journal, laissez la case Mandataire identique au point d'extrémité de journal activée. Dans le cas contraire, désactivez la case à cocher et indiquez l'URL du serveur mandataire de jeton.

Mappage des types de données d'identification au type d'authentification :

Type d'authentification Type de données d'identification chez l'agent de gestion Propriétés des données d'identification
Autorisation de base HTTPSBasicAuthCreds HTTPSUserName, HTTPSPassword
HTTPSCreds HTTPSUserName, HTTPSPassword, propriétés du magasin de certificats SSL SSL
Jeton statique HTTPSTokenCreds HTTPSToken, HTTPSTokenType, propriétés du magasin de certificats SSL (facultatif)
Jeton dynamique HTTPSBasicAuthCreds HTTPSUserName, HTTPSPassword
HTTPSCreds HTTPSUserName, HTTPSPassword, propriétés du magasin de certificats SSL SSL

Les informations suivantes sont incluses dans les propriétés du magasin de certificats SSL :

  • "ssl_trustStoreType" : Type de magasin, par exemple JKS.

  • "ssl_trustStoreLocation" : le chemin du magasin de certificats SSL

  • "ssl_trustStorePassword" : mot de passe du magasin de certificats SSL (facultatif)

Notez les aspects suivants concernant les attributs dans le JSON des données d'identification :

  • source : La valeur doit être lacollector.la_rest_api

  • name : Tout nom approprié pour les données d'identification dans l'un des formats suivants.

    • <cred_name>.<entity_name> : Nom des données d'identification avec nom d'entité
    • <cred name> : Nom des données d'identification seulement

    L'agent recherche le nom dans le premier format. S'il est introuvable, il recherche le nom dans le deuxième format.

  • type : Il doit s'agir de l'une des valeurs spécifiées sous la colonne Type de données d'identification chez l'agent de gestion dans la table des types de données d'identification ci-dessus.

Voir Exemples de données d'identification JSON.

Exemples de données d'identification JSON

Exemple d'authentification de base avec nom d'utilisateur et mot de passe sur HTTPS avec hôte approuvé :

{
  "source":"lacollector.la_rest_api",
  "name":"ExampleRestAPICreds",
  "type":"HTTPSBasicAuthCreds",
  "description":"These are HTTPS (BasicAuth) credentials.",
  "properties":
  [
    { "name":"HTTPSUserName", "value":"CLEAR[admin]" },
    { "name":"HTTPSPassword", "value":"CLEAR[myHTTPSPassword]" }
  ]
}

Exemple d'authentification de base avec des certificats SSL, un nom d'utilisateur et un mot de passe sur HTTPS en fournissant explicitement des certificats :

{
  "source":"lacollector.la_rest_api",
  "name":"ExampleRestAPICreds",
  "type":"HTTPSCreds",
  "description":"These are HTTPS (BasicAuth) credentials.",
  "properties":
  [
    { "name":"HTTPSUserName", "value":"CLEAR[admin]" },
    { "name":"HTTPSPassword", "value":"CLEAR[myHTTPSPassword]" },
    { "name":"ssl_trustStoreType", "value":"JKS" },
    { "name":"ssl_trustStoreLocation", "value":"/scratch/certs/mycert.keystore" },
    { "name":"ssl_trustStorePassword", "value":"mySSLPassword" }
  ]
}

Exemple de jeton sur HTTPS avec un hôte approuvé :

{
  "source":"lacollector.la_rest_api",
  "name":"ExampleRestAPICreds",
  "type":"HTTPSTokenCreds",
  "description":"These are HTTPS (Token) credentials.",
  "properties":
  [
    { "name": "HTTPSToken", "value": "CLEAR[token value]" },
    {"name": "HTTPSTokenType", "value": "CLEAR[Bearer]" }
  ]
}

Exemple de jeton sur HTTPS avec des certificats fournis explicitement :

{
  "source":"lacollector.la_rest_api",
  "name":"ExampleRestAPICreds",
  "type":"HTTPSTokenCreds",
  "description":"These are HTTPS (Token) credentials.",
  "properties":
  [
    { "name": "HTTPSToken", "value": "CLEAR[token value]" },
    {"name": "HTTPSTokenType", "value": "CLEAR[Bearer]" },
    { "name":"ssl_trustStoreType", "value":"JKS" },
    { "name":"ssl_trustStoreLocation", "value":"/scratch/certs/mycert.keystore" },
    { "name":"ssl_trustStorePassword", "value":"mySSLPassword" }
  ]
}

Ingérer les journaux de vérification Fusion Applications

Suivez ces étapes pour collecter les journaux d'audit Fusion Applications. Pour obtenir la liste des sources définies par Oracle disponibles pour Fusion Applications, voir Sources définies par Oracle.

Rubriques :

Conditions requises

  • Présentation des API des journaux de vérification Fusion Applications : Pour plus de détails sur l'utilisation et les fonctionnalités de l'API des journaux de vérification, voir la documentation sur l'API REST Fusion Applications.

  • Accès aux applications Fusion : Vous devez disposer de données d'identification et de privilèges valides pour accéder à l'instance Fusion Applications.

  • Identifier les points d'extrémité et le mandataire suivants (facultatif) :

    • login_url : URL de base de votre instance Fusion Applications
    • pod_url : URL de base de votre instance Fusion Applications
    • proxy_url : (Facultatif) URL qui envoie une demande au serveur mandataire

    Pour plus de détails sur les URL, voir ID document 2661308.1 dans Oracle My Support.

  • Accès à l'API REST Fusion Applications : Assurez-vous que l'accès à l'API est activé et que les rôles/privilèges requis sont affectés.

Configurer la collecte du journal de vérification à partir des applications Fusion

  1. Valider l'URL de base Fusion Applications :

    • Validez les données d'identification Fusion Applications en vous connectant à l'interface utilisateur.
    • Au besoin, analysez les appels de trace réseau pour valider l'URL de base.
    • Assurez-vous que l'accès à l'API de vérification est activé.
  2. Créer les politiques IAM requises : Autoriser la collecte continue des journaux à l'aide des agents de gestion

  3. Installez l'agent de gestion sur un hôte qui a un accès http ou https à votre instance/serveur Fusion Applications. Assurez-vous que le plugiciel Log Analytics est déployé pendant l'installation. Voir installer des agents de gestion.

  4. Configurer les données d'identification d'API dans le magasin de données d'identification de l'agent :

    L'emplacement du répertoire /bin dépend du mode de déploiement de l'agent de gestion :

    • Pour les agents de gestion s'exécutant sur des instances de calcul au moyen du plugiciel Oracle Cloud Agent, le script se trouve à l'adresse /var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/agent_inst/bin.

    • Pour les agents de gestion que vous avez installés manuellement, le script se trouve à l'adresse /opt/oracle/mgmt_agent/agent_inst/bin.

    Naviguez jusqu'au répertoire /bin approprié pour votre configuration afin de créer le fichier JSON de données d'identification. L'exemple suivant présente les valeurs fournies dans le fichier fapps.json :

    {
          "source": "lacollector.la_rest_api",
          "name": "FA-CREDS",
          "type": "HTTPSBasicAuthCreds",
          "description": "These are HTTPS (BasicAuth) credentials.",
          "properties": [
              {
                  "name": "HTTPSUserName",
                  "value": "USER"
              },
              {
                  "name": "HTTPSPassword",
                  "value": "PASS"
              }
          ]
      }

    Ajoutez les données d'identification FA-CREDS au magasin de données d'identification de l'agent :

    cat fapps.json | ./credential_mgmt.sh -s logan -o upsertCredentials

    Pour plus de détails sur la configuration des données d'identification d'API dans le magasin de données d'identification de l'agent, voir Données d'identification sources de l'agent de gestion.

  5. Vérifiez si le point d'extrémité de l'API Fusion Applications peut être atteint à partir de l'instance où l'agent est installé. Vous pouvez utiliser des outils tels que curl pour effectuer la vérification.

  6. Créer une entité : Créez une entité de type Oracle Fusion Applications et ajoutez des valeurs de propriétés pour login_url et pod_url. Si nécessaire, ajoutez également la valeur pour proxy_url. Voir Créer une entité pour représenter votre ressource émettrice de journaux.

  7. Configurer la source : Identifiez une source définie par Oracle appropriée pour les journaux de vérification Fusion Applications que vous pouvez utiliser. Si nécessaire, vous pouvez créer un double de la source existante et la modifier. Voir Modifier la source.

    • Assurez-vous que les données d'identification sont référencées correctement dans le point d'extrémité de journal de votre source.
    • Ajoutez un mandataire aux points d'extrémité de journal, si nécessaire.
  8. Programmer la collecte de données côté agent : Associez la source à l'entité pour programmer la collecte de données. Utilisez l'agent de gestion pour appeler périodiquement les API de vérification Fusion Applications et pousser les données vers Log Analytics. Voir Configurer une nouvelle association source-entité.

  9. Vérifier et valider dans l'explorateur de journaux : Vérifiez que les journaux sont collectés et analysés correctement dans l'explorateur de journaux. Voir Visualiser les données à l'aide de graphiques et de contrôles.