Pubblicazione di metriche personalizzate mediante l'API

Pubblicare le metriche personalizzate nel servizio di monitoraggio.

Suggerimento

Le configurazioni agente sono un altro modo per pubblicare metriche personalizzate in Monitoraggio. Con le configurazioni agente, l'API non è necessariamente necessaria per pubblicare metriche personalizzate. È ora possibile utilizzare le configurazioni agente per includere i dati delle metriche nelle metriche personalizzate. Ad esempio, esporre le metriche da una virtual machine (VM) utilizzando un endpoint HTTP in formato Prometheus.

Una metrica personalizzata è una metrica progettata per raccogliere e analizzare i dati.

Ad esempio, creare una metrica productOrder (in uno spazio di nomi delle metriche, mymetricsnamespace) per tenere traccia degli ordini dei prodotti per paese e divisione, con metadati aggiuntivi per le categorie e le note dei prodotti.

Prima di iniziare

Criteri IAM: per pubblicare metriche personalizzate, è necessario disporre del tipo di accesso richiesto in un criterio scritto da un amministratore. Questo requisito si applica sia che tu stia utilizzando l'API REST con un SDK, un'interfaccia CLI o un altro strumento. Se viene visualizzato un messaggio che informa che non si dispone dell'autorizzazione o che non si è autorizzati, contattare l'amministratore. È possibile che non si disponga del tipo di accesso richiesto nel compartimento corrente.

Amministratori: per un criterio di esempio, vedere Pubblica metriche personalizzate (protezione del monitoraggio).

Considerazioni

Quando si definiscono metriche personalizzate, tenere presente quanto riportato di seguito.

  • Per lo spazio di nomi delle metriche, non utilizzare un prefisso riservato (oci_ o oracle_).
  • Assicurarsi che le metriche personalizzate non superino i limiti. Ad esempio, si noti l'intervallo valido di dimensioni e il numero massimo di flussi per le metriche personalizzate. Vedere PostMetricData.
  • Definire le metriche tenendo presente l'aggregazione. Sebbene le metriche personalizzate possano essere pubblicate con la stessa frequenza di ogni secondo (frequenza minima di un secondo), l'intervallo di aggregazione minimo è di un minuto.
  • Definire le metriche tenendo conto dei limiti di restituzione. Le informazioni sui limiti per i dati restituiti includono il massimo di 100.000 datapoint e il massimo dell'intervallo di tempo (determinato dalla risoluzione, che si riferisce all'intervallo). Vedere MetricData. Vedere anche Limiti sul monitoraggio.
  • Assicurarsi che i valori dell'indicatore orario siano vicini all'ora corrente. Per poter pubblicare un datapoint, l'indicatore orario deve essere vicino all'ora corrente (meno di due ore nel passato e meno di 10 minuti nel futuro). Vedere PostMetricData.
  • Dopo aver pubblicato le metriche personalizzate, è possibile accedervi nello stesso modo in cui si accede a qualsiasi altra metrica memorizzata dal servizio di monitoraggio: Visualizza grafici nella console, metriche di query utilizzando l'interfaccia CLI o l'API e creare allarmi.
  • Quando si recuperano metriche personalizzate, è possibile abbinare a un gruppo di risorse. Vuoto (nullo) per il gruppo di risorse restituisce i dati delle metriche che non hanno un gruppo di risorse.
  • Questo task non può essere eseguito nella console.
  • Nota

    A differenza di altri comandi di monitoraggio che utilizzano endpoint telemetry, questo comando richiede un endpoint telemetry-ingestion.

    Utilizzare il comando oci monitoring Metric-data post, il parametro --endpoint e i parametri richiesti per pubblicare le metriche personalizzate:

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

    Per un elenco completo dei parametri e dei valori per i comandi CLI, consultare il manuale Command Line Reference for Monitoring.

    File JSON di esempio per la richiesta

    Il file JSON di esempio include i seguenti elementi.

    • Spazio di nomi metrica: mymetricsnamespace
    • Nome metrica: productOrder
    • Dimensione prodotto
    • Dimensione paese
    • Gruppo di risorse (DivisionX, DivisionY)
    • Metadati aggiuntivi per categoria e 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"
      }
    ]
    Risposta di esempio
    {
      "data": {
        "failed-metrics": [],
        "failed-metrics-count": 0
      }
    }
  • Nota

    A differenza di altre operazioni di monitoraggio che utilizzano endpoint telemetry, questa operazione richiede un endpoint telemetry-ingestion.

    Eseguire l'operazione PostMetricData per pubblicare le metriche personalizzate.

    Esempio di richiesta in batch

    Questo esempio mostra una singola richiesta contenente datapoint per le metriche in due spazi di nomi delle metriche .

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