Odesílání dat protokolu do služby Azure Monitor pomocí rozhraní API kolektoru dat HTTP (zastaralé)
V tomto článku se dozvíte, jak pomocí rozhraní API kolektoru dat HTTP odesílat data protokolů do služby Azure Monitor z klienta REST API. Popisuje, jak formátovat data shromážděná vaším skriptem nebo aplikací, zahrnout je do požadavku a nechat ji autorizovat službou Azure Monitor. Poskytujeme příklady pro Azure PowerShell, C# a Python.
Poznámka:
Rozhraní API kolektoru dat HTTP služby Azure Monitor je zastaralé a od 14. 9. 2026 už nebude funkční. Nahradilo ho rozhraní API pro příjem protokolů.
Koncepty
Rozhraní API kolektoru dat HTTP můžete použít k odesílání dat protokolu do pracovního prostoru služby Log Analytics ve službě Azure Monitor z libovolného klienta, který může volat rozhraní REST API. Klientem může být runbook ve službě Azure Automation, který shromažďuje data správy z Azure nebo jiného cloudu, nebo se může jednat o alternativní systém pro správu, který ke konsolidaci a analýze dat protokolů používá Azure Monitor.
Všechna data v pracovním prostoru služby Log Analytics se ukládají jako záznam s konkrétním typem záznamu. Data naformátujete tak, aby se odesílala do rozhraní API kolektoru dat HTTP jako více záznamů ve formátu JSON (JavaScript Object Notation). Při odesílání dat se v úložišti vytvoří jednotlivý záznam pro každý záznam v datové části požadavku.
Vytvořit žádost
Pokud chcete použít rozhraní API kolektoru dat HTTP, vytvoříte požadavek POST, který obsahuje data, která se mají odeslat ve formátu JSON. Následující tři tabulky uvádějí atributy, které jsou požadovány pro každý požadavek. Jednotlivé atributy podrobněji popíšeme dále v článku.
Identifikátor URI žádosti
Atribut | Vlastnost |
---|---|
metoda | POST |
Identifikátor URI | <https:// CustomerId.ods.opinsights.azure.com/api/logs?api-version=2016-04-01> |
Typ obsahu | application/json |
Parametry identifikátoru URI požadavku
Parametr | Popis |
---|---|
CustomerID | Jedinečný identifikátor pracovního prostoru služby Log Analytics. |
Prostředek | Název prostředku rozhraní API: /api/logs. |
Verze rozhraní API | Verze rozhraní API, která se má použít s tímto požadavkem. V současné době je verze 2016-04-01. |
Záhlaví žádosti
Hlavička | Popis |
---|---|
Autorizace | Podpis autorizace. Později v článku si můžete přečíst, jak vytvořit hlavičku HMAC-SHA256. |
Typ protokolu | Zadejte typ záznamu odesílaných dat. Může obsahovat pouze písmena, číslice a podtržítko (_) a nesmí překročit 100 znaků. |
x-ms-date | Datum zpracování požadavku ve formátu RFC 1123 . |
x-ms-AzureResourceId | ID prostředku Azure, ke kterému by měla být data přidružená. Naplní vlastnost _ResourceId a umožní zahrnutí dat do dotazů kontextu prostředků. Pokud toto pole není zadané, nebudou data zahrnuta do dotazů kontextu prostředků. |
pole vygenerované časem | Název pole v datech, která obsahuje časové razítko položky dat. Pokud zadáte pole, použije se jeho obsah pro TimeGenerated. Pokud toto pole nezadáte, výchozí hodnota pro TimeGenerated je čas, kdy se zpráva ingestuje. Obsah pole zprávy by měl odpovídat formátu ISO 8601 RRRR-MM-DDThh:mm:ssZ. Hodnota Generovaná časem nemůže být starší než 2 dny před přijetím času nebo více než den v budoucnu. V takovém případě se použije čas, kdy se zpráva ingestuje. |
Autorizace
Každý požadavek na rozhraní API kolektoru dat HTTP služby Azure Monitor musí obsahovat autorizační hlavičku. Pokud chcete žádost ověřit, podepište požadavek buď primárním, nebo sekundárním klíčem pracovního prostoru, který požadavek vytváří. Pak tento podpis předejte jako součást požadavku.
Tady je formát autorizační hlavičky:
Authorization: SharedKey <WorkspaceID>:<Signature>
ID pracovního prostoru je jedinečný identifikátor pracovního prostoru služby Log Analytics. Podpis je kód HMAC (Hash-based Message Authentication Code), který je vytvořený z požadavku a pak vypočítá pomocí algoritmu SHA256. Pak ho zakódujete pomocí kódování Base64.
Tento formát použijte ke kódování řetězce podpisu SharedKey :
StringToSign = VERB + "\n" +
Content-Length + "\n" +
Content-Type + "\n" +
"x-ms-date:" + x-ms-date + "\n" +
"/api/logs";
Tady je příklad řetězce podpisu:
POST\n1024\napplication/json\nx-ms-date:Mon, 04 Apr 2016 08:00:00 GMT\n/api/logs
Pokud máte řetězec podpisu, zakódujte ho pomocí algoritmu HMAC-SHA256 v řetězci s kódováním UTF-8 a potom výsledek zakódujte jako Base64. Použijte tento formát:
Signature=Base64(HMAC-SHA256(UTF8(StringToSign)))
Ukázky v dalších částech obsahují vzorový kód, který vám pomůže vytvořit autorizační hlavičku.
Text požadavku
Text zprávy musí být ve formátu JSON. Musí obsahovat jeden nebo více záznamů s páry názvu vlastnosti a hodnoty v následujícím formátu. Název vlastnosti může obsahovat pouze písmena, číslice a znak podtržítka (_).
[
{
"property 1": "value1",
"property 2": "value2",
"property 3": "value3",
"property 4": "value4"
}
]
V jednom požadavku můžete dosáčet více záznamů pomocí následujícího formátu. Všechny záznamy musí být stejného typu záznamu.
[
{
"property 1": "value1",
"property 2": "value2",
"property 3": "value3",
"property 4": "value4"
},
{
"property 1": "value1",
"property 2": "value2",
"property 3": "value3",
"property 4": "value4"
}
]
Typ a vlastnosti záznamu
Při odesílání dat prostřednictvím rozhraní API kolektoru dat HTTP služby Azure Monitor definujete vlastní typ záznamu. V současné době nemůžete zapisovat data do existujících typů záznamů, které byly vytvořeny jinými datovými typy a řešeními. Azure Monitor přečte příchozí data a pak vytvoří vlastnosti, které odpovídají datovým typům zadaných hodnot.
Každý požadavek na rozhraní API kolektoru dat musí obsahovat hlavičku typu protokolu s názvem pro typ záznamu. Přípona _CL se automaticky připojí k zadanému názvu, aby se odlišila od jiných typů protokolů jako vlastní protokol. Pokud například zadáte název MyNewRecordType, Azure Monitor vytvoří záznam s typem MyNewRecordType_CL. To pomáhá zajistit, aby nedošlo ke konfliktům mezi uživatelsky vytvořenými názvy typů a názvy dodaných v aktuálních nebo budoucích řešeních Společnosti Microsoft.
K identifikaci datového typu vlastnosti přidá Azure Monitor k názvu vlastnosti příponu. Pokud vlastnost obsahuje hodnotu null, vlastnost není zahrnuta v tomto záznamu. Tato tabulka uvádí datový typ vlastnosti a odpovídající příponu:
Datový typ vlastnosti | Přípona |
---|---|
String | _s |
Logická hodnota | _b |
Hodnota s dvojitou přesností | _d |
Datum/čas | _t |
GUID (uložený jako řetězec) | _g |
Poznámka:
Řetězcové hodnoty, které se jeví jako identifikátory GUID, mají příponu _g a formátují se jako identifikátor GUID, i když příchozí hodnota neobsahuje pomlčky. Příklad: "8145d822-13a7-44ad-859c-36f31a84f6dd" a "8145d82213a744ad859c36f31a84f6dd" jsou uloženy jako "8145d822-13a7-44ad-859c-36f31a84f6dd". Jedinými rozdíly mezi tímto a jiným řetězcem jsou _g v názvu a vložení pomlček, pokud nejsou zadané ve vstupu.
Datový typ, který Azure Monitor používá pro každou vlastnost, závisí na tom, jestli typ záznamu pro nový záznam již existuje.
- Pokud typ záznamu neexistuje, Azure Monitor vytvoří nový pomocí odvození typu JSON k určení datového typu pro každou vlastnost nového záznamu.
- Pokud typ záznamu existuje, Azure Monitor se pokusí vytvořit nový záznam na základě existujících vlastností. Pokud se datový typ vlastnosti v novém záznamu neshoduje a nedá se převést na existující typ nebo pokud záznam obsahuje vlastnost, která neexistuje, Azure Monitor vytvoří novou vlastnost s příslušnou příponou.
Například následující položka pro odeslání vytvoří záznam se třemi vlastnostmi, number_d, boolean_b a string_s:
Pokud byste chtěli odeslat tuto další položku se všemi hodnotami formátovanými jako řetězce, vlastnosti se nezměnily. Hodnoty můžete převést na existující datové typy.
Pokud ale provedete toto další odeslání, Azure Monitor vytvoří nové vlastnosti boolean_d a string_d. Tyto hodnoty nelze převést.
Pokud pak před vytvořením typu záznamu odešlete následující položku, azure Monitor vytvoří záznam se třemi vlastnostmi, number_s, boolean_s a string_s. V této položce je každá z počátečních hodnot formátována jako řetězec:
Rezervované vlastnosti
Následující vlastnosti jsou rezervované a neměly by se používat ve vlastním typu záznamu. Pokud datová část obsahuje některý z těchto názvů vlastností, zobrazí se chyba:
- klient
- TimeGenerated
- RawData
Omezení dat
Data odesílaná do rozhraní API pro shromažďování dat služby Azure Monitor podléhají určitým omezením:
- Maximálně 30 MB na příspěvek do rozhraní API kolektoru dat služby Azure Monitor. Toto je limit velikosti pro jeden příspěvek. Pokud data z jednoho příspěvku překročí 30 MB, měli byste je rozdělit do bloků s menší velikostí a současně je odeslat.
- Maximálně 32 kB pro hodnoty polí. Pokud je hodnota pole větší než 32 kB, data se oříznou.
- Doporučeno maximálně 50 polí pro daný typ. Tento limit je praktický z hlediska použitelnosti a vyhledávání.
- Tabulky v pracovních prostorech služby Log Analytics podporují pouze 500 sloupců (označovaných jako pole v tomto článku).
- Maximálně 45 znaků pro názvy sloupců.
Návratové kódy
Stavový kód HTTP 200 znamená, že požadavek byl přijat ke zpracování. To znamená, že operace byla úspěšně dokončena.
Kompletní sada stavových kódů, které může služba vrátit, je uvedená v následující tabulce:
Kód | Stav | Kód chyby | Popis |
---|---|---|---|
200 | OK | Požadavek byl úspěšně přijat. | |
400 | Chybný požadavek | InactiveCustomer | Pracovní prostor byl zavřený. |
400 | Chybný požadavek | InvalidApiVersion | Zadaná verze rozhraní API nebyla službou rozpoznána. |
400 | Chybný požadavek | InvalidCustomerId | Zadané ID pracovního prostoru je neplatné. |
400 | Chybný požadavek | InvalidDataFormat | Byl odeslán neplatný kód JSON. Tělo odpovědi může obsahovat další informace o tom, jak chybu vyřešit. |
400 | Chybný požadavek | InvalidLogType | Zadaný typ protokolu obsahoval speciální znaky nebo číslice. |
400 | Chybný požadavek | MissingApiVersion | Verze rozhraní API nebyla zadána. |
400 | Chybný požadavek | MissingContentType | Typ obsahu nebyl zadán. |
400 | Chybný požadavek | MissingLogType | Nebyl zadán požadovaný typ protokolu hodnot. |
400 | Chybný požadavek | Nepodporovaný typContentType | Typ obsahu nebyl nastaven na application/json. |
403 | Zakázáno | InvalidAuthorization | Službě se nepodařilo ověřit požadavek. Ověřte, že ID pracovního prostoru a klíč připojení jsou platné. |
404 | Nenalezeno | Zadaná adresa URL je nesprávná nebo je požadavek příliš velký. | |
429 | Příliš mnoho požadavků | U služby dochází k velkému objemu dat z vašeho účtu. Zkuste žádost zopakovat později. | |
500 | Vnitřní chyba serveru | Nezadaná chyba | Služba zjistila vnitřní chybu. Zkuste žádost zopakovat. |
503 | Nedostupná služba | ServiceUnavailable | Služba momentálně není k dispozici pro příjem požadavků. Zkuste prosím žádost zopakovat. |
Zadávání dotazů na data
Pokud chcete dotazovat data odesílaná rozhraním API kolektoru dat SLUŽBY Azure Monitor, vyhledejte záznamy, jejichž typ je roven hodnotě LogType , kterou jste zadali a připojili pomocí _CL. Pokud jste například použili MyCustomLog, vrátili byste všechny záznamy s MyCustomLog_CL
.
Ukázkové požadavky
V této části jsou ukázky, které ukazují, jak odesílat data do rozhraní API kolektoru dat HTTP služby Azure Monitor pomocí různých programovacích jazyků.
Pro každou ukázku nastavte proměnné pro autorizační hlavičku následujícím způsobem:
- Na webu Azure Portal vyhledejte pracovní prostor služby Log Analytics.
- Vyberte agenty.
- Napravo od ID pracovního prostoru vyberte ikonu Kopírovat a pak id vložte jako hodnotu proměnné ID zákazníka.
- Napravo od primárního klíče vyberte ikonu Kopírovat a pak jako hodnotu proměnné sdíleného klíče vložte ID.
Případně můžete změnit proměnné pro typ protokolu a data JSON.
# Replace with your Workspace ID
$CustomerId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
# Replace with your Primary Key
$SharedKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# Specify the name of the record type that you'll be creating
$LogType = "MyRecordType"
# Optional name of a field that includes the timestamp for the data. If the time field is not specified, Azure Monitor assumes the time is the message ingestion time
$TimeStampField = ""
# Create two records with the same set of properties to create
$json = @"
[{ "StringValue": "MyString1",
"NumberValue": 42,
"BooleanValue": true,
"DateValue": "2019-09-12T20:00:00.625Z",
"GUIDValue": "9909ED01-A74C-4874-8ABF-D2678E3AE23D"
},
{ "StringValue": "MyString2",
"NumberValue": 43,
"BooleanValue": false,
"DateValue": "2019-09-12T20:00:00.625Z",
"GUIDValue": "8809ED01-A74C-4874-8ABF-D2678E3AE23D"
}]
"@
# Create the function to create the authorization signature
Function Build-Signature ($customerId, $sharedKey, $date, $contentLength, $method, $contentType, $resource)
{
$xHeaders = "x-ms-date:" + $date
$stringToHash = $method + "`n" + $contentLength + "`n" + $contentType + "`n" + $xHeaders + "`n" + $resource
$bytesToHash = [Text.Encoding]::UTF8.GetBytes($stringToHash)
$keyBytes = [Convert]::FromBase64String($sharedKey)
$sha256 = New-Object System.Security.Cryptography.HMACSHA256
$sha256.Key = $keyBytes
$calculatedHash = $sha256.ComputeHash($bytesToHash)
$encodedHash = [Convert]::ToBase64String($calculatedHash)
$authorization = 'SharedKey {0}:{1}' -f $customerId,$encodedHash
return $authorization
}
# Create the function to create and post the request
Function Post-LogAnalyticsData($customerId, $sharedKey, $body, $logType)
{
$method = "POST"
$contentType = "application/json"
$resource = "/api/logs"
$rfc1123date = [DateTime]::UtcNow.ToString("r")
$contentLength = $body.Length
$signature = Build-Signature `
-customerId $customerId `
-sharedKey $sharedKey `
-date $rfc1123date `
-contentLength $contentLength `
-method $method `
-contentType $contentType `
-resource $resource
$uri = "https://" + $customerId + ".ods.opinsights.azure.com" + $resource + "?api-version=2016-04-01"
$headers = @{
"Authorization" = $signature;
"Log-Type" = $logType;
"x-ms-date" = $rfc1123date;
"time-generated-field" = $TimeStampField;
}
$response = Invoke-WebRequest -Uri $uri -Method $method -ContentType $contentType -Headers $headers -Body $body -UseBasicParsing
return $response.StatusCode
}
# Submit the data to the API endpoint
Post-LogAnalyticsData -customerId $customerId -sharedKey $sharedKey -body ([System.Text.Encoding]::UTF8.GetBytes($json)) -logType $logType
Alternativy a důležité informace
I když by rozhraní API kolektoru dat mělo pokrýt většinu vašich potřeb při shromažďování bezplatných dat do protokolů Azure, můžete vyžadovat alternativní přístup k překonání některých omezení rozhraní API. Možnosti, včetně důležitých aspektů, jsou uvedené v následující tabulce:
Alternativa | Popis | Nejvhodnější pro |
---|---|---|
Vlastní události: Příjem dat založený na nativní sadě SDK v Application Insights | Application Insights, obvykle instrumentované prostřednictvím sady SDK v rámci vaší aplikace, umožňuje odesílat vlastní data prostřednictvím vlastních událostí. |
|
Rozhraní API kolektoru dat v protokolech služby Azure Monitor | Rozhraní API kolektoru dat v protokolech služby Azure Monitor je zcela otevřený způsob, jak ingestovat data. Sem se dají odeslat všechna data formátovaná v objektu JSON. Po odeslání se zpracuje a zpřístupní v protokolech monitorování, aby bylo možné korelovat s dalšími daty v protokolech monitorování nebo s jinými daty Application Insights. Je poměrně snadné nahrát data jako soubory do objektu blob služby Azure Blob Storage, kde se soubory zpracují a pak nahrají do Log Analytics. Ukázkovou implementaci najdete v tématu Vytvoření datového kanálu pomocí rozhraní API kolektoru dat. |
|
Azure Data Explorer | Azure Data Explorer, nyní obecně dostupný pro veřejnost, je datová platforma, která využívá Application Insights Analytics a protokoly služby Azure Monitor. Díky použití datové platformy v nezpracované podobě máte úplnou flexibilitu (ale vyžaduje režii při správě) clusteru (řízení přístupu na základě role Kubernetes (RBAC), rychlost uchovávání, schéma atd.). Azure Data Explorer nabízí řadu možností příjmu dat, včetně souborů CSV, TSV a JSON . |
|
Další kroky
K načtení dat z pracovního prostoru služby Log Analytics použijte rozhraní API pro prohledávání protokolů.
Přečtěte si další informace o tom, jak vytvořit datový kanál pomocí rozhraní API kolektoru dat pomocí pracovního postupu Logic Apps ve službě Azure Monitor.