Configurar recopilación de logs de API de REST

Oracle Log Analytics le permite configurar una recopilación de logs continua basada en API de REST a partir de URL de punto final que respondan con mensajes de log. El origen de log de la API de REST se debe configurar con una API que responda con los mensajes de log generados dentro del marco temporal especificado en la solicitud.

Este es un método recomendado cuando se desea automatizar la recopilación continua de logs desde entornos, plataformas o aplicaciones como servicios de OCI, Fusion Apps, aplicaciones ERP o cualquier otra aplicación que emita logs a través de una API. Hay macros disponibles que se pueden utilizar en la definición de origen para especificar un tiempo de log desde el que iniciar la recopilación de logs, proporcionar un desplazamiento para iterar y recopilar datos a través de los resultados de página de un punto final de log y recopilar logs a través de una ventana de recopilación o un marco temporal.

También puede utilizar un origen de API de REST para recopilar logs de las API de SOAP a través de HTTP o HTTPS. Para las API de SOAP, configure los puntos finales de POST con una carga útil XML de SOAP, utilice application/xml o el tipo de contenido requerido por la API, y utilice la configuración del analizador o subanalizador XML para extraer registros de log de la respuesta de SOAP.

Flujo general para recopilar logs mediante el origen basado en API de REST

A continuación, se muestran las tareas de alto nivel para recopilar información de log mediante el origen basado en la API de REST:

Para obtener un flujo integral de la ingesta de logs de auditoría de Fusion Applications, consulte Ingesta de logs de auditoría de Fusion Applications.

Nota

Para la recopilación de API de SOAP se deben tener en cuenta los siguientes aspectos:

  • El contenido en formato PDF o comprimido no está soportado.
  • No se admiten la recuperación y el reensamblaje de informes fragmentados.
  • El manejo de espacios de nombres XML puede requerir el uso de la opción ignorar espacio de nombres del analizador o XPath no sensible al espacio de nombres, según la respuesta de SOAP.

Crear origen de API de REST

Oracle Log Analytics ya proporciona un origen de log definido por Oracle para la recopilación de logs de la API de REST. Compruebe si puede utilizar el origen de API de REST definido por Oracle disponible o cualquier analizador definido por Oracle. Si no es así, utilice los siguientes pasos para crear un nuevo origen de log:

