Envoi de journaux à l'aide de l'API

Vous pouvez envoyer des journaux à une instance IBM Cloud Logs en utilisant l'API d'ingestion.

S'authentifier à l'aide d'un jeton de porteur

Vous devez obtenir un jeton d'accès IBM Cloud® Identity and Access Management (IAM) pour authentifier vos demandes.

Pour obtenir votre jeton à l'aide de la CLI d'IBM Cloud, procédez comme suit :

  1. Connectez-vous à IBM Cloud.

    Assurez-vous que l'entité avec laquelle vous vous connectez a le rôle 'Sender pour le service IBM Cloud Logs

  2. Exécutez la commande suivante :

    ibmcloud iam oauth-tokens
    
  3. Placer ce jeton dans l'en-tête Authorization de la requête HTTP sous la forme Bearer .

Par exemple, vous pouvez extraire votre jeton bearer IAM et l'exporter en tant que variable d'environnement en exécutant la commande CLI suivante:

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

Envoyer des journaux en utilisant cURL

Le tableau suivant présente les détails du noeud final:

Détails du point d'arrivée de l'ingestion de singles
Détails Valeur
URL <INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles
HTTP Method POST
En-tête Content-Type application/json
En-tête Authorization Bearer $IAM_TOKEN

  • INSTANCE_ID: identificateur global unique de l'instance IBM Cloud Logs dans laquelle vous souhaitez envoyer les journaux.
  • REGION: Région où se trouve l'instance IBM Cloud Logs
  • IAM_TOKEN: Jeton bearer IAM utilisé pour demander une autorisation à seng pour les journaux. La valeur de pemission logs.data.send est requise.

Utilisez la commande cURL suivante pour envoyer une ligne de journal :

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

Le tableau suivant décrit les objets JSON que vous pouvez inclure par ligne de journal dans une demande:

tableau d'objets JSON
Nom de propriété Type de propriété Obligatoire Informations complémentaires
applicationName string Oui
subsystemName string Oui
text string/json Oui Si vous utilisez Ajax ou une technologie similaire, vous devrez peut-être envoyer les données avec JSON.stringify().
severity number Non 1 – Debug
2 – Verbose
3 – Info
4 – Warn
5 – Error
6 – Critical
Si cette option n'est pas spécifiée, 1 – Debug sera utilisé.
timestamp number Non Temps universel coordonné en millisecondes. S'il n'est pas spécifié, l'heure à laquelle le journal atteint la porte sera utilisée.
computerName string Non
category string Non
className string Non
methodName string Non
threadId string Non
hiResTimestamp string Non Nanosecondes UTC

Si vous ne spécifiez pas severity, la gravité 1 – Debug est affectée aux journaux.

Vous pouvez envoyer jusqu'à 2MB par demande, soit environ 3 000 journaux de taille moyenne.

Par exemple, vous pouvez exécuter la commande suivante pour envoyer des journaux à une instance de la région 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'option -v fournit une sortie prolixe qui peut vous aider à déterminer si la commande a abouti ou s'il y a eu des problèmes d'autorisation ou de connectivité.