Supuesto: Creación de Dimensiones para un Destino de Monitoring

Descubra cómo crear dimensiones para una métrica personalizada generada por un conector. Envíe datos de log del servicio Logging a las métricas (Monitoring) mediante Connector Hub.

Este escenario implica la creación de un conector para generar una métrica personalizada con dimensiones que hacen referencia a datos de log. Utilice este conector para mover los datos de log de Logging a Monitoring. Después de mover los datos, puede filtrar las nuevas métricas personalizadas mediante las dimensiones creadas por el conector.

Política de IAM necesaria

Si es miembro del grupo Administradores, ya tiene el acceso necesario para completar este escenario. De lo contrario, necesita acceso a Monitoring .

El flujo de trabajo para crear el conector incluye una política por defecto cuando es necesario para proporcionar permiso para escribir en el servicio de destino. Si no conoce las políticas, consulte Visión general de las políticas de IAM.

Objetivo

En este tema, se describe el objetivo de este escenario.

El objetivo de este escenario es filtrar los eventos de actualización para cubos de Object Storage. Por ejemplo, busque actualizaciones que hayan cambiado de cubos a acceso público. La búsqueda de cubos públicos puede ayudar a evitar la pérdida de secretos. Además del tipo de acceso público, este escenario configura filtros para el nombre del cubo, el nombre del compartimento, el dominio de disponibilidad, el estado del control de versiones y un valor estático.

Configuración de este escenario

En este tema se describen las tareas implicadas en la configuración de este escenario.

Este escenario crea una métrica a partir de un log mediante el servicio Connector Hub. La configuración de este escenario incluye las siguientes tareas:

  • Crear un conector para mover los logs de Logging a una métrica personalizada con dimensiones en Monitoring.

    • Datos de log: evento Cubo - Actualizar de registros de auditoría (grupo del log _Audit)

      Nota

      Mientras este escenario utiliza el grupo de logs _Audit y el evento de actualización de cubo, puede utilizar el mismo enfoque con cualquier log disponible en su arrendamiento.
    • Espacio de nombre de métrica: bucket_events

    • Nombre de métrica: update

    • Valor estático buckets-from-connector (nombre de dimensión: mytags)

    • Valor extraído mediante dimensiones de ruta:

      Nota

      Cada nuevo valor de dimensión crea un nuevo flujo de métricas. Para evitar generar demasiados flujos de métricas únicos, lo que podría dar lugar a una limitación, recomendamos excluir los GUID o los UUID (como los OCID de compartimento) de las dimensiones.

      Propiedad de ruta (nombre de dimensión) Valor
      bucketName logContent.data.additionalDetails.bucketName
      compartmentName logContent.data.compartmentName
      availabilityDomain logContent.data.availabilityDomain
      publicAccessType logContent.data.additionalDetails.publicAccessType
      versioning logContent.data.additionalDetails.versioning
  • Filtrar los datos movidos con las dimensiones (valores estáticos y extraídos).

Puede completar estas tareas en la consola, la CLI o la API de Oracle Cloud Infrastructure.

Uso de la consola

En este tema se describe cómo utilizar la consola para configurar el escenario.

Para obtener ayuda con el proceso de resolución de problemas, consulte Solución del problema de los conectores y Solución del problema de Notifications.

Tarea 1: Crear el conector