Antes de empezar, si debe crear un nuevo analizador que sea adecuado para sus logs, rellénelo. Consulte Creación de un analizador.

  1. Abra el menú de navegación y haga clic en Observación y gestión. En Log Analytics, haga clic en Administración.

    Los recursos de administración se muestran en el panel en Administración en la izquierda. Haga clic en Orígenes.

  2. Se abre la página Orígenes. Haga clic en Crear origen.

    Aparecerá el cuadro de diálogo Crear origen.

  3. En el campo Nombre, introduzca el nombre del origen de log.

  4. En la lista Tipo de origen, seleccione API de REST.

  5. Haga clic en Tipo de entidades y seleccione el tipo que mejor identifique la aplicación.

  6. Haga clic en Analizador y seleccione un analizador adecuado para el tipo de logs que desea recopilar.

  7. En el separador Puntos finales, agregue puntos finales en el orden en el que se deben ejecutar. Haga clic en Agregar punto final de log para agregar un punto final de log o un punto final de inicialización. Haga clic en Agregar punto final de lista para varios logs para varios logs cuando un punto final devuelva una lista de elementos y un punto final Log secundario deba recopilar los detalles de cada elemento.

    Utilice la inicialización para llamadas de configuración como conexión, recuperación de token de sesión o creación de contenedor. Los puntos finales posteriores pueden hacer referencia a las respuestas de punto final de inicialización, pero no se recopilan como registros de log. Coloque los puntos finales de inicialización antes que los puntos finales que utilizan sus valores de respuesta. Las cookies HTTP se transfieren a los puntos finales posteriores.

    • Para proporcionar un único punto final, haga clic en Agregar punto final de log. Se abre el cuadro de diálogo Agregar punto final de log.

      Proporcione la siguiente información:

      1. Seleccione el tipo de punto final de log:

        • Seleccione Log cuando la respuesta de punto final contenga registros de log para recopilar.
        • Seleccione Inicialización cuando el punto final recupere valores, como un token de sesión, para puntos finales posteriores. Las cookies HTTP se transfieren a los puntos finales posteriores.
          Nota

          Asegúrese de guardar los valores recuperados, como el token de sesión, para poder utilizarlos mientras se ejecutan otros puntos finales en el flujo de trabajo.
      2. Introduzca el nombre de punto final de log.

      3. Cree la URL de log para recopilar los logs periódicamente. Consulte URL de punto final de log en Tipos de punto final.

      4. Seleccione el método de API GET o POST.

        Si ha seleccionado POST, introduzca la carga útil de POST y especifique el tipo de contenido de solicitud que necesita la API en application/json, text/plain, text/javascript, text/html o application/xml. Para las API de SOAP, introduzca el sobre de SOAP en la carga útil de POST y utilice un tipo de contenido application/xml, según lo requiera el punto final. Para utilizar las macros USERNAME/PASSWORD en la carga útil de POST, consulte USERNAME and PASSWORD Macros.

      5. De manera opcional, especifique la URL de servidor proxy de log.

      6. Si lo desea, haga clic en Mostrar cabeceras de solicitud para ampliar la sección y haga clic en Agregar para proporcionar cualquier cabecera de solicitud con el formato de pares Nombre-Valor.

      7. Opcionalmente, haga clic en Mostrar parámetros de consulta para ampliar la sección y haga clic en Agregar para proporcionar cualquier parámetro de consulta con el formato de pares Nombre-Valor.

      8. En la sección Credenciales, seleccione el tipo de credencial de log. Consulte Selección del tipo de credencial para la recopilación de logs de API de REST.

        Si la carga útil de POST contiene USERNAME o PASSWORD, especifique el nombre de credencial para las macros USERNAME/PASSWORD en la sección Credenciales. El agente de gestión sustituye estas macros por valores de la credencial seleccionada en el momento de la recopilación.

      9. Para validar la información de configuración que ha introducido, haga clic en Validar. Si hay errores, corríjalos.

        Haga clic en Guardar cambios.

    • Para proporcionar un punto final que devuelva una respuesta JSON o XML con la información utilizada para generar varias solicitudes de punto final de log, haga clic en Agregar punto final de lista para varios logs. Se abre el cuadro de diálogo Agregar punto final de lista para varios logs.

      1. Separador Configurar punto final de lista:

        • Introduzca el nombre de punto final de lista de logs.

        • Cree la URL de lista de logs para obtener la información sobre los archivos log. Consulte URL de punto final de lista de logs en Tipos de punto final. Por ejemplo:

          https://example.org/fetchlogfiles_data
        • De manera opcional, especifique la URL de servidor proxy de log.

        • Seleccione el método de API GET o POST.

          Si ha seleccionado POST, introduzca la carga útil de POST y especifique el tipo de contenido de solicitud que necesita la API en application/json, text/plain, text/javascript, text/html o application/xml. Para las API de SOAP, introduzca el sobre de SOAP en la carga útil de POST y utilice un tipo de contenido application/xml, según lo requiera el punto final. Para utilizar las macros USERNAME/PASSWORD en la carga útil de POST, consulte USERNAME and PASSWORD Macros.

          En el siguiente ejemplo de carga útil XML se muestra el uso del token de sesión extraído del punto final de inicialización:

          <sessionToken>{getSessionToken:/Envelope/Body/loginResponse/loginResult}</sessionToken>
        • Si lo desea, haga clic en Mostrar cabeceras de solicitud para ampliar la sección y haga clic en Agregar para proporcionar cualquier cabecera de solicitud con el formato de pares Nombre-Valor.

        • Opcionalmente, haga clic en Mostrar parámetros de consulta para ampliar la sección y haga clic en Agregar para proporcionar cualquier parámetro de consulta con el formato de pares Nombre-Valor.

        • En la sección Credenciales, seleccione el tipo de credencial de log. Consulte Selección del tipo de credencial para la recopilación de logs de API de REST.

          Si la carga útil de POST contiene {USERNAME} o {PASSWORD}, especifique el nombre de credencial para las macros USERNAME/PASSWORD en la sección Credenciales. El agente de gestión sustituye estas macros por valores de la credencial seleccionada en el momento de la recopilación.

        • Haga clic en Siguiente.

      2. Separador Configurar punto final de log:

        • Proporcione el ejemplo de respuesta de punto final en la lista. Para las respuestas JSON, utilice variables JSONPath. Para las respuestas XML o SOAP, utilice variables XPath.

          Este es el ejemplo de JSON de la respuesta que obtendría para el punto final de lista de logs que proporcionó en el separador anterior. Por ejemplo:

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

          En el ejemplo anterior, la ruta de acceso JSON records[*].id se puede utilizar en la URL de punto final. Para obtener más información sobre las variables de ruta de acceso JSON, consulte Variables para la recopilación de logs de API de REST.

          Este es un ejemplo de XML para 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>

          Ejemplo de variable XPath:

          {getItems_ListEndpoint:/Envelope/Body/getItemsResponse/getItemsResult/string}
        • Introduzca el nombre de punto final de log.

        • Cree la URL de log, las cabeceras de solicitud, los parámetros de formulario o la carga útil POST mediante la incorporación de variables de la respuesta de punto final de lista. Utilice JSONPath para las respuestas JSON y XPath para las respuestas XML o SOAP. Consulte URL de punto final de log en Tipos de punto final. Por ejemplo:

          https://example.org/fetchLogs?time={START_TIME}&id={testLogListEP:$.records[*].id}
        • Seleccione el método de API GET o POST.

          Si ha seleccionado POST, introduzca la carga útil de POST y especifique el tipo de contenido de solicitud que necesita la API en application/json, text/plain, text/javascript, text/html o application/xml. Para las API de SOAP, introduzca el sobre de SOAP en la carga útil de POST y utilice un tipo de contenido application/xml, según lo requiera el punto final.

          Esta carga útil de punto final de log puede hacer referencia tanto a los valores de punto final de inicialización anteriores como al elemento actual del punto final de lista.

          Ejemplo de carga útil XML para llamada POST que hace referencia al token de sesión y al punto final de lista:

          <ns:getItemDetail>
            <ns:sessionToken>{getSessionToken:/Envelope/Body/loginResponse/loginResult}</ns:sessionToken>
            <ns:itemName>{getItems_ListEndpoint:/Envelope/Body/getItemsResponse/getItemsResult/string}</ns:itemName>
          </ns:getItemDetail>
        • De manera opcional, especifique la URL de servidor proxy de log.

        • Si lo desea, haga clic en Mostrar cabeceras de solicitud para ampliar la sección y haga clic en Agregar para proporcionar cualquier cabecera de solicitud con el formato de pares Nombre-Valor.

        • Opcionalmente, haga clic en Mostrar parámetros de consulta para ampliar la sección y haga clic en Agregar para proporcionar cualquier parámetro de consulta con el formato de pares Nombre-Valor.

        • En la sección Credenciales, seleccione el tipo de credencial de log. Consulte Selección del tipo de credencial para la recopilación de logs de API de REST.

        • Haga clic en Siguiente.

      3. Separador Revisar y agregar: se valida la información de configuración proporcionada en los separadores anteriores. Verifique la lista de direcciones URL de las que se recopilarán los logs.

        Si hay errores, corríjalos.

        Compruebe que los puntos finales de inicialización aparecen antes que los puntos finales que hacen referencia a ellos y que cada punto final de lista de logs tiene un punto final de log secundario que recopila los registros.

        Haga clic en Guardar.

  8. Haga clic en Crear origen.

