Inviare dati di log a Log Analytics con l'API dell'agente di raccolta dati HTTP
L'API dell'agente di raccolta dati HTTP di Azure Log Analytics consente di pubblicare dati JSON in un'area di lavoro Log Analytics da qualsiasi client in grado di chiamare l'API REST. Usando questo metodo, è possibile inviare dati da applicazioni di terze parti o da script, ad esempio da un runbook in Automazione di Azure
URI richiesta
Per specificare l'area di lavoro Log Analytics, sostituire {CustomerID} con l'ID dell'area di lavoro.
Metodo | URI richiesta |
---|---|
Pubblica | https://{CustomerID}.ods.opinsights.azure.com/< Resource>?api-version=2016-04-01 |
Richiesta | Parametri dell'URI |
---|---|
Parametro | Descrizione |
CustomerID | Identificatore univoco per l'area di lavoro Log Analytics |
Risorsa | Nome risorsa API. /api/logs |
Versione API | Versione dell'API da usare con questa richiesta. Attualmente 2016-04-01 |
Intestazioni della richiesta
Le intestazioni della richiesta nella tabella seguente sono obbligatorie.
Intestazione | Descrizione |
---|---|
Autorizzazione | Vedere altre informazioni di seguito sulla creazione di un'intestazione HMAC-SHA256 |
Content-Type | Obbligatorio. Impostare questo valore su application/json |
Log-Type | Consente di specificare il nome del messaggio inviato. Attualmente, Il tipo di log supporta solo caratteri alfa. Non supporta numeri o caratteri speciali |
x-ms-date | Data di elaborazione della richiesta in formato RFC 1123 |
time-generated-field | Consente di specificare il campo timestamp del messaggio da utilizzare come campo TimeGenerated. In questo modo è possibile configurare TimeGenerated per riflettere il timestamp effettivo dai dati del messaggio. Se questo campo non viene specificato, il valore predefinito per TimeGenerated quando viene inserito il messaggio. Il campo del messaggio specificato deve seguire l'ISO 8601 di AAAA-MM-GGThh:mm:ssZ |
Authorization header (Intestazione dell'autorizzazione)
Qualsiasi richiesta all'API dell'agente di raccolta dati HTTP di Log Analytics deve includere l'intestazione Authorization. Per autenticare una richiesta, è necessario firmare la richiesta con la chiave primaria o secondaria per l'area di lavoro che effettua la richiesta e passa tale firma come parte della richiesta.
Il formato per l'intestazione Authorization è il seguente:
Authorization: SharedKey <WorkspaceID>:<Signature>
WorkspaceID è l'identificatore univoco per l'area di lavoro Log Analytics e Signature è un codice HMAC (Hash-based Message Authentication Code) costruito dalla richiesta e calcolato usando l'algoritmo SHA256 e quindi codificato usando la codifica Base64.
Costruzione della stringa di firma
Per codificare la stringa di firma della chiave condivisa, usare il formato seguente:
StringToSign = VERB + "\n" +
Content-Length + "\n" +
Content-Type + "\n" +
x-ms-date + "\n" +
"/api/logs";
L'esempio seguente mostra una stringa di firma:
POST \n1024\napplication/json\nx-ms-date:Mon, 04 Apr 2016 08:00:00 GMT\n/api/logs
Codificare quindi questa stringa usando l'algoritmo HMAC-SHA256 sulla stringa di firma con codifica UTF-8, costruire l'intestazione Authorization e aggiungere l'intestazione alla richiesta.
Codifica della firma
Per codificare la firma, chiamare l'algoritmo HMAC-SHA256 nella stringa di firma con codifica UTF-8 e codificare il risultato come Base 64. Usare il formato seguente (indicato come pseudocodice):
Signature=Base64(HMAC-SHA256(UTF8(StringToSign)))
Testo della richiesta
Corpo del messaggio inviato all'endpoint.
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4"
}
È possibile inviare in batch più messaggi dello stesso tipo in un singolo corpo della richiesta.
[
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4"
},
{
"key1": "value5",
"key2": "value6",
"key3": "value7",
"key4": "value8"
}
]
Limiti dei dati
Esistono alcune limitazioni riguardo ai dati pubblicati nell'API per la raccolta dei dati di Log Analytics.
- Limite di 30 MB per post nell'API per la raccolta dei dati di Log Analytics. Questo limite riguarda le dimensioni di ogni messaggio. Se i dati di un singolo post superano i 30 MB, è necessario suddividerli in blocchi di dimensioni inferiori, che andranno inviati contemporaneamente.
- Limite di 32 KB per i valori dei campi. Se il valore di un campo è superiore a 32 KB, i dati verranno troncati.
- Il numero massimo di campi consigliato per un determinato tipo è 50. Si tratta di un limite pratico dal punto di vista dell'usabilità e dell'esperienza di ricerca.