En este tema se describe cómo utilizar la consola para crear un conector que mueva los datos de un log a una métrica personalizada con dimensiones.

  1. Abra el menú de navegación y seleccione Análisis e IA. En Mensajería, seleccione Hub de conector.

  2. Seleccione el compartimento en el que desea crear el conector de servicio.
  3. Seleccione Crear conector.
  4. En la página Crear conector, mueva las actualizaciones de los eventos de cubos de Object Storage a una métrica personalizada con dimensiones personalizadas:

    • Escriba un nombre de conector como "Bucket - Update". Evite introducir información confidencial.
    • Seleccione el compartimento de recursos en el que desea almacenar el nuevo conector.
    • En Configurar conector, seleccione los servicios de origen y destino para mover los datos de log a una métrica:
      • Origen: Logging
      • Destino: Supervisión
    • En Configurar conexión de origen, seleccione logs de auditoría:
      • Compartimento: compartimento que contiene los datos de log.
      • Grupo de logs: _Audit
      • Logs: (dejar vacío)
    • En Tarea de filtro del log, seleccione el evento para actualizar para cubos de Object Storage:
      • Tipo de filtro: Tipo de evento
      • Nombre de servicio: Object Storage
      • Tipo de evento: Objeto - Actualizar
    • Omita Configurar tarea.
    • En Configurar conexión de destino, introduzca el espacio de nombres de métrica personalizado y el nombre de métrica personalizada que desea utilizar para los datos de log filtrados:
      • Seleccione el compartimento en el que desea almacenar los puntos de datos de métrica correspondientes al evento de actualización del cubo.
      • Introduzca un nuevo espacio de nombres de métrica : bucket_events.
        Nota

        Al escribir un nuevo espacio de nombres de métrica, pulse INTRO para enviarlo.
      • Introduzca una nueva métrica : update

      A continuación, cree dimensiones personalizadas para etiquetar los datos de log con el valor estático "buckets-from-connector" y para extraer el nombre del cubo, el nombre del compartimento, el OCID del compartimento, el dominio de disponibilidad, el tipo de acceso público y el estado del control de versiones.

    • Seleccione Agregar dimensiones.

      Aparece el panel Agregar dimensiones.

    • Extraiga el nombre del cubo de los datos de log (nombre de dimensión bucketName):
      1. En Seleccionar ruta, examine los datos de log disponibles para la ruta de bucketName.

        Las seis últimas filas de datos de log se recuperan del log especificado en Configurar origen.

        Ejemplo de fragmento de datos de log que muestra la ruta de bucketName:

        {
          "datetime": 1636594090595,
          "logContent": {
            "data": {
              "additionalDetails": {
                "bucketName": "bucket-20210722-1148",
        
      2. Seleccione la casilla de control de la ruta que desee.

        Nota

        Si no hay datos de log disponibles, puede introducir manualmente un valor de ruta con un nombre de dimensión personalizado en Editar ruta. La ruta debe empezar por logContent, utilizando la notación de puntos (.) o de índice ([]). El punto y el índice son los únicos selectores de JMESPath soportados. Por ejemplo:
        • logContent.data (notación de puntos)
        • logContent.data[0].content (notación de índice)

        Ruta de ejemplo para el evento de actualización de cubo, mediante notación de puntos:

        logContent.data.additionalDetails.bucketName

        Para obtener más información sobre la notación de ruta válida, consulte JmesPathDimensionValue.

        En la siguiente imagen se muestra un ejemplo de una ruta seleccionada (bucketName) y una ruta no seleccionada (eTag):

        Rutas seleccionadas y no seleccionadas

        En Editar ruta, los siguientes campos se rellenan automáticamente desde la ruta seleccionada. Opcionalmente, puede editar el nombre de la dimensión por defecto.

        Nombre de dimensión Valor
        bucketName logContent.data.additionalDetails.bucketName
    • Repita la extracción para cada valor adicional que desee utilizar como dimensión (filtro): en Seleccionar ruta, seleccione la casilla de control de la ruta correspondiente al nombre de la dimensión en la siguiente tabla.

      El valor se rellena automáticamente desde la ruta seleccionada. Opcionalmente, puede editar el nombre de la dimensión por defecto.

      Nombre de dimensión Valor
      compartmentName logContent.data.compartmentName
      availabilityDomain logContent.data.availabilityDomain
      publicAccessType logContent.data.additionalDetails.publicAccessType
      versioning logContent.data.additionalDetails.versioning
    • Etiquete los datos del log con el valor estático "buckets-from-connector" (nombre de dimensión "mytags"): en Valores estáticos, introduzca lo siguiente:
      • Nombre de la dimensión: mytags
      • Valor: buckets-from-connector
  5. Seleccione Guardar cambios.

    El panel Agregar dimensiones está cerrado. El foco cambia a la página Crear conector.

  6. Si se le solicita que cree una política (requerida para el acceso para crear o actualizar un conector), seleccione Crear.
  7. Haga clic en Crear.

    El nuevo conector comienza inmediatamente a mover los datos de log a la métrica personalizada update con las dimensiones especificadas.

    A continuación, filtre los datos movidos mediante las dimensiones.

Tarea 2: Filtrar los datos movidos

En este tema se describe cómo utilizar la consola para filtrar datos movidos de un log a una métrica personalizada con dimensiones.

  1. Abra el menú de navegación y seleccione Observación y gestión. En Supervisión, seleccione Explorador de métricas.

  2. En la página Explorador de métricas, rellene los campos de una nueva consulta.
    • Compartimento: compartimento que contiene la métrica.
    • Espacio de nombre de métrica: bucket_events
    • Nombre de métrica: update
    • Intervalo: 1 m

    • Estadística: recuento

    • Dimensiones de métricas: agregue las siguientes dimensiones.
      Nombre de dimensión Valor de la dimensión
      mytags buckets-from-connector
      bucketName bucket-20210722-1148
      compartmentName development
      availabilityDomain PHX-AD-3
      publicAccessType ObjectRead
      versioning Enabled
  3. Seleccione Actualizar gráfico.

    El gráfico muestra los datos de métrica filtrados por dimensión.

    Felicidades. Ahora está filtrando los datos del log que el conector ha movido a una métrica.

Uso de la CLI

En este tema se describe cómo crear el conector y filtrar los datos movidos con la CLI.

Para obtener más información sobre el uso de la API y la firma de solicitudes, consulte la documentación de la API de REST y Credenciales de seguridad. Para obtener información sobre los SDK, consulte Los SDK y la CLI.

  1. Defina el origen de log para el conector: guarde un archivo denominado source.json.

    Archivo source.json de ejemplo
    {
      "kind": "logging",
      "logSources": [
        {
          "compartmentId": "<compartment_OCID>",
            "logGroupId": "_Audit",
            "logId": null
        }
      ]
    }
  2. Defina el destino (métrica y dimensiones) para el conector: guarde un archivo denominado target.json.

    Archivo target.json de ejemplo
    {
      "kind": "monitoring",
      "compartmentId": "<compartment_OCID>",
      "metricNamespace": "bucket_events",
      "metric": "update",
      "dimensions": [
        {"name": "mytags", "dimensionValue": {"kind": "static", "value": "buckets-from-connector"}},
        {"name": "bucketName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.bucketName"}},
        {"name": "compartmentName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.compartmentName"}},
        {"name": "availabilityDomain", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.availabilityDomain"}},
        {"name": "publicAccessType", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.publicAccessType"}},
        {"name": "versioning", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.versioning"}}
      ]
    }
  3. Cree un conector: abra un símbolo del sistema y ejecute el comando oci sch service-connector create:

    Comando de ejemplo para crear un conector
    oci sch service-connector create
     --compartment-id <compartment_OCID>
     --display-name "Bucket - Update"
     --source file://source.json
     --target file://target.json
  4. Consulte los datos de métrica con las dimensiones personalizadas: abra un símbolo del sistema y ejecute el comando oci monitoring metric-data summarize-metrics-data:

    Comando de ejemplo para consultar datos de métricas mediante dimensiones personalizadas
    oci monitoring metric-data summarize-metrics-data
     --compartment-id <compartment_OCID>
     --namespace bucket_events
     --query-text update[1m]{mytags = "buckets-from-connector", bucketName = "bucket-20210722-1148", coompartmentName = "development", availabilityDomain = "PHX-AD-3", publicAccessType = "ObjectRead", versioning = "Enabled"}.count()

Para obtener ayuda con el proceso de resolución de problemas, consulte Solución del problema de los conectores y Solución del problema de Notifications.

Uso de la API

En este tema se describe cómo utilizar la API para crear el conector y filtrar los datos movidos.

Para obtener más información sobre el uso de la API y la firma de solicitudes, consulte la documentación de la API de REST y Credenciales de seguridad. Para obtener información sobre los SDK, consulte Los SDK y la CLI.

Utilice las siguientes operaciones:

  1. CreateServiceConnector: cree un conector.

    Ejemplo de solicitud CreateServiceConnector
    POST /20200909/serviceConnectors
    Host: service-connector-hub.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "compartmentId": "<compartment_OCID>",
      "displayName": "Bucket - Update",
      "source": {
        "kind": "logging",
        "logSources": [
          {
            "compartmentId": "<compartment_OCID>",
            "logGroupId": "_Audit",
            "logId": null
          }
        ]
      },
      "target": {
        "compartmentId": "<compartment_OCID>",
        "dimensions": [
          {"name": "mytags", "dimensionValue": {"kind": "static", "value": "buckets-from-connector"}},
          {"name": "bucketName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.bucketName"}},
          {"name": "compartmentName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.compartmentName"}},
          {"name": "availabilityDomain", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.availabilityDomain"}},
          {"name": "publicAccessType", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.publicAccessType"}},
          {"name": "versioning", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.versioning"}}
        ]
        "kind": "monitoring",
        "metric": "update",
        "metricNamespace": "bucket_events"
      }
    }
  2. SummarizeMetricsData: consulta de los datos de métricas por dimensiones.

    Ejemplo de solicitud SummarizeMetricsData
    POST /20180401/metrics/actions/summarizeMetricsData?compartmentId=<compartment_OCID>
    Host: telemetry.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "namespace": "bucket_events",
      "query": "update[1m]{mytags = "buckets-from-connector", bucketName = "bucket-20210722-1148", coompartmentName = "development", availabilityDomain = "PHX-AD-3", publicAccessType = "ObjectRead", versioning = "Enabled"}.count()"
    }

Para obtener ayuda con el proceso de resolución de problemas, consulte Solución del problema de los conectores y Solución del problema de Notifications.