Envoyer des données de journal à Log Analytics avec l’API collecteur de données HTTP
L’API Collecteur de données HTTP Azure Log Analytics vous permet d’envoyer des données POST JSON à un espace de travail Log Analytics à partir de n’importe quel client qui peut appeler l’API REST. À l’aide de cette méthode, vous pouvez envoyer des données à partir d’applications tierces ou de scripts, comme à partir d’un runbook dans Azure Automation
URI de demande
Pour spécifier votre espace de travail Log Analytics, remplacez {CustomerID} par l’ID de votre espace de travail.
Méthode | URI de demande |
---|---|
Publier | https://{CustomerID}.ods.opinsights.azure.com/< Resource>?api-version=2016-04-01 |
Requête | Paramètres URI |
---|---|
Paramètre | Description |
CustomerID | Identificateur unique pour l’espace de travail Log Analytics |
Ressource | Nom de la ressource API. /api/logs |
Version d'API | Version de l’API à utiliser avec cette demande. Actuellement 01-04-2016 |
En-têtes de requête
Les en-têtes de demande dans le tableau suivant sont nécessaires.
En-tête | Description |
---|---|
Autorisation | Consultez les informations supplémentaires ci-dessous sur la création d’un en-tête HMAC-SHA256 |
Content-Type | Obligatoire. Définissez cette valeur sur application/json |
Log-Type | Vous permet de spécifier le nom du message envoyé. Actuellement, le type de journal prend uniquement en charge les caractères alpha. Il ne prend pas en charge les chiffres ou les caractères spéciaux |
x-ms-date | Date à laquelle la demande a été traitée au format RFC 1123 |
time-generated-field | Vous permet de spécifier le champ d’horodatage du message à utiliser comme champ TimeGenerated. Cela vous permet de configurer timeGenerated pour qu’il reflète l’horodatage réel des données de message. Si ce champ n’est pas spécifié, la valeur par défaut pour TimeGenerated lorsque le message est ingéré. Le champ de message spécifié doit suivre la norme ISO 8601 de AAAA-MM-JJThh:mm:ssZ |
En-tête d’autorisation.
Toute demande adressée à l’API Collecteur de données HTTP Log Analytics doit inclure l’en-tête Autorisation. Pour authentifier une demande, vous devez signer la demande avec la clé primaire ou secondaire de l’espace de travail qui effectue la demande et passer cette signature dans le cadre de la demande.
Le format de l’en-tête d’autorisation est le suivant :
Authorization: SharedKey <WorkspaceID>:<Signature>
WorkspaceID est l’identifiant unique de l’espace de travail Log Analytics, et Signature est un code HMAC (Hash-based Message Authentication Code) construit à partir de la requête et calculé à l’aide de l’algorithme SHA256, puis encodé à l’aide de l’encodage Base64.
Construction de la chaîne de signature
Pour encoder la chaîne de signature de clé partagée, utilisez le format suivant :
StringToSign = VERB + "\n" +
Content-Length + "\n" +
Content-Type + "\n" +
x-ms-date + "\n" +
"/api/logs";
L’exemple suivant montre une chaîne de signature :
POST \n1024\napplication/json\nx-ms-date:Mon, 04 Apr 2016 08:00:00 GMT\n/api/logs
Ensuite, encodez cette chaîne à l’aide de l’algorithme HMAC-SHA256 sur la chaîne de signature encodée en UTF-8, construisez l’en-tête Authorization et ajoutez l’en-tête à la demande.
Encodage de la signature
Pour encoder la signature, appelez l'algorithme HMAC-SHA256 dans la chaîne de signature encodée en UTF-8 et encodez le résultat en Base64. Utilisez le format suivant (affiché comme pseudocode) :
Signature=Base64(HMAC-SHA256(UTF8(StringToSign)))
Corps de la demande
Corps du message envoyé au point de terminaison.
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4"
}
Vous pouvez traiter plusieurs messages du même type dans un seul corps de requête.
[
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4"
},
{
"key1": "value5",
"key2": "value6",
"key3": "value7",
"key4": "value8"
}
]
Limites de données
Il existe certaines contraintes sur les données publiées sur l’API de collecte de données de Log Analytics.
- Un maximum de 30 Mo par publication sur l’API de collecte de données de Log Analytics. Il s’agit d’une limite de taille pour une publication unique. Si les données d’une publication unique sont supérieures à 30 Mo, vous devrez fractionner les données en segments de plus petite taille et les envoyer simultanément.
- Maximum de 32 Ko pour les valeurs de champ. Si la valeur de champ est supérieure à 32 Ko, les données seront tronquées.
- Le nombre maximal recommandé de champs pour un type donné est 50. Il s’agit d’une limite pratique du point de vue de la facilité d’utilisation et de l’expérience de recherche.