Nainstalujte klientskou knihovnu pro příjem dat služby Azure Monitor a knihovnu identit Azure. Pro ověřování použité v této ukázce se vyžaduje knihovna identit Azure.
Vytvořte následující proměnné prostředí s hodnotami pro vaši aplikaci Microsoft Entra. Tyto hodnoty se používají DefaultAzureCredential v knihovně identit Azure.
AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
Nahraďte proměnné v následujícím vzorovém kódu hodnotami z vašeho DCR. Ukázková data můžete také nahradit vlastními daty.
using Azure;
using Azure.Core;
using Azure.Identity;
using Azure.Monitor.Ingestion;
// Initialize variables
var endpoint = new Uri("https://my-url.monitor.azure.com");
var ruleId = "dcr-00000000000000000000000000000000";
var streamName = "Custom-MyTableRawData";
// Create credential and client
var credential = new DefaultAzureCredential();
LogsIngestionClient client = new(endpoint, credential);
DateTimeOffset currentTime = DateTimeOffset.UtcNow;
// Use BinaryData to serialize instances of an anonymous type into JSON
BinaryData data = BinaryData.FromObjectAsJson(
new[] {
new
{
Time = currentTime,
Computer = "Computer1",
AdditionalContext = new
{
InstanceName = "user1",
TimeZone = "Pacific Time",
Level = 4,
CounterName = "AppMetric1",
CounterValue = 15.3
}
},
new
{
Time = currentTime,
Computer = "Computer2",
AdditionalContext = new
{
InstanceName = "user2",
TimeZone = "Central Time",
Level = 3,
CounterName = "AppMetric1",
CounterValue = 23.5
}
},
});
// Upload logs
try
{
var response = await client.UploadAsync(ruleId, streamName, RequestContent.Create(data)).ConfigureAwait(false);
if (response.IsError)
{
throw new Exception(response.ToString());
}
Console.WriteLine("Log upload completed using content upload");
}
catch (Exception ex)
{
Console.WriteLine("Upload failed with Exception: " + ex.Message);
}
// Logs can also be uploaded in a List
var entries = new List<object>();
for (int i = 0; i < 10; i++)
{
entries.Add(
new
{
Time = currentTime,
Computer = "Computer" + i.ToString(),
AdditionalContext = new
{
InstanceName = "user" + i.ToString(),
TimeZone = "Central Time",
Level = 3,
CounterName = "AppMetric1" + i.ToString(),
CounterValue = i
}
}
);
}
// Make the request
try
{
var response = await client.UploadAsync(ruleId, streamName, entries).ConfigureAwait(false);
if (response.IsError)
{
throw new Exception(response.ToString());
}
Console.WriteLine("Log upload completed using list of entries");
}
catch (Exception ex)
{
Console.WriteLine("Upload failed with Exception: " + ex.Message);
}
Spusťte kód a data by měla docházet do pracovního prostoru služby Log Analytics během několika minut.
Slouží go get k instalaci protokolů příjmu dat služby Azure Monitor a klientských modulů Azure Identity pro Go. Pro ověřování použité v této ukázce se vyžaduje modul Azure Identity.
go get github.com/Azure/azure-sdk-for-go/sdk/monitor/ingestion/azlogs
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Vytvořte následující proměnné prostředí s hodnotami pro vaši aplikaci Microsoft Entra. Tyto hodnoty se používají DefaultAzureCredential v modulu Azure Identity.
AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
Nahraďte proměnné v následujícím vzorovém kódu hodnotami z vašeho DCR. Ukázková data můžete také nahradit vlastními daty.
package main
import (
"context"
"encoding/json"
"strconv"
"time"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/monitor/ingestion/azlogs"
)
// logs ingestion URI
const endpoint = "https://my-url.monitor.azure.com"
// data collection rule (DCR) immutable ID
const ruleID = "dcr-00000000000000000000000000000000"
// stream name in the DCR that represents the destination table
const streamName = "Custom-MyTableRawData"
type Computer struct {
Time time.Time
Computer string
AdditionalContext string
}
func main() {
// creating the client using DefaultAzureCredential
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
//TODO: handle error
}
client, err := azlogs.NewClient(endpoint, cred, nil)
if err != nil {
//TODO: handle error
}
// generating logs
// logs should match the schema defined by the provided stream
var data []Computer
for i := 0; i < 10; i++ {
data = append(data, Computer{
Time: time.Now().UTC(),
Computer: "Computer" + strconv.Itoa(i),
AdditionalContext: "context",
})
}
// marshal data into []byte
logs, err := json.Marshal(data)
if err != nil {
panic(err)
}
// upload logs
_, err = client.Upload(context.TODO(), ruleID, streamName, logs, nil)
if err != nil {
//TODO: handle error
}
}
Spusťte kód a data by měla docházet do pracovního prostoru služby Log Analytics během několika minut.
Zahrňte balíček pro příjem protokolů a azure-identity balíček z knihovny identit Azure. Pro ověřování použité v této ukázce se vyžaduje knihovna identit Azure.
Vytvořte následující proměnné prostředí s hodnotami pro vaši aplikaci Microsoft Entra. Tyto hodnoty se používají DefaultAzureCredential v knihovně identit Azure.
AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
Nahraďte proměnné v následujícím vzorovém kódu hodnotami z vašeho DCR. Ukázková data můžete také nahradit vlastními daty.
Pomocí npm nainstalujte klientské knihovny azure Monitoru pro příjem dat a identitu Azure pro JavaScript. Pro ověřování použité v této ukázce se vyžaduje knihovna identit Azure.
Vytvořte následující proměnné prostředí s hodnotami pro vaši aplikaci Microsoft Entra. Tyto hodnoty se používají DefaultAzureCredential v knihovně identit Azure.
AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
Nahraďte proměnné v následujícím vzorovém kódu hodnotami z vašeho DCR. Ukázková data můžete také nahradit vlastními daty.
Spusťte kód a data by měla docházet do pracovního prostoru služby Log Analytics během několika minut.
Následující kód PowerShellu odesílá data do koncového bodu pomocí základů HTTP REST.
Poznámka:
Tato ukázka vyžaduje PowerShell verze 7.0 nebo novější.
Spusťte následující ukázkový příkaz PowerShellu, který přidá požadované sestavení pro skript.
Add-Type -AssemblyName System.Web
Nahraďte parametry v části Krok 0 hodnotami z vaší aplikace a DCR. Ukázková data v kroku 2 můžete také nahradit vlastními daty.
### Step 0: Set variables required for the rest of the script.
# information needed to authenticate to AAD and obtain a bearer token
$tenantId = "00000000-0000-0000-00000000000000000" #Tenant ID the data collection endpoint resides in
$appId = " 000000000-0000-0000-00000000000000000" #Application ID created and granted permissions
$appSecret = "0000000000000000000000000000000000000000" #Secret created for the application
# information needed to send data to the DCR endpoint
$endpoint_uri = "https://my-url.monitor.azure.com" #Logs ingestion URI for the DCR
$dcrImmutableId = "dcr-00000000000000000000000000000000" #the immutableId property of the DCR object
$streamName = "Custom-MyTableRawData" #name of the stream in the DCR that represents the destination table
### Step 1: Obtain a bearer token used later to authenticate against the DCR.
$scope= [System.Web.HttpUtility]::UrlEncode("https://monitor.azure.com//.default")
$body = "client_id=$appId&scope=$scope&client_secret=$appSecret&grant_type=client_credentials";
$headers = @{"Content-Type"="application/x-www-form-urlencoded"};
$uri = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token"
$bearerToken = (Invoke-RestMethod -Uri $uri -Method "Post" -Body $body -Headers $headers).access_token
### Step 2: Create some sample data.
$currentTime = Get-Date ([datetime]::UtcNow) -Format O
$staticData = @"
[
{
"Time": "$currentTime",
"Computer": "Computer1",
"AdditionalContext": {
"InstanceName": "user1",
"TimeZone": "Pacific Time",
"Level": 4,
"CounterName": "AppMetric1",
"CounterValue": 15.3
}
},
{
"Time": "$currentTime",
"Computer": "Computer2",
"AdditionalContext": {
"InstanceName": "user2",
"TimeZone": "Central Time",
"Level": 3,
"CounterName": "AppMetric1",
"CounterValue": 23.5
}
}
]
"@;
### Step 3: Send the data to the Log Analytics workspace.
$body = $staticData;
$headers = @{"Authorization"="Bearer $bearerToken";"Content-Type"="application/json"};
$uri = "$endpoint_uri/dataCollectionRules/$dcrImmutableId/streams/$($streamName)?api-version=2023-01-01"
$uploadResponse = Invoke-RestMethod -Uri $uri -Method "Post" -Body $body -Headers $headers
Poznámka:
Pokud se Unable to find type [System.Web.HttpUtility]. zobrazí chyba, spusťte poslední řádek v části 1 skriptu pro opravu a spusťte ho. Problém se nevyřeší tím, že ho spustíte bez komentáře v rámci skriptu. Příkaz se musí spustit samostatně.
Spusťte skript a měla by se zobrazit HTTP - 204 odpověď. Data by měla docházet do pracovního prostoru služby Log Analytics během několika minut.
Pomocí nástroje pip nainstalujte klientské knihovny azure Monitoru pro příjem dat a identitu Azure pro Python. Pro ověřování použité v této ukázce se vyžaduje knihovna identit Azure.
Vytvořte následující proměnné prostředí s hodnotami pro vaši aplikaci Microsoft Entra. Tyto hodnoty se používají DefaultAzureCredential v knihovně identit Azure.
AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
Nahraďte proměnné v následujícím vzorovém kódu hodnotami z vašeho DCR. Ukázková data v kroku 2 můžete také nahradit vlastními daty.
# information needed to send data to the DCR endpoint
endpoint_uri = "https://my-url.monitor.azure.com" # logs ingestion endpoint of the DCR
dcr_immutableid = "dcr-00000000000000000000000000000000" # immutableId property of the Data Collection Rule
stream_name = "Custom-MyTableRawData" #name of the stream in the DCR that represents the destination table
# Import required modules
import os
from azure.identity import DefaultAzureCredential
from azure.monitor.ingestion import LogsIngestionClient
from azure.core.exceptions import HttpResponseError
credential = DefaultAzureCredential()
client = LogsIngestionClient(endpoint=endpoint_uri, credential=credential, logging_enable=True)
body = [
{
"Time": "2023-03-12T15:04:48.423211Z",
"Computer": "Computer1",
"AdditionalContext": {
"InstanceName": "user1",
"TimeZone": "Pacific Time",
"Level": 4,
"CounterName": "AppMetric2",
"CounterValue": 35.3
}
},
{
"Time": "2023-03-12T15:04:48.794972Z",
"Computer": "Computer2",
"AdditionalContext": {
"InstanceName": "user2",
"TimeZone": "Central Time",
"Level": 3,
"CounterName": "AppMetric2",
"CounterValue": 43.5
}
}
]
try:
client.upload(rule_id=dcr_immutableid, stream_name=stream_name, logs=body)
except HttpResponseError as e:
print(f"Upload failed: {e}")
Spusťte kód a data by měla docházet do pracovního prostoru služby Log Analytics během několika minut.
Řešení problému
Tato část popisuje různé chybové stavy, které se můžou zobrazit a jak je opravit.
Skript vrátí kód chyby 403.
Ujistěte se, že máte správná oprávnění pro aplikaci k řadiči domény. Možná budete muset počkat až 30 minut, než se oprávnění rozšíří.
Skript vrátí kód chyby 413 nebo upozornění časového limituExpired se zprávou ReadyBody_ClientConnectionAbort v odpovědi.
Zpráva je příliš velká. Maximální velikost zprávy je aktuálně 1 MB na volání.
Skript vrátí kód chyby 429.
Došlo k překročení limitů rozhraní API. Omezení jsou aktuálně nastavená na 500 MB dat za minutu pro komprimovaná i nekomprimovaná data a 300 000 požadavků za minutu. Opakujte akci po době trvání uvedené v Retry-After hlavičce v odpovědi.
Skript vrátí kód chyby 503.
Ujistěte se, že máte správná oprávnění pro aplikaci k řadiči domény. Možná budete muset počkat až 30 minut, než se oprávnění rozšíří.
Nezobrazí se vám chyba, ale data se v pracovním prostoru nezobrazují
Příjem dat může nějakou dobu trvat, zejména při prvním odeslání dat do konkrétní tabulky. Nemělo by to trvat déle než 15 minut.
IntelliSense v Log Analytics nerozpozná novou tabulku
Aktualizace mezipaměti, která řídí technologii IntelliSense, může trvat až 24 hodin.