Tipos de punto final

Punto final de lista de logs: al hacer clic en Agregar punto final de lista para varios logs al crear el origen de log de la API de REST, puede especificar el punto final de lista de logs que devuelve una lista de elementos. El punto final de la lista de logs debe devolver una respuesta JSON o XML, con JSONPath para JSON y XPath para XML. JSONPath o XPath se pueden utilizar para crear una lista de URL de punto final de log para recopilar los logs. Especifique las variables necesarias para crear la lista de puntos finales de log a partir de la respuesta. Además, puede utilizar las macros {START_TIME} y {CURR_TIME} para insertar los valores de tiempo correspondientes de forma dinámica en la URL.

Punto final de log: al hacer clic en Agregar punto final de log al crear el origen de log de la API de REST, puede agregar uno de los dos tipos de punto final de log. El tipo de punto final de log puede ser uno de estos dos: Inicialización y Log. El punto final de inicialización recupera valores, como un token de sesión, para puntos finales posteriores. El punto final de inicialización no extrae registros de log. Los elementos de su respuesta se pueden utilizar en puntos finales posteriores. El punto final Log se utiliza para recopilar logs de un punto final de API de REST específico a intervalos regulares. Puede utilizar las macros {START_TIME}, {CURR_TIME} y {TIME_WINDOW} para insertar los valores de tiempo correspondientes de forma dinámica en la URL. La macro {OFFSET} se puede utilizar para soportar la paginación. También puede utilizar variables de ruta de acceso JSON de la respuesta de la llamada de punto final de lista de logs para sustituir propiedades específicas.

  • {START_TIME}: para especificar la hora desde la que se deben recopilar los logs
  • {OFFSET}: para manejar la recopilación de logs paginados
  • {CURR_TIME}: para proporcionar la hora actual
  • {TIME_WINDOW}: para especificar un intervalo de recopilación o una duración
  • {USERNAME} y {PASSWORD}: para las API de SOAP que necesitan valores de nombre de usuario y contraseña en la carga útil de POST. El agente de gestión sustituye las macros por valores de la credencial configurada en el momento de la recopilación.

