Senden von Protokollen über die API

Sie können Protokolle an eine IBM Cloud Logs Instanz senden, indem Sie die Ingestion API verwenden.

Authentifizierung durch Verwendung eines Inhaber-Tokens

Sie müssen ein Zugriffstoken für IBM Cloud® Identity and Access Management (IAM) abrufen, um Ihre Anforderungen zu authentifizieren.

Um Ihr Token mithilfe der IBM Cloud CLI zu erhalten, führen Sie die folgenden Schritte aus:

  1. Melden Sie sich bei IBM Cloud an.

    Stellen Sie sicher, dass die Entität, mit der Sie sich anmelden, die Rolle ' Sender für den Dienst IBM Cloud Logs hat.

  2. Führen Sie den folgenden Befehl aus:

    ibmcloud iam oauth-tokens
    
  3. Setzen Sie dieses Token in den Authorization-Header der HTTP in der Form Bearer .

Sie können beispielsweise Ihr IAM-Trägertoken abrufen und als Umgebungsvariable exportieren, wenn Sie den folgenden CLI-Befehl ausführen:

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

Senden von Protokollen mit cURL

In der folgenden Tabelle sind die Endpunktdetails aufgeführt:

Details zum Ingestion-Endpunkt für Einzelpersonen
Detail Wert
URL <INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles
HTTP Method POST
Header Content-Type application/json
Header Authorization Bearer $IAM_TOKEN

Wo

  • INSTANCE_ID: GUID der Instanz von IBM Cloud Logs, an die Protokolle gesendet werden sollen
  • REGION: Region, in der sich die Instanz IBM Cloud Logs befindet.
  • IAM_TOKEN: IAM-Trägertoken, das verwendet wird, um die Berechtigung zum Senden an Protokolle anzufordern. Die pemission logs.data.send ist erforderlich.

Verwenden Sie den folgenden cURL, um eine Protokollzeile zu senden:

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"
    }]'

In der folgenden Tabelle sind die JSON-Objekte aufgeführt, die Sie pro Protokollzeile in eine Anforderung einschließen können:

Array von JSON-Objekten
Eigenschaftsname Merkmaltyp Erforderlich Weitere Informationen
applicationName string Ja
subsystemName string Ja
text string/json Ja Wenn Sie Ajax oder eine ähnliche Technologie verwenden, müssen Sie die Daten möglicherweise mit JSON.stringify() senden.
severity number Nein 1 – Debug
2 – Verbose
3 – Info
4 – Warn
5 – Error
6 – Critical
Wird kein Wert angegeben, wird 1 – Debug verwendet.
timestamp number Nein UTC-Millisekunden. Wenn keine Angabe gemacht wird, wird die Zeit verwendet, zu der das Protokoll das Gate erreicht.
computerName string Nein
category string Nein
className string Nein
methodName string Nein
threadId string Nein
hiResTimestamp string Nein UTC-Nanosekunden

Wenn Sie severity nicht angeben, wird Protokollen die Wertigkeit 1 – Debug zugeordnet.

Sie können bis zu 2MB pro Anforderung senden. Dies sind ca. 3.000 mittelgroße Protokolle.

Sie können beispielsweise den folgenden Befehl ausführen, um Protokolle an eine Instanz in der eu-es-Region zu senden:

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"
    }]'

Die Option -v stellt eine ausführliche Ausgabe bereit, mit deren Hilfe Sie ermitteln können, ob der Befehl erfolgreich ausgeführt wurde oder ob Berechtigungs-oder Konnektivitätsprobleme aufgetreten sind.