Publicación de métricas personalizadas mediante la API

Publique métricas personalizadas en el servicio Monitoring.

Consejo

Las configuraciones de agente son otra forma de publicar métricas personalizadas en Monitoring. Con las configuraciones de agente, la API no es necesaria para publicar métricas personalizadas. Ahora puede utilizar configuraciones de agente para ingerir datos de métricas en métricas personalizadas. Por ejemplo, exponga las métricas de una máquina virtual (VM) mediante un punto final HTTP en formato Prometheus.

Una métrica personalizada es una métrica que se diseña para recopilar y analizar datos.

Por ejemplo, cree una métrica productOrder (en un espacio de nombres de métrica, mymetricsnamespace) para realizar un seguimiento de los pedidos de productos por país y división, con metadatos adicionales para las notas y categorías de productos.

Antes de empezar

Políticas de IAM: para publicar métricas personalizadas, debe recibir el tipo de acceso necesario en una política  escrita por un administrador. Este requisito se aplica tanto si está utilizando la API de REST con un SDK, una CLI u otra herramienta. Si obtiene un mensaje que indica que no tiene permiso o no está autorizado, consulte al administrador. Puede que no tenga el tipo de acceso necesario en el compartimento  actual.

Administradores: para obtener una política de ejemplo, consulte Publicar métricas personalizadas (protección de Monitoring).

Consideraciones

