Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
The Azure Monitor Ingestion client library is used to send custom logs to Azure Monitor using the Logs Ingestion API.
Bu kitaplık, hemen hemen her kaynaktan desteklenen yerleşik tablolara veya Log Analytics çalışma alanında oluşturduğunuz özel tablolara veri göndermenize olanak tanır. Yerleşik tabloların şemasını özel sütunlarla bile genişletebilirsiniz.
Resources:
Getting started
Prerequisites
Paketi yükle
Install the Azure Monitor Ingestion client library for JS with npm:
npm install @azure/monitor-ingestion
İstemcinin kimliğini doğrulama
Verileri almak için kimliği doğrulanmış bir istemci gereklidir. To authenticate, create an instance of a TokenCredential class (see @azure/identity for DefaultAzureCredential and other TokenCredential implementations). Bunu istemci sınıfınızın oluşturucusuna iletin.
To authenticate, the following example uses DefaultAzureCredential from the @azure/identity package:
import { DefaultAzureCredential } from "@azure/identity";
import { LogsIngestionClient } from "@azure/monitor-ingestion";
const logsIngestionEndpoint = "https://<my-endpoint>.azure.com";
const credential = new DefaultAzureCredential();
const logsIngestionClient = new LogsIngestionClient(logsIngestionEndpoint, credential);
Azure bağımsız bulutu için istemci yapılandırma
Varsayılan olarak, istemci Azure Genel Bulutu'nu kullanacak şekilde yapılandırılmıştır. Bunun yerine bağımsız bir bulut kullanmak için, istemcinin örneğini oluştururken doğru uç noktayı ve hedef kitle değerini sağlayın. For example:
import { DefaultAzureCredential } from "@azure/identity";
import { LogsIngestionClient } from "@azure/monitor-ingestion";
const logsIngestionEndpoint = "https://<my-endpoint>.azure.cn";
const credential = new DefaultAzureCredential();
const logsIngestionClient = new LogsIngestionClient(logsIngestionEndpoint, credential, {
audience: "https://api.loganalytics.azure.cn/.default",
});
Key concepts
Veri Toplama Uç Noktası
Veri Toplama Uç Noktaları (DCE'ler), Azure İzleyici için veri alımı ayarlarını benzersiz bir şekilde yapılandırmanıza olanak tanır. This article provides an overview of data collection endpoints including their contents and structure and how you can create and work with them.
Veri Toplama Kuralı
Veri toplama kuralları (DCR), Azure İzleyici tarafından toplanan verileri tanımlar ve bu verilerin nasıl ve nereye gönderilmesi veya depolanması gerektiğini belirtir. REST API çağrısının kullanılacak bir DCR belirtmesi gerekir. Tek bir DCE birden çok DCR'yi destekleyebilir, böylece farklı kaynaklar ve hedef tablolar için farklı bir DCR belirtebilirsiniz.
DCR, giriş verilerinin yapısını ve hedef tablonun yapısını anlamalıdır. İkisi eşleşmezse, kaynak verileri hedef tabloyla eşleşecek şekilde dönüştürmek için bir dönüştürme kullanabilir. Dönüşümü, kaynak verileri filtrelemek ve diğer hesaplamaları veya dönüştürmeleri gerçekleştirmek için de kullanabilirsiniz.
Daha fazla ayrıntı için Azure İzleyici'de veri toplama kurallarına bakın. DCR kimliğinin nasıl alınacağı hakkında daha fazla bilgi için bu eğiticiye bakın.
Log Analytics çalışma alanı tabloları
Özel günlükler, oluşturduğunuz herhangi bir özel tabloya ve Log Analytics çalışma alanınızdaki belirli yerleşik tablolara veri gönderebilir. Hedef tabloya veri gönderebilmeniz için önce var olması gerekir. Aşağıdaki yerleşik tablolar şu anda desteklenmektedir:
Examples
You can familiarize yourself with different APIs using Samples.
Özel günlükleri karşıya yükleme
Bir istemci oluşturabilir ve istemcinin Upload yöntemini çağırabilirsiniz. Take note of the data ingestion limits.
import { DefaultAzureCredential } from "@azure/identity";
import { LogsIngestionClient, isAggregateLogsUploadError } from "@azure/monitor-ingestion";
const logsIngestionEndpoint = "https://<my-endpoint>.azure.com";
const ruleId = "data_collection_rule_id";
const streamName = "data_stream_name";
const credential = new DefaultAzureCredential();
const logsIngestionClient = new LogsIngestionClient(logsIngestionEndpoint, credential);
const logs = [
{
Time: "2021-12-08T23:51:14.1104269Z",
Computer: "Computer1",
AdditionalContext: "context-2",
},
{
Time: "2021-12-08T23:51:14.1104269Z",
Computer: "Computer2",
AdditionalContext: "context",
},
];
try {
await logsIngestionClient.upload(ruleId, streamName, logs);
} catch (e) {
const aggregateErrors = isAggregateLogsUploadError(e) ? e.errors : [];
if (aggregateErrors.length > 0) {
console.log("Some logs have failed to complete ingestion");
for (const error of aggregateErrors) {
console.log(`Error - ${JSON.stringify(error.cause)}`);
console.log(`Log - ${JSON.stringify(error.failedLogs)}`);
}
} else {
console.log(`An error occurred: ${e}`);
}
}
Verify logs
You can verify that your data has been uploaded correctly by using the @azure/monitor-query library. Günlükleri doğrulamadan önce Özel günlükleri karşıya yükleme örneğini çalıştırın.
import { DefaultAzureCredential } from "@azure/identity";
import { LogsQueryClient } from "@azure/monitor-query";
const monitorWorkspaceId = "workspace_id";
const tableName = "table_name";
const credential = new DefaultAzureCredential();
const logsQueryClient = new LogsQueryClient(credential);
const queriesBatch = [
{
workspaceId: monitorWorkspaceId,
query: tableName + " | count;",
timespan: { duration: "P1D" },
},
];
const result = await logsQueryClient.queryBatch(queriesBatch);
if (result[0].status === "Success") {
console.log("Table entry count: ", JSON.stringify(result[0].tables));
} else {
console.log(
`Some error encountered while retrieving the count. Status = ${result[0].status}`,
JSON.stringify(result[0]),
);
}
Büyük günlük gruplarını karşıya yükleme
üzerindeki LogsIngestionClientyöntemine tek bir çağrıda upload 1 MB'tan fazla günlük yüklerken, karşıya yükleme, her biri 1 MB'tan büyük olmayan birkaç küçük toplu işleme bölünür. Varsayılan olarak, bu toplu işlemler paralel olarak karşıya yüklenir ve aynı anda en fazla 5 toplu işlem karşıya yüklenir. Bellek kullanımı söz konusuysa en fazla eşzamanlılığın azaltılması istenebilir. Maksimum eşzamanlı yükleme sayısı, bu örnekte gösterildiği gibi seçenek maxConcurrency kullanılarak kontrol edilebilir:
import { DefaultAzureCredential } from "@azure/identity";
import { LogsIngestionClient, isAggregateLogsUploadError } from "@azure/monitor-ingestion";
const logsIngestionEndpoint = "https://<my-endpoint>.azure.com";
const ruleId = "data_collection_rule_id";
const streamName = "data_stream_name";
const credential = new DefaultAzureCredential();
const client = new LogsIngestionClient(logsIngestionEndpoint, credential);
// Constructing a large number of logs to ensure batching takes place
const logs = [];
for (let i = 0; i < 100000; ++i) {
logs.push({
Time: "2021-12-08T23:51:14.1104269Z",
Computer: "Computer1",
AdditionalContext: `context-${i}`,
});
}
try {
// Set the maximum concurrency to 1 to prevent concurrent requests entirely
await client.upload(ruleId, streamName, logs, { maxConcurrency: 1 });
} catch (e) {
let aggregateErrors = isAggregateLogsUploadError(e) ? e.errors : [];
if (aggregateErrors.length > 0) {
console.log("Some logs have failed to complete ingestion");
for (const error of aggregateErrors) {
console.log(`Error - ${JSON.stringify(error.cause)}`);
console.log(`Log - ${JSON.stringify(error.failedLogs)}`);
}
} else {
console.log(e);
}
}
Retrieve logs
İzleyici Alımı istemci kitaplığı kullanılarak karşıya yüklenen günlükler, İzleyici Sorgusu istemci kitaplığı kullanılarak alınabilir.
Troubleshooting
For details on diagnosing various failure scenarios, see our troubleshooting guide.
Next steps
Azure İzleyici hakkında daha fazla bilgi edinmek için Azure İzleyici hizmet belgelerine bakın. Please take a look at the samples directory for detailed examples on how to use this library.
Contributing
If you'd like to contribute to this library, please read the contributing guide to learn more about how to build and test the code.
Azure SDK for JavaScript