Nota:

Traslado de logs de Oracle Cloud Infrastructure a Sumo Logic

Introducción

La plataforma de capacidad de gestión y capacidad de mantenimiento de Oracle Cloud tiene como objetivo reunirse con nuestros clientes en su ubicación. Entendemos que han estandarizado sus posturas operativas con las conocidas herramientas de observabilidad de terceros y queremos ser interoperables con esas herramientas para que nuestros clientes puedan seguir utilizando las herramientas en las que han invertido con Oracle Cloud Infrastructure (OCI).

En este tutorial, le guiaremos por cómo mover logs de OCI a Sumo Logic. Sumo Logic es una herramienta de observación popular que proporciona servicios de supervisión y seguridad que proporcionan una visibilidad completa de sus aplicaciones.

Nuestra arquitectura de solución a un alto nivel es como se muestra a continuación:

Creación de un recopilador de orígenes HTTP personalizado en Sumo Logic

En su cuenta de Sumo Logic, debe crear una aplicación de recopilador personalizado HTTP como se describe en los siguientes pasos.

  1. Haga clic en Asistente de configuración.

  2. Haga clic en Iniciar transmisión de datos a Sumo Logic.

  3. Haga clic en Su aplicación personalizada.

  4. Haga clic en Origen HTTPS.

  5. Configure el origen HTTP como se muestra a continuación.

    Nota: El origen HTTP es una etiqueta de metadatos, almacenada con los logs ingeridos y útil al buscar y filtrar logs más adelante en Sumo Logic. Cada línea de log que vamos a ingerir comenzará con un registro de hora de su incidencia de evento, por lo que seleccione la opción Usar zona horaria del archivo log.

    Al pasar a la siguiente pantalla, obtenemos el punto final HTTPS para que nuestros logs se carguen desde OCI mediante una llamada HTTP POST. Tome nota de este punto final, ya que configuraremos nuestra función para utilizar este punto final para cargar logs en Sumo Logic.

Configuración de los logs que desea capturar

Puede configurar los logs como entrada para el hub de conector de servicio y, por lo tanto, realizar la ingestión en Sumo Logic. Para simplificar este tutorial, capturaremos logs generados por Oracle Cloud Infrastructure (OCI) para los eventos de escritura en un bloque arbitrario de su elección.

  1. En la consola de Oracle Cloud, haga clic en el menú de navegación, seleccione Registro y, a continuación, seleccione Grupos de logs.

  2. Para crear un grupo de logs, haga clic en Crear grupo de logs.

  3. Seleccione el compartimento, agregue LogGroupForBucketActivity para el nombre y agregue una descripción. Haga clic en Crear.

  4. Seleccione Logs en el menú Registro. Verá una pantalla similar a la siguiente.

  5. Haga clic en Activar log de servicio e introduzca la siguiente información:

    • Servicio: seleccione Object Storage
    • Recurso: seleccione un cubo arbitrario (por ejemplo, BucketForSumoLogic) que desee observar con los logs.
    • Categoría de log: seleccione Escribir eventos de acceso
    • Log Name (Nombre de log): introduzca un nombre para el log, por ejemplo, logForBucketActivity.
    • Grupo de logs: seleccione el grupo de logs LogGroupForBucketActivity para el log que acaba de crear en el paso anterior
  6. Haga clic en Activar log.

    Ahora cada vez que se carga un objeto en el cubo BucketForSumoLogic, se agrega una entrada de log al log logForBucketActivity.

