Senden von Protokolldaten an Log Analytics mit der HTTP Data Collector-API
Mit der AZURE Log Analytics-HTTP-Datensammler-API können Sie JSON-Daten von jedem Client, der die REST-API aufrufen kann, in einen Log Analytics-Arbeitsbereich postieren. Mit dieser Methode können Sie Daten aus Anwendungen von Drittanbietern oder aus Skripts senden, z. B. aus einem Runbook in Azure Automation
Anforderungs-URI
Um Ihren Log Analytics-Arbeitsbereich anzugeben, ersetzen Sie {CustomerID} durch die ID Ihres Arbeitsbereichs.
Methode | Anforderungs-URI |
---|---|
Posten | https://{CustomerID}.ods.opinsights.azure.com/< Resource>?api-version=2016-04-01 |
Anforderung | URI-Parameter |
---|---|
Parameter | BESCHREIBUNG |
CustomerID | Eindeutiger Bezeichner für den Log Analytics-Arbeitsbereich |
Resource | API-Ressourcenname. /api/logs |
API-Version | Version der API, die mit dieser Anforderung verwendet werden soll. Aktuell 2016-04-01 |
Anforderungsheader
Die Anforderungsheader in der folgenden Tabelle sind erforderlich.
Header | BESCHREIBUNG |
---|---|
Authorization | Weitere Informationen zum Erstellen eines HMAC-SHA256-Headers finden Sie weiter unten. |
Content-Type | Erforderlich. Legen Sie dies auf application/json fest. |
Log-Type | Ermöglicht es Ihnen, den Namen der gesendeten Nachricht anzugeben. Derzeit unterstützt der Protokolltyp nur Alphazeichen. Numerische oder Sonderzeichen werden nicht unterstützt. |
x-ms-date | Das Datum, an dem die Anforderung im RFC 1123-Format verarbeitet wurde |
time-generated-field | Ermöglicht das Angeben des Zeitstempelfelds der Nachricht, das als TimeGenerated-Feld verwendet werden soll. Dadurch können Sie TimeGenerated konfigurieren, um den tatsächlichen Zeitstempel aus den Nachrichtendaten widerzuspiegeln. Wenn dieses Feld nicht angegeben ist, ist die Standardeinstellung für TimeGenerated, wenn die Nachricht erfasst wird. Das angegebene Nachrichtenfeld sollte der ISO 8601 von JJJJ-MM-TTThh:mm:ssZ entsprechen. |
Authorization header (Autorisierungsheader)
Jede Anforderung an die LOG ANALYTICS-HTTP-Datensammler-API muss den Autorisierungsheader enthalten. Um eine Anforderung zu authentifizieren, müssen Sie die Anforderung entweder mit dem primären oder sekundären Schlüssel für den Arbeitsbereich signieren, der die Anforderung stellt, und diese Signatur als Teil der Anforderung übergeben.
Das Format für den Autorisierungsheader lautet wie folgt:
Authorization: SharedKey <WorkspaceID>:<Signature>
WorkspaceID ist der eindeutige Identifer für den Log Analytics-Arbeitsbereich, und Signature ist ein Hash-based Message Authentication Code (HMAC), der aus der Anforderung erstellt und mithilfe des SHA256-Algorithmus berechnet und dann mithilfe der Base64-Codierung codiert wird.
Erstellen der Signaturzeichenfolge
Verwenden Sie zum Codieren der Signaturzeichenfolge für gemeinsam genutzten Schlüssel das folgende Format:
StringToSign = VERB + "\n" +
Content-Length + "\n" +
Content-Type + "\n" +
x-ms-date + "\n" +
"/api/logs";
Das folgende Beispiel zeigt eine Signaturzeichenfolge:
POST \n1024\napplication/json\nx-ms-date:Mon, 04 Apr 2016 08:00:00 GMT\n/api/logs
Codieren Sie als Nächstes diese Zeichenfolge mithilfe des HMAC-SHA256-Algorithmus über die UTF-8-codierte Signaturzeichenfolge, erstellen Sie den Autorisierungsheader, und fügen Sie den Header der Anforderung hinzu.
Codieren der Signatur
Um die Signatur zu codieren, rufen Sie den HMAC-SHA256-Algorithmus für die in UTF-8 codierte Signaturzeichenfolge auf, und codieren Sie das Ergebnis als Base64. Verwenden Sie folgendes Format (als Pseudocode angezeigt):
Signature=Base64(HMAC-SHA256(UTF8(StringToSign)))
Anforderungstext
Der Textkörper der Nachricht, die an den Endpunkt gesendet wird.
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4"
}
Sie können mehrere Nachrichten desselben Typs in einen einzelnen Anforderungstext batchieren.
[
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4"
},
{
"key1": "value5",
"key2": "value6",
"key3": "value7",
"key4": "value8"
}
]
Datengrenzwerte
Für die Daten, die an die Datensammlungs-API von Log Analytics gesendet werden, gelten einige Einschränkungen.
- Maximal 30 MB pro Sendung an die Datensammlungs-API von Log Analytics. Diese Größenbeschränkung gilt für eine einzelne Sendung. Wenn eine einzelne Sendung mehr als 30 MB Daten enthält, teilen Sie die Daten auf, und senden Sie kleinere Datenblöcke gleichzeitig.
- Maximal 32 KB für Feldwerte. Wenn ein Feldwert größer ist als 32 KB, werden die Daten abgeschnitten.
- Die empfohlene maximale Anzahl von Feldern eines bestimmten Typs beträgt 50. Dies ist aus Sicht der Benutzerfreundlichkeit und Suchleistung ein praktikabler Wert.