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 :
-
Connectez-vous à IBM Cloud.
Assurez-vous que l'entité avec laquelle vous vous connectez a le rôle '
Senderpour le service IBM Cloud Logs -
Exécutez la commande suivante :
ibmcloud iam oauth-tokens -
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 | 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 |
Où
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 LogsIAM_TOKEN: Jeton bearer IAM utilisé pour demander une autorisation à seng pour les journaux. La valeur de pemissionlogs.data.sendest 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:
| 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 – Debug2 – Verbose3 – Info4 – Warn5 – Error6 – CriticalSi 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é.