Instal pustaka klien Penyerapan Azure Monitor dan pustaka Azure Identity. Pustaka Azure Identity diperlukan untuk autentikasi yang digunakan dalam sampel ini.
Buat variabel lingkungan berikut dengan nilai untuk aplikasi Microsoft Entra Anda. Nilai-nilai ini digunakan oleh DefaultAzureCredential di pustaka Azure Identity.
AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
Ganti variabel dalam kode sampel berikut dengan nilai dari DCE dan DCR Anda. Anda mungkin juga ingin mengganti data sampel dengan data Anda sendiri.
using Azure;
using Azure.Core;
using Azure.Identity;
using Azure.Monitor.Ingestion;
// Initialize variables
var endpoint = new Uri("https://logs-ingestion-rzmk.eastus2-1.ingest.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
{
Response response = client.Upload(ruleId, streamName, RequestContent.Create(data));
}
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 = recordingNow,
Computer = "Computer" + i.ToString(),
AdditionalContext = i
}
);
}
// Make the request
LogsUploadOptions options = new LogsUploadOptions();
bool isTriggered = false;
options.UploadFailed += Options_UploadFailed;
await client.UploadAsync(TestEnvironment.DCRImmutableId, TestEnvironment.StreamName, entries, options).ConfigureAwait(false);
Task Options_UploadFailed(LogsUploadFailedEventArgs e)
{
isTriggered = true;
Console.WriteLine(e.Exception);
foreach (var log in e.FailedLogs)
{
Console.WriteLine(log);
}
return Task.CompletedTask;
}
Jalankan kode, dan data akan tiba di ruang kerja Analitik Log Anda dalam beberapa menit.
Gunakan go get untuk menginstal Log Penyerapan Azure Monitor dan modul klien Azure Identity untuk Go. Modul Azure Identity diperlukan untuk autentikasi yang digunakan dalam sampel ini.
go get github.com/Azure/azure-sdk-for-go/sdk/monitor/ingestion/azlogs
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Buat variabel lingkungan berikut dengan nilai untuk aplikasi Microsoft Entra Anda. Nilai-nilai ini digunakan oleh DefaultAzureCredential dalam modul Azure Identity.
AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
Ganti variabel dalam kode sampel berikut dengan nilai dari DCE dan DCR Anda. Anda mungkin juga ingin mengganti data sampel dengan data Anda sendiri.
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"
)
// data collection endpoint (DCE)
const endpoint = "https://logs-ingestion-rzmk.eastus2-1.ingest.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
}
}
Jalankan kode, dan data akan tiba di ruang kerja Analitik Log Anda dalam beberapa menit.
Sertakan paket penyerapan Log dan azure-identity paket dari pustaka Azure Identity. Pustaka Azure Identity diperlukan untuk autentikasi yang digunakan dalam sampel ini.
Buat variabel lingkungan berikut dengan nilai untuk aplikasi Microsoft Entra Anda. Nilai-nilai ini digunakan oleh DefaultAzureCredential di pustaka Azure Identity.
AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
Ganti variabel dalam kode sampel berikut dengan nilai dari DCE dan DCR Anda. Anda mungkin juga ingin mengganti data sampel dengan data Anda sendiri.
Gunakan npm untuk menginstal pustaka klien Azure Monitor Ingestion dan Azure Identity untuk JavaScript. Pustaka Azure Identity diperlukan untuk autentikasi yang digunakan dalam sampel ini.
Buat variabel lingkungan berikut dengan nilai untuk aplikasi Microsoft Entra Anda. Nilai-nilai ini digunakan oleh DefaultAzureCredential di pustaka Azure Identity.
AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
Ganti variabel dalam kode sampel berikut dengan nilai dari DCE dan DCR Anda. Anda mungkin juga ingin mengganti data sampel dengan data Anda sendiri.
Jalankan kode, dan data akan tiba di ruang kerja Analitik Log Anda dalam beberapa menit.
Kode PowerShell berikut mengirimkan data ke titik akhir dengan menggunakan dasar-dasar HTTP REST.
Catatan
Sampel ini memerlukan PowerShell v7.0 atau yang lebih baru.
Jalankan contoh perintah PowerShell berikut, yang menambahkan rakitan yang diperlukan untuk skrip.
Add-Type -AssemblyName System.Web
Ganti parameter di bagian Langkah 0 dengan nilai dari aplikasi, DCE, dan DCR Anda. Anda mungkin juga ingin mengganti data sampel di bagian Langkah 2 dengan data Anda sendiri.
### 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
$dceEndpoint = "https://logs-ingestion-rzmk.eastus2-1.ingest.monitor.azure.com" #the endpoint property of the Data Collection Endpoint object
$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 DCE.
$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 via the DCE.
$body = $staticData;
$headers = @{"Authorization"="Bearer $bearerToken";"Content-Type"="application/json"};
$uri = "$dceEndpoint/dataCollectionRules/$dcrImmutableId/streams/$($streamName)?api-version=2023-01-01"
$uploadResponse = Invoke-RestMethod -Uri $uri -Method "Post" -Body $body -Headers $headers
Catatan
Jika Anda menerima kesalahan Unable to find type [System.Web.HttpUtility]. , jalankan baris terakhir di bagian 1 skrip untuk perbaikan dan jalankan. Menjalankannya tanpa komentar sebagai bagian dari skrip tidak akan menyelesaikan masalah. Perintah harus dijalankan secara terpisah.
Jalankan skrip, dan Anda akan melihat HTTP - 204 respons. Data akan tiba di ruang kerja Analitik Log Anda dalam beberapa menit.
Gunakan pip untuk menginstal pustaka klien Azure Monitor Ingestion dan Azure Identity untuk Python. Pustaka Azure Identity diperlukan untuk autentikasi yang digunakan dalam sampel ini.
Buat variabel lingkungan berikut dengan nilai untuk aplikasi Microsoft Entra Anda. Nilai-nilai ini digunakan oleh DefaultAzureCredential di pustaka Azure Identity.
AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
Ganti variabel dalam kode sampel berikut dengan nilai dari DCE dan DCR Anda. Anda mungkin juga ingin mengganti data sampel di bagian Langkah 2 dengan data Anda sendiri.
# information needed to send data to the DCR endpoint
dce_endpoint = "https://logs-ingestion-rzmk.eastus2-1.ingest.monitor.azure.com" # ingestion endpoint of the Data Collection Endpoint object
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=dce_endpoint, 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}")
Jalankan kode, dan data akan tiba di ruang kerja Analitik Log Anda dalam beberapa menit.
Pemecahan Masalah
Bagian ini menjelaskan berbagai kondisi kesalahan yang mungkin Anda terima dan cara memperbaikinya.
Skrip mengembalikan kode kesalahan 403
Pastikan Anda memiliki izin yang benar untuk aplikasi Anda ke DCR. Anda mungkin juga perlu menunggu hingga 30 menit agar izin disebarluaskan.
Skrip mengembalikan kode kesalahan 413 atau peringatan TimeoutExpired dengan pesan ReadyBody_Client Koneksi ionAbort dalam respons
Pesannya terlalu besar. Ukuran pesan maksimum saat ini adalah 1 MB per panggilan.
Skrip mengembalikan kode kesalahan 429
Batas API telah terlampaui. Batas saat ini diatur ke 500 MB data per menit untuk data terkompresi dan tidak dikompresi dan 300.000 permintaan per menit. Coba lagi setelah durasi yang tercantum di header Retry-After dalam respons.
Skrip mengembalikan kode kesalahan 503
Pastikan Anda memiliki izin yang benar untuk aplikasi Anda ke DCR. Anda mungkin juga perlu menunggu hingga 30 menit agar izin disebarluaskan.
Anda tidak menerima kesalahan, tetapi data tidak muncul di ruang kerja
Data mungkin membutuhkan waktu untuk diserap, terutama data pertama kali dikirim ke tabel tertentu. Seharusnya tidak lebih dari 15 menit.
IntelliSense di Analitik Log tidak mengenali tabel baru
Cache yang mendorong IntelliSense mungkin membutuhkan waktu hingga 24 jam untuk diperbarui.