Cuando defina métricas personalizadas, tenga en cuenta lo siguiente:

  • Para el espacio de nombres de métrica, no utilice un prefijo reservado (oci_ o oracle_).
  • Asegúrese de que las métricas personalizadas no exceden los límites. Por ejemplo, tenga en cuenta el rango válido de dimensiones y el número máximo de flujos para métricas personalizadas. Consulte PostMetricData.
  • Defina las métricas teniendo en cuenta la agregación. Aunque las métricas personalizadas se pueden publicar con una frecuencia de hasta un segundo (frecuencia mínima de un segundo), el intervalo mínimo de agregación es de un minuto.
  • Defina métricas teniendo en cuenta los límites de retorno. Los límites para los datos devueltos incluyen 100.000 puntos de datos máximo e intervalos de tiempo máximos (determinados por la resolución, lo cual está relacionado con el intervalo). Consulte MetricData. Consulte también Límites de Monitoring.
  • Asegúrese de que los valores de registro de hora estén cerca de la hora actual. Para que un punto de datos se tenga en cuenta, su registro de hora debe ser cercano a la hora actual (menos de dos horas en el pasado y menos de 10 minutos en el futuro). Consulte PostMetricData.
  • Después de publicar métricas personalizadas, puede acceder a ellas de la misma forma que accede a cualquier otra métrica almacenada por el servicio Monitoring: Ver gráficos en la consola, consultar métricas mediante la CLI o la API y crear alarmas.
  • Al recuperar métricas personalizadas, puede buscar coincidencias con un grupo de recursos. En blanco (nulo) para un grupo de recursos devuelve datos de métrica que no tienen un grupo de recursos.
  • Esta tarea no se puede realizar en la consola.
  • Nota

    A diferencia de otros comandos de Monitoring que utilizan puntos finales telemetry, este comando requiere un punto final telemetry-ingestion.

    Utilice el comando oci monitoring metric-data post, el parámetro --endpoint y los parámetros necesarios para publicar métricas personalizadas:

    oci monitoring metric-data post --metric-data <json_file_path> --endpoint https://telemetry-ingestion.<region>.oraclecloud.com

    Para obtener una lista completa de parámetros y valores para los comandos de la CLI, consulte la Command Line Reference for Monitoring.

    Archivo JSON de ejemplo para la solicitud

    El archivo JSON de ejemplo incluye los siguientes elementos.

    • Espacio de nombres de métricas: mymetricsnamespace
    • Nombre de métrica: productOrder
    • Dimensión Product
    • Dimensión Country
    • Grupo de recursos (DivisionX, DivisionY)
    • Metadatos adicionales para categoría y nota
    [
      {
        "compartmentId": "$compartmentId",
        "datapoints": [
          {
            "count": 10,
            "timestamp": "2023-01-08T04:18:01+00:00",
            "value": 5.0
          },
          {
            "count": 3,
            "timestamp": "2023-01-08T05:11:01+00:00",
            "value": 10.0
          }
        ],
        "dimensions": {
          "product": "ball",
          "country": "NL"
        },
        "metadata": {
          "category": "toys",
          "note": "national holiday"
        },
        "name": "productOrder",
        "namespace": "mymetricsnamespace",
        "resourceGroup": "divisionX"
      },
      {
        "compartmentId": "$compartmentId",
        "datapoints": [
          {
            "count": 7,
            "timestamp": "2023-01-08T03:22:01+00:00",
            "value": 3.0
          },
          {
            "count": 11,
            "timestamp": "2023-01-08T05:08:03+00:00",
            "value": 2
          }
        ],
        "dimensions": {
          "product": "The Road to Nowhere",
          "country": "FR"
        },
        "metadata": {
          "category": "books",
          "note": "start second semester"
        },
        "name": "productOrder",
        "namespace": "mymetricsnamespace",
        "resourceGroup": "divisionY"
      }
    ]
    Respuesta de ejemplo
    {
      "data": {
        "failed-metrics": [],
        "failed-metrics-count": 0
      }
    }
  • Nota

    A diferencia de otras operaciones de Monitoring que utilizan puntos finales telemetry, esta operación necesita un punto final telemetry-ingestion.

    Ejecute la operación PostMetricData para publicar métricas personalizadas.

    Ejemplo de una solicitud por lotes

    En este ejemplo se muestra una única solicitud que contiene puntos de datos  para métricas de dos nombres de espacio de métricas .

    [
       {
          "namespace":"myFirstNamespace",
          "compartmentId":"ocid1.compartment.oc1..exampleuniqueID",
          "resourceGroup":"myFirstResourceGroup",
          "name":"successRate",
          "dimensions":{
             "resourceId":"ocid1.exampleresource.region1.phx.exampleuniqueID",
             "appName":"myAppA"
          },
          "metadata":{
             "unit":"percent",
             "displayName":"MyAppA Success Rate"
          },
          "datapoints":[
             {
                "timestamp":"2023-01-10T22:19:20Z",
                "value":83.0
             },
             {
                "timestamp":"2023-01-10T22:19:40Z",
                "value":90.1
             }
          ]
       },
       {
          "namespace":"myFirstNamespace",
          "compartmentId":"ocid1.compartment.oc1..exampleuniqueID",
          "resourceGroup":"mySecondResourceGroup",
          "name":"successRate",
          "dimensions":{
             "resourceId":"ocid1.exampleresource.region1.phx.differentuniqId",
             "appName":"myAppA"
          },
          "metadata":{
             "unit":"percent",
             "displayName":"MyAppA Success Rate"
          },
          "datapoints":[
             {
                "timestamp":"2023-01-10T22:19:10Z",
                "value":100.0
             },
             {
                "timestamp":"2023-01-10T22:19:30Z",
                "value":100.0
             }
          ]
       },
       {
          "namespace":"mySecondNamespace",
          "compartmentId":"ocid1.compartment.oc1..exampleuniqueID",
          "name":"deliveryRate",
          "dimensions":{
             "resourceId":"ocid1.exampleresource.region1.phx.exampleuniqueID",
             "appName":"myAppB"
          },
          "metadata":{
             "unit":"bytes",
             "displayName":"MyAppB Delivery Rate"
          },
          "datapoints":[
             {
                "timestamp":"2023-01-10T22:19:00Z",
                "value":87.0,
                "count":60
             },
             {
                "timestamp":"2023-01-10T22:19:00Z",
                "value":96.0,
                "count":30
             }
          ]
       }
    ]