Configuración de Oracle Functions para la introducción de logs en Sumo Logic

  1. En la consola de Oracle Cloud, haga clic en el menú de navegación y seleccione Solución y plataforma. Seleccione Funciones en el menú Servicios para desarrolladores.

  2. Haga clic en Crear aplicación e introduzca un nombre, por ejemplo, SumoLogicFnApp.

  3. Una vez creada la aplicación, haga clic en el nombre de la aplicación y seleccione Introducción en el menú Recursos.

  4. Inicie Cloud Shell.

  5. Utilice el contexto de su región.

    fn list context
    fn use context us-ashburn-1
    
  6. Actualice el contexto con el ID de compartimento de la función.

    fn update context oracle.compartment-id <compartment-id>
    
  7. Actualice el contexto con la ubicación del registro que desea utilizar.

    fn update context registry iad.ocir.io/<tenancy_name>/[YOUR-OCIR-REPO]
    

    Sustituya iad por el código de región de tres dígitos de la región.

  8. Suponiendo que ya haya creado el token de autenticación, inicie sesión en el registro utilizando el token de autenticación como contraseña.

    docker login iad.ocir.io
    

    Sustituya iad por el código de región de tres dígitos de la región.

    Se le pedirá la siguiente información:

    • Nombre de usuario: <tenancyname>/<username>
    • Contraseña: cree una contraseña

    Nota: si utiliza Oracle Identity Cloud Service, el nombre de usuario es <tenancyname>/oracleidentitycloudservice/<username>.

    Muestre las aplicaciones del compartimento y compruebe la configuración.

    fn list apps
    
  9. Genere una función de texto fijo 'hola mundo'.

    fn init --runtime python sumologicfn
    

    El comando fn init generará una carpeta denominada SumoLogicfn con tres archivos dentro: func.py, func.yaml, y requirements.txt.

    Abra func.py y sustituya el contenido del archivo por el siguiente código.

    1. Importe los módulos de Python necesarios, como se muestra en el siguiente fragmento.

      import io
      import json
      import logging
      import os
      
      import requests
      from fdk import response
      
    2. Defina una función para analizar los datos de log y llamar a la API de Sumo Logic para ingerir los logs.

      # This method is the entrypoint for your Function invokation 
      # aka the method invoked by the OCI Fn platform
      # it will receive the list of log entries from OCI as input in the form of bytestream
      # the method name will be defined in func.yml
      def handler(ctx, data: io.BytesIO = None):
          logger = logging.getLogger()
          logger.info("function start")
      
          # Sumologic endpoint URL to upload OCI logs to HTTP custom app.
          # this value will be defined defined in func.yaml
          sumologic_endpoint = os.environ['SUMOLOGIC_ENDPOINT']
      

      Para obtener información sobre el formato de los logs generados por el servicio Oracle Cloud Infrastructure Logging, consulte Visión general del formato de registro.

    3. Recupere las entradas de log del hub de conector de servicio recibidas por nuestra función sumologicfn como carga útil de llamada. Realice un bucle en estos log-entries y log-lines uno por uno.

      try:
          logentries = json.loads(data.getvalue()) # deserialize the bytesstream input as JSON array
          if not isinstance(logentries, list):
              logger.error('Invalid connector payload. No log queries detected')
              raise
      
          # Optional...log the input to the function as human readble JSON. 
          # Not to be used in production
          logger.info("json input from SCH")
          logger.info(data.getvalue()) 
      
          for logEntry in logentries: 
              logger.info("Extracting/Parse log details from the log entry json")
              event_name = logEntry["data"]["requestResourcePath"] + '\t'
              time_of_event = logEntry["time"] + '\t'
              cmpt_name = logEntry["data"]["compartmentName"] + '\t'
              bucket_namespace = logEntry["data"]["namespaceName"] + '\t'
              bucket_name = logEntry["data"]["bucketName"] + '\t'
              request_action = logEntry["data"]["requestAction"]
      
              log_line = time_of_event + event_name + cmpt_name + \
                          bucket_namespace + bucket_name + request_action
      
              # Call the Sumologic with the payload and ingest the OCI logs
              headers = {'Content-type': 'text/plain'}
              response_from_sumologic = requests.post(sumologic_endpoint,
                                                      data=log_line,
                                                      headers=headers)
              logging.getLogger().info(response_from_sumologic.text)
      
          logger.info("function end")
          return
      
      except Exception as e:
           logger.error("Failure in the function: {}".format(str(e)))
           raise
      
  10. Reemplace el contenido de func.yml de la siguiente manera. Asegúrese de poner el valor de SumoLogic_ENDPOINT que hemos obtenido en el paso anterior.

    schema_version: 20180708
    name: sumologicfn
    version: 0.0.1
    runtime: python
    entrypoint: /python/bin/fdk /function/func.py handler
    memory: 1024
    timeout: 120
    config:
      SUMOLOGIC_ENDPOINT: [YOUR SUMOLOGIC API ENDPOINT URL HERE]
    
  11. Reemplace el contenido de requirements.txt de la siguiente manera.

    fdk
    requests
    
  12. Desplegar su función.

    fn -v deploy --app sumologicFnApp --no-bump
    
  13. De manera opcional, puede probar la función SumoLogicfn con una entrada de ejemplo de la siguiente manera:

    curl -O https://raw.githubusercontent.com/mayur-oci/sumologicfn/main/example.json
    fn invoke sumologicFnApp sumologicfn < example.json
    