Para obtener más información sobre el uso de las macros, consulte START_TIME Macro, CURR_TIME Macro, OFFSET Macro y TIME_WINDOW Macro.

Para obtener más información sobre el uso de las variables de la respuesta de punto final de lista de logs que se pueden especificar en la URL de punto final de log, ejemplos de JSONPath y XPath y el uso de filtros de variables, consulte Variables para la recopilación de logs de API de REST.

Macro START_TIME

Utilice la macro START_TIME para especificar el tiempo desde el que se deben recopilar los logs. La macro START_TIME se puede utilizar en una URL de punto final, parámetros de formulario o carga útil POST.

En el siguiente ejemplo se muestra la URL de punto final que recopila logs superiores a un registro de hora especificado por 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}

Sintaxis:

{START_TIME<+nX>:<epoch | timestamp format supported by SimpleDateFormat java class>.TZ=<timezone name>}
  • n es el valor de tiempo del rango de fechas. La X se expresa en Días (D), Horas (h), Minutos (m), Meses (M), Año (Y).

  • +nX es el número de días, horas, minutos, meses o años que se agregarán a la hora de inicio. Es opcional. Por ejemplo, +3D.

  • Los formatos de hora soportados son los mismos que los de la clase java SimpleDateFormat. El formato de hora por defecto es yyyy-MM-dd'T'HH:mm:ss.SSSZ. Por ejemplo, 2001-07-04T12:08:56.235-0700.

    La especificación del formato de hora o epoch es opcional. Si se proporciona una época, la macro se sustituye por un valor de milisegundos de época.

    Para conocer los formatos de registro de hora admitidos por SimpleDateFormat, consulte Java Platform Standard Ed. 8: Class SimpleDateFormat.

  • TZ sirve para proporcionar la zona horaria del registro de hora. No es aplicable si ya se ha proporcionado una época. El formato admitido es el mismo que los ID de 3 letras de la clase java TimeZone, por ejemplo UTC.

  • Puede incluir varias instancias de esta macro en la URL.

  • Ejemplos:

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

El valor de la macro START_TIME se determina de una de las siguientes maneras:

  • Cuando la recopilación se inicia por primera vez para un punto final, START_TIME es la fecha histórica basada en la propiedad de recopilación de agentes Datos históricos. El valor por defecto de esta propiedad es 30 days, es decir, el valor del registro de hora es 30 días antes que el registro de hora actual.

  • Si el campo Hora está definido en el analizador, en las recopilaciones de logs posteriores, el valor de START_TIME es el valor máximo del valor de registro de hora extraído en la recopilación de logs anterior.

  • Si el campo Hora no se extrae de los registros de log definiéndolo en el analizador, el registro de hora actual es el valor de START_TIME.

En caso de que haya filtros en la API, utilice greater than equal to en lugar de greater than para asegurarse de que se cargan todos los registros de log que tengan el mismo registro de hora.

Macro CURR_TIME

Utilice la macro CURR_TIME para insertar la hora actual en la URL de punto final de la API de REST, los parámetros de formulario y la carga útil POST.

En el siguiente ejemplo se muestra la URL de punto final que utiliza la macro CURR_TIME en el parámetro de consulta:

https://example.org/fetchLogs?sortBy=timestamp&sortOrder=ascending&time={CURR_TIME:yyyy-MM-dd'T'HH:mm:ss.SSSZ}
  • El formato para utilizar la macro es el mismo que el de la macro START_TIME.

  • Puede incluir varias instancias de esta macro en la URL.

Macro OFFSET

Utilice la macro OFFSET para puntos finales que proporcionan respuestas paginadas o para manejar el comportamiento de desplazamiento en una respuesta de API. La macro OFFSET se puede utilizar en la URL de punto final de la API de REST, los parámetros de formulario y la carga útil POST para recuperar varias páginas o fragmentos en un único ciclo de recopilación de logs.

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

  • La macro OFFSET se utiliza para llamar y recopilar datos de forma iterativa sobre los resultados paginados de un punto final de log específico para obtener todos los registros disponibles. La llamada de solicitud de API de REST inicial comienza con el valor de inicio y se incrementa en cada llamada posterior por el valor de incremento. Estas llamadas basadas en índices recursivos se paran cuando no se encuentran más entradas de log. El desplazamiento no se traslada al siguiente ciclo de toma. Comienza a partir del valor por defecto o inicial en cada ciclo de recopilación.

  • En el formato anterior, el valor de inicio es el valor inicial del índice y el valor por defecto es 0. Es opcional especificar el valor de inicio.

    Valores posibles: entero positivo, incluido 0

  • En el formato anterior, incremento especifica el valor que se agregará al valor de inicio en las llamadas posteriores. El valor por defecto es 1. Es opcional especificar el valor de incremento.

    Valores posibles: solo entero positivo. Excluir 0.

  • Solo puede incluir una instancia de esta macro en la URL.

Los siguientes ejemplos muestran diferentes formas de utilizar la macro OFFSET:

  • {OFFSET}

    Utiliza los valores predeterminados valor de inicio = 0, incremento = 1.

  • {OFFSET(5)}

    valor de inicio = 5, incremento = 1 (valor por defecto)

  • {OFFSET(5,2)}

    valor de inicio = 5, incremento = 2

En el siguiente ejemplo se muestra la URL de punto final que utiliza la macro OFFSET:

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

En el ejemplo anterior, OFFSET(0,1000) indica que valor de inicio es 0 en la primera llamada y, a continuación, en las llamadas posteriores, incrementado en 1000. Por lo tanto, cuando se interpreta la macro OFFSET, la URL de punto final para varias llamadas sería la siguiente:

Primera llamada: https://example.org/fetchLogs?startIndex=0&count=1000

Segunda llamada: https://example.org/fetchLogs?startIndex=1000&count=1000

Macro TIME_WINDOW

Utilice la macro TIME_WINDOW para especificar el intervalo de recopilación en el que se deben recopilar los logs. Se puede utilizar en la URL de punto final de la API de REST para recuperar logs en minutos, horas o días, independientemente del intervalo de recopilación del agente. Por ejemplo, si la ventana de tiempo es 1d (un día) y el intervalo del agente es de 10 minutos, la recopilación de logs posterior se realiza solo después de un día.

En el siguiente ejemplo se define el intervalo de recopilación de logs durante 6 horas especificando TIME_WINDOW como 6h en la URL de punto final:

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

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

En el formato anterior:

  • número: número de dígito mayor que cero.

  • timeunit: h para horas, d para días, m para minutos. El valor por defecto es d (días).

Asegúrese de que el intervalo de recopilación de agentes es menor que la ventana de tiempo proporcionada. Puede utilizar la macro TIME_WINDOW solo una vez en el punto final.

USERNAME y Macros PASSWORD

Para las API de SOAP que necesitan valores de nombre de usuario y contraseña en la carga útil de POST, introduzca {USERNAME} y {PASSWORD} en el sobre XML de SOAP. Cuando haya alguna macro presente, especifique el nombre de credencial para las macros USERNAME/PASSWORD en la sección Credenciales del punto final. El agente de gestión sustituye las macros por valores de la credencial configurada en el momento de la recopilación.

Esto es independiente de la autenticación básica de punto final o la autenticación de token.

Nota

Cuando la API de SOAP requiere nombre de usuario y contraseña, solo debe incluir las macros {USERNAME} y {PASSWORD} en la carga útil de POST. No debe sustituir las macros por los valores reales de nombre de usuario y contraseña. Los valores se recopilan de la credencial configurada.

Ejemplo de carga útil XML de SOAP para llamada POST que tiene las macros anteriores:

<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 para recopilación de logs de API de REST

Utilice variables para sustituir valores de una respuesta de punto final anterior en una solicitud de punto final posterior en tiempo de ejecución. Las variables se pueden utilizar en los valores de URL, parámetros de formulario, carga útil POST o cabecera de solicitud HTTP. Para las respuestas REST, utilice expresiones JSONPath. Para las respuestas XML o SOAP, utilice expresiones XPath.

