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:
-
Accedi a IBM Cloud.
Assicurarsi che l'entità con cui si accede abbia il ruolo '
Senderper il servizio IBM Cloud Logs. -
Esegui il seguente comando:
ibmcloud iam oauth-tokens -
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:
| 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 pemissionelogs.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:
| Nome proprietà | Tipo di proprietà | Obbligatorio | Ulteriori informazioni |
|---|---|---|---|
applicationName |
string |
Sì | |
subsystemName |
string |
Sì | |
text |
string/json |
Sì | Se stai utilizzando Ajax o una tecnologia simile, potresti dover inviare i dati con JSON.stringify(). |
severity |
number |
No | 1 – Debug2 – Verbose3 – Info4 – Warn5 – Error6 – CriticalSe 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à.