Invio di log tramite API

Puoi inviare i log a un'istanza IBM Cloud Logs utilizzando l'API di inserimento.

Autenticazione tramite token portante

Devi ottenere un token di accesso IBM Cloud® Identity and Access Management (IAM) per autenticare le tue richieste.

Per ottenere il token utilizzando l'IBM Cloud CLI, completare i seguenti passaggi:

  1. Accedi a IBM Cloud.

    Assicurarsi che l'entità con cui si accede abbia il ruolo 'Sender per il servizio IBM Cloud Logs.

  2. Esegui il seguente comando:

    ibmcloud iam oauth-tokens
    
  3. Inserire questo token nell'intestazione Authorization della richiesta HTTP nella forma Bearer .

Ad esempio, puoi recuperare il tuo token di connessione IAM ed esportarlo come una variabile di ambiente immettendo il seguente comando CLI:

export IAM_TOKEN=`ibmcloud iam oauth-tokens --output json | jq -r '.iam_token'`

Inviare i log utilizzando cURL

La seguente tabella descrive i dettagli dell'endpoint:

Dettagli dell'endpoint di ingestione di Single
Dettaglio Valore
URL <INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles
HTTP Method POST
Intestazione Content-Type application/json
Intestazione Authorization Bearer $IAM_TOKEN

Dove

  • INSTANCE_ID: GUID dell'istanza IBM Cloud Logs a cui vuoi inviare i log.
  • REGION: regione in cui si trova l'istanza IBM Cloud Logs.
  • IAM_TOKEN: IAM bearer token utilizzato per richiedere l'autorizzazione a seng per i log. La pemissione logs.data.send è obbligatoria.

Utilizzare il seguente comando cURL per inviare una riga di log:

curl -v --location "<INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles" \
--header "Content-Type: application/json" \
--header "Authorization: $IAM_TOKEN" \
--data '[{
      "applicationName": "ENTER_APPLICATION_NAME",
      "subsystemName": "ENTER_SUBSYSTEM_NAME",
      "severity": "ENTER_SEVERITY",
      "computerName": "ENTER_VALUE",
      "text": ENTER_LOG_LINE,
      "category": "ENTER_VALUE",
      "className": "ENTER_VALUE",
      "methodName": "ENTER_VALUE",
      "threadId": "ENTER_VALUE"
    }]'

La seguente tabella evidenzia gli oggetti JSON che puoi includere per riga di log in una richiesta:

Array di oggetti JSON
Nome proprietà Tipo di proprietà Obbligatorio Ulteriori informazioni
applicationName string
subsystemName string
text string/json Se stai utilizzando Ajax o una tecnologia simile, potresti dover inviare i dati con JSON.stringify().
severity number No 1 – Debug
2 – Verbose
3 – Info
4 – Warn
5 – Error
6 – Critical
Se non viene specificato, verrà utilizzato 1 – Debug.
timestamp number No Millisecondi UTC. Se non specificato, verrà utilizzata l'ora in cui il log raggiunge il gate.
computerName string No
category string No
className string No
methodName string No
threadId string No
hiResTimestamp string No nanosecondi UTC

Se non si specifica severity, ai log viene assegnata la severità 1 – Debug.

Puoi inviare fino a 2MB per richiesta, ovvero circa 3.000 log di medie dimensioni.

Ad esempio, puoi eseguire il seguente comando per inviare i log a un'istanza nella regione eu-es :

curl -v --location "https://90d208cc-e1dd-4fb2-a938-358e5996f056.ingress.eu-es.logs.cloud.ibm.com/logs/v1/singles" \
--header "Content-Type: application/json" \
--header "Authorization: $IAM_TOKEN" \
--data '[{
      "applicationName": "cs-rest-test3",
      "subsystemName": "cs-rest-test3",
      "computerName": "computer test3",
      "text": {"key":"value","message":"148.145.31.214 - user [24/Oct/2023:15:54:46 +0000] \"PATCH /maximized/Triple-buffered_Managed/core.hmtl HTTP/1.1\" 400 7074 1.666 \"-\" \"Mozilla/5.0 (Macintosh; PPC Mac OS X 10_6_4 rv:6.0) Gecko/1929-02-10 Firefox/37.0\" \"-\"","countryme":"Italy"},
      "category": "cat-1",
      "className": "class-1",
      "methodName": "method-1",
      "threadId": "thread-1"
    }]'

L'opzione -v fornisce un output dettagliato che può aiutare a determinare se il comando è stato completato correttamente o se si sono verificati problemi di autorizzazione o di connettività.