Si una solicitud de punto final depende de un valor de un punto final anterior y ese punto final anterior falla, no se llama al punto final dependiente y los mensajes de log no se recopilan de ese punto final dependiente.

Formato de la variable en un punto final posterior:

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

Para las respuestas JSON, utilice expresiones JSONPath como $.records[*].id. Para las respuestas XML o SOAP, utilice expresiones XPath como /Envelope/Body/loginResponse/loginResult.

  • En el formato anterior, endpoint_name es el nombre del punto final anterior cuya respuesta proporciona el valor. Para los flujos de SOAP, puede ser un punto final de inicialización, como un punto final de conexión o un punto final de lista de logs.

    Para las expresiones JSONPath, el filtro (<filter_field_name>=<value>) es opcional. Solo el atributo que coincide con filter_field_name se selecciona de la respuesta de JSON y se utiliza en el punto final posterior. Por ejemplo:

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

    Para obtener un ejemplo detallado del filtro, consulte JSONPath Filter Example.

    Para ver ejemplos de expresiones XPATH, consulte Ejemplos de SOAP/XPATH.

  • El contenido de respuesta JSON y XML se puede utilizar para recuperar valores de variables. Utilice JSONPath para las respuestas JSON y XPath para las respuestas XML o SOAP.

  • La misma variable se puede especificar varias veces.

  • Las variables pueden hacer referencia a puntos finales anteriores que son orígenes válidos para valores de punto final posteriores. Utilice los puntos finales de inicialización para valores de configuración, como tokens de sesión. Utilice los puntos finales de la lista de logs para los valores que controlan las solicitudes de punto final de log secundarias.

  • Se admiten los siguientes formatos de ruta de acceso JSON: JSONPath simple, Array JSONPath y Multiple-array JSONPath.

  • Para las respuestas de SOAP con espacios de nombres XML, utilice el formato XPath soportado por el analizador de XML y el solucionador de variables de punto final. Si el analizador o solucionador de variables está configurado para ignorar los espacios de nombres, escriba la XPath sin prefijos de espacio de nombres.

Sencillo JSONPath

Si la respuesta de JSON tiene varios niveles de elementos anidados, puede especificar la ruta de acceso de JSON como una notación especial de nodos y sus conexiones a sus nodos secundarios posteriores.

Para el siguiente ejemplo, utilice la ruta de acceso JSON $.foo.abc para obtener result como salida:

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

Para el siguiente ejemplo, utilice la ruta de acceso JSON $.*.id para obtener la salida ["id1", "id3"] o $.*.* para obtener la salida ["id1", "id2", "id3"]:

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

Para el siguiente ejemplo, utilice la ruta de acceso de JSON $.foo.* para obtener la salida ["id1", "value1"]:

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

JSONPath de matriz

Si la respuesta de JSON tiene una matriz de objetos de los que se deben extraer datos, especifique el nombre del objeto de matriz y utilice [] para extraer los elementos adecuados dentro de ese objeto de matriz. Por ejemplo, la siguiente respuesta de JSON tiene dos matrices de objetos records y item:

{
     "records": [
         {"id": "firstId", "type":"firstType"},
         {"id":"secondId", "type":"secondType"}
     ],
     "items": [
         {"name":"firstName", "field":"value"},
         {"name":"secondName", "field":"value"},
         {"name":"thirdName", "field":"value"}
     ]
}
  • Especifique la ruta de acceso JSON $.records[0].id para recuperar firstId como salida, $.records[1].id para recuperar secondId como salida o $.records[*].id para recuperar id de todos los objetos JSON. En el último caso, la salida es una lista de cadenas ["firstId", "secondId"].

  • También puede especificar condiciones en la ruta de acceso de JSON mediante (). En el ejemplo anterior, para recuperar id solo de aquellos records que tienen type como firstType, utilice la ruta de acceso JSON $.records[*].id(type='firstType').

JSONPath de varias matrices

Considere el siguiente ejemplo:

Para la URL de punto final de lista de logs getlist:

https://www.example.com/url_list

Respuesta de JSON al punto final de lista de log:

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

URL de punto final de log (haciendo referencia a variables de getlist):

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

Con las variables {getlist:$.records[*].id} y {getlist:$.items[*].name}, el agente genera los puntos finales de log siguientes con todas las combinaciones de los dos campos de matriz ["firstId", "secondId"] y ["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

Ejemplo de filtro JSONPath

Tenga en cuenta la siguiente respuesta de JSON del punto final de lista de logs 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"
                }
            ]
        }
    ]
}