Crear un conector de servicio para leer logs desde el registro y disparar la función

  1. En la consola de Oracle Cloud, haga clic en el menú de navegación y seleccione Solución y plataforma. Seleccione Conectores de Servicio en el menú Registro.

  2. Haga clic en Crear conector y, en la lista desplegable Origen, seleccione Registro y, en la lista desplegable Funciones, seleccione Destino.

  3. En Configurar conexión de origen, seleccione el nombre del compartimento, el grupo de logs LogGroupForBucketActivity y los logs de logForBucketActivity.

  4. Si desea utilizar logs de auditoría, haga clic en +Another log, seleccione el compartimento y agregue _Audit para el grupo de logs.

  5. Si se le solicita que cree una política para escribir en Functions, haga clic en Crear.

El conector de servicio ahora está configurado y activará la función para ingerir logs en Sumo Logic cada vez que encuentre logs en el servicio de registro.

Visualización de logs de Oracle Cloud Infrastructure en Sumo Logic

  1. En Sumo Logic, seleccione el menú Origen: aplicación personalizada para ver los logs ingeridos de Oracle Cloud Infrastructure (OCI) con nuestra función SumoLogicfn.

Solución de problemas

En esta sección se muestra cómo puede utilizar una alerta de correo electrónico simple para supervisar el estado de la solución.

Para obtener más información, consulte Visión general de las funciones.

Creación de un tema y una suscripción para el servicio de notificación

  1. En la consola de Oracle Cloud, en el menú de navegación de la esquina superior izquierda, seleccione Integración de aplicación y, a continuación, seleccione Notificaciones.

  2. Haga clic en Crear tema y cree un tema con el nombre my_function_status.

  3. Seleccione el tema, haga clic en Crear suscripción y utilice el siguiente ejemplo:

    • Protocolo: envíe un correo electrónico y agregue una suscripción a su correo electrónico.
  4. La suscripción se creará en estado "Pendiente". Recibirá un correo electrónico de confirmación y deberá hacer clic en el enlace del correo electrónico para confirmar su dirección de correo electrónico.

Comprobar métricas y crear una definición de alarma a partir de métricas

  1. En el menú de navegación de la esquina superior izquierda, seleccione Servicios para desarrolladores y, a continuación, seleccione Funciones.

  2. Seleccione la aplicación y la función que desea supervisar.

  3. En la página Métricas, vaya al gráfico Errores de funciones, haga clic en Opciones y, a continuación, haga clic en Crear una alarma en esta consulta.

  4. Agregue un nombre y, en Notificación, seleccione Servicio de destino como servicio de notificación, seleccione your_compartment y, a continuación, seleccione Tema como my_function_status.

Supervisión del hub de conector de servicio de estado

En esta sección se muestra cómo puede utilizar una alerta de correo electrónico simple para supervisar el estado del hub de conector de servicio (SCH).

Para obtener más información, consulte Visión general de Service Connector Hub.

Creación de un tema y una suscripción para el servicio de notificación

  1. En el menú de navegación de la esquina superior izquierda, seleccione Integración de aplicación y, a continuación, seleccione Notificaciones.

  2. Haga clic en Crear tema y cree un tema con el nombre my_sch_status.

  3. Seleccione el tema, haga clic en Crear suscripción y utilice el siguiente ejemplo:

    • Protocolo: envíe un correo electrónico y agregue una suscripción a su correo electrónico.
  4. La suscripción se creará en estado "Pendiente". Recibirá un correo electrónico de confirmación y deberá hacer clic en el enlace del correo electrónico para confirmar su dirección de correo electrónico.

Comprobar métricas y crear una definición de alarma a partir de métricas

  1. En el menú de navegación de la esquina superior izquierda, seleccione Logging (Registro) y, a continuación, seleccione Service Connectors (Conectores de servicio).

  2. Seleccione el conector que desea supervisar y, en la lista Recursos del panel de navegación izquierdo, seleccione Métricas.

  3. En el gráfico de métricas al que desea agregar la alarma, por ejemplo, "Errores de hub de conector de servicio", haga clic en Opciones y Crear una alarma en esta consulta.

  4. Agregue un nombre y, en Notificación, seleccione Servicio de destino como servicio de notificación, seleccione your_compartment y, a continuación, seleccione Tema como my_sch_status.

Conclusión

En este tutorial se mostraba cómo los clientes de Oracle Cloud Infrastructure y Sumo Logic pueden configurar una solución altamente escalable con poca sobrecarga para mover logs de Oracle Cloud Infrastructure Logging a Sumo Logic mediante el hub de conector de servicio y Oracle Functions.

Agradecimientos

Más recursos de aprendizaje

Explore otras prácticas en docs.oracle.com/learn o acceda a contenido de aprendizaje más gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de formación de Oracle.

Para obtener documentación sobre los productos, visite Oracle Help Center.