Ahora, considere el siguiente ejemplo de punto final de log:

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

En el ejemplo anterior, el parámetro de ruta de acceso se sustituye por el elemento de matriz $.items[*].links[*].href de la respuesta JSON del punto final de la lista de logs foo y se especifica una condición adicional para seleccionar solo rel='self'.

Para la respuesta de JSON anterior, el agente genera el siguiente punto final de log:

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

Ejemplos de SOAP/XPath

Use XPath expressions when an earlier endpoint returns XML or SOAP XML.

  • Ejemplo de respuesta de punto final de inicialización:

    <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>
  • Variable de ejemplo utilizada en una carga útil POST de punto final posterior:

    <ns:sessionToken>{getSessionToken:/Envelope/Body/loginResponse/loginResult}</ns:sessionToken>
  • Ejemplo de respuesta de punto final de lista de logs:

    <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>
  • Ejemplo de carga útil POST de punto final de log secundario:

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

Seleccione el tipo de credencial para la recopilación de logs de API de REST

Para autorizar una conexión entre el agente y el origen de la API de REST, primero configure la credencial de API en el almacén de credenciales del agente. Después de configurar las credenciales de origen en el servicio Management Agent en el agente, puede utilizar esta información al crear el origen de log de la API de REST.

Para configurar las credenciales de origen en el servicio Management Agent para permitir que Management Agent recopile datos del host emisor de logs, consulte Credenciales de origen de Management Agent.

Al agregar el punto final de log o el punto final de lista de logs, proporcione la información de credenciales en el flujo de trabajo seleccionando el tipo de credencial de log. Seleccione una de las siguientes opciones:

  • Ninguno
  • Autenticación básica: especifique el nombre de credencial de log de la credencial que ha creado en el servicio Management Agent.
  • Token estático: especifique el nombre de credencial de log de la credencial que ha creado en el servicio Management Agent.
  • Token dinámico (OAuth 2.0):

    Especifique el nombre de credencial de token del token que ha creado en el servicio Management Agent. Además, proporcione la información del token, como Nombre de punto final de token, URL de punto final de token, Tipo de otorgamiento y, opcionalmente, Ámbito

    Si el proxy de token es el mismo que el del punto final de log, mantenga activada la casilla de control Proxy igual que el punto final de log. Si no es así, desactive la casilla de control y proporcione la URL de servidor proxy de token.

Asignación de tipos de credenciales al tipo de autenticación:

Tipo de Autenticación Tipo de credencial en Management Agent Propiedades de Credencial
Autenticación básica HTTPSBasicAuthCreds HTTPSUserName, HTTPSPassword
HTTPSCreds HTTPSUserName, HTTPSPassword, propiedades de almacén de confianza ssl
Token estático HTTPSTokenCreds HTTPSToken, HTTPSTokenType, propiedades de almacén de confianza ssl (opcional)
Token dinámico HTTPSBasicAuthCreds HTTPSUserName, HTTPSPassword
HTTPSCreds HTTPSUserName, HTTPSPassword, propiedades de almacén de confianza ssl

En propiedades del almacén de confianzassl, se incluye la siguiente información:

  • "ssl_trustStoreType": tipo de almacén, por ejemplo, JKS.

  • "ssl_trustStoreLocation": ruta del almacén de confianza

  • "ssl_trustStorePassword": contraseña de almacén de confianza (opcional)

Tenga en cuenta los siguientes aspectos sobre los atributos en el JSON de credencial:

  • source: el valor debe ser lacollector.la_rest_api

  • name: cualquier nombre adecuado para la credencial en uno de los siguientes formatos.

    • <cred_name>.<entity_name>: nombre de credencial con nombre de entidad
    • <nombre de credencial>: solo nombre de credencial

    El agente busca el nombre en el primer formato. Si no se encuentra, busca el nombre en el segundo formato.

  • type: debe ser uno de los valores especificados en la columna Tipo de credencial en Management Agent de la tabla de tipos de credenciales anterior.

Consulte Ejemplos de JSON de credencial.

Ejemplos de JSON de credenciales

Ejemplo de autenticación básica con nombre de usuario y contraseña a través de HTTPS con host de confianza:

{
  "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]" }
  ]
}

Ejemplo de autenticación básica con certificados SSL, nombre de usuario y contraseña a través de HTTPS proporcionando explícitamente certificados:

{
  "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" }
  ]
}

Ejemplo de token mediante HTTPS con host de confianza:

{
  "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]" }
  ]
}

Ejemplo de token a través de HTTPS con certificados proporcionados explícitamente:

{
  "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" }
  ]
}

Ingesta de logs de auditoría de Fusion Applications

Siga estos pasos para recopilar los logs de auditoría de Fusion Applications. Para obtener una lista de los orígenes definidos por Oracle disponibles para Fusion Applications, consulte Orígenes definidos por Oracle.

Temas:

Requisitos

  • Descripción de las API de logs de auditoría de Fusion Applications: para obtener más información sobre el uso y la funcionalidad de la API de logs de auditoría, consulte la documentación de la API de REST de Fusion Applications.

  • Acceso a Fusion Applications: debe tener credenciales y privilegios válidos para acceder a la instancia de Fusion Applications.

  • Identifique los siguientes puntos finales y proxy (opcional):

    • login_url: URL base de la instancia de Fusion Applications
    • pod_url: URL base de la instancia de Fusion Applications
    • proxy_url: (opcional) URL que envía una solicitud al servidor proxy

    Para obtener más información sobre las URL, consulte el ID de documento 2661308.1 en Oracle My Support.

  • Acceso a la API de REST de Fusion Applications: asegúrese de que el acceso a la API esté activado y de que se hayan asignado los roles o privilegios necesarios.

Configurar recopilación de logs de auditoría desde Fusion Applications

  1. Validar la URL base de Fusion Applications:

    • Valide las credenciales de Fusion Applications conectándose a la interfaz de usuario.
    • Opcionalmente, analice las llamadas de rastreo de red para validar la URL base.
    • Asegúrese de que el acceso a la API de auditoría esté activado.
  2. Cree las políticas de IAM necesarias: Permitir la recopilación continua de logs mediante instancias de Management Agent

  3. Instale Management Agent en un host que tenga acceso http o https a la instancia/servidor de Fusion Applications. Asegúrese de que el plugin de Log Analytics se despliegue durante la instalación. Consulte Instalación de Management Agents.

  4. Configurar la credencial de API en el almacén de credenciales del agente:

    La ubicación del directorio /bin depende de cómo se despliegue el agente de gestión:

    • Para las instancias de Management Agent que se ejecutan en instancias informáticas mediante el plugin de Oracle Cloud Agent, el script se encuentra en /var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/agent_inst/bin.

    • Para las instancias de Management Agent instaladas manualmente, el script se encuentra en /opt/oracle/mgmt_agent/agent_inst/bin.

    Navegue hasta el directorio /bin adecuado para la configuración a fin de crear el archivo JSON de credenciales. En el siguiente ejemplo, se muestran los valores proporcionados en el archivo 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"
              }
          ]
      }

    Agregue las credenciales de FA-CREDS al almacén de credenciales del agente:

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

    Para obtener más información sobre la configuración de la credencial de API en el almacén de credenciales del agente, consulte Credenciales de origen de Management Agent.

  5. Compruebe si se puede acceder al punto final de la API de Fusion Applications desde la instancia donde está instalado el agente. Puede utilizar herramientas como curl para realizar la comprobación.

  6. Crear entidad: cree una entidad del tipo Oracle Fusion Applications y agregue valores de propiedades para login_url y pod_url. Si es necesario, agregue también el valor para proxy_url. Consulte Creación de una entidad para representar el recurso que emite logs.

  7. Configurar origen: identifique un origen definido por Oracle adecuado para los logs de auditoría de Fusion Applications que pueda utilizar. Si es necesario, puede crear un duplicado del origen existente y editarlo. Consulte Editar origen.

    • Asegúrese de que se hace referencia correctamente a la credencial en el punto final de log del origen.
    • Agregue un proxy a los puntos finales de log, si es necesario.
  8. Programar recopilación de datos en el lado del agente: asocie el origen con la entidad para programar la recopilación de datos. Utilice el agente de gestión para llamar periódicamente a las API de auditoría de Fusion Applications y transferir datos a Log Analytics. Consulte Configuración de una nueva asociación origen-entidad.

  9. Revisar y validar en el explorador de logs: compruebe que los logs se recopilan y analizan correctamente en el explorador de logs. Consulte Visualización de datos mediante gráficos y controles.