Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
The Azure Monitor Ingestion client library is used to send custom logs to Azure Monitor using the Logs Ingestion API.
Ta biblioteka umożliwia wysyłanie danych z praktycznie dowolnego źródła do obsługiwanych tabel wbudowanych lub do tabel niestandardowych tworzonych w obszarze roboczym usługi Log Analytics. Możesz nawet rozszerzyć schemat wbudowanych tabel o niestandardowe kolumny.
Resources:
Getting started
Prerequisites
- An Azure subscription
- Punkt końcowy zbierania danych
- Reguła zbierania danych
- Obszar roboczy usługi Log Analytics
Instalowanie pakietu
Install the Azure Monitor Ingestion client library for JS with npm:
npm install @azure/monitor-ingestion
Uwierzytelnianie klienta
Do pozyskiwania danych wymagany jest uwierzytelniony klient. To authenticate, create an instance of a TokenCredential class (see @azure/identity for DefaultAzureCredential and other TokenCredential implementations). Przekaż go do konstruktora swojej klasy klienta.
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);
Konfigurowanie klienta dla suwerennej chmury platformy Azure
Domyślnie klient jest skonfigurowany do korzystania z chmury publicznej platformy Azure. Aby zamiast tego użyć suwerennej chmury, podaj poprawną wartość punktu końcowego i odbiorców podczas tworzenia wystąpienia klienta. 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
Punkt końcowy zbierania danych
Punkty końcowe zbierania danych (DCE) umożliwiają unikatowe konfigurowanie ustawień pozyskiwania dla usługi Azure Monitor. This article provides an overview of data collection endpoints including their contents and structure and how you can create and work with them.
Reguła zbierania danych
Reguły zbierania danych (DCR) definiują dane zbierane przez usługę Azure Monitor i określają, jak i gdzie te dane powinny być wysyłane lub przechowywane. Wywołanie interfejsu API REST musi określać kontroler domeny do użycia. Pojedynczy kontroler DCE może obsługiwać wiele kontrolerów DCR, dzięki czemu można określić inny kontroler domeny dla różnych źródeł i tabel docelowych.
Kontroler domeny musi rozumieć strukturę danych wejściowych i strukturę tabeli docelowej. Jeśli te dwa elementy nie są zgodne, może użyć przekształcenia, aby przekonwertować dane źródłowe tak, aby były zgodne z tabelą docelową. Możesz również użyć transformacji, aby filtrować dane źródłowe i wykonywać dowolne inne obliczenia lub konwersje.
Aby uzyskać więcej informacji, zobacz Reguły zbierania danych w usłudze Azure Monitor. Aby uzyskać informacje na temat pobierania identyfikatora kontrolera domeny, zobacz ten samouczek.
Tabele obszaru roboczego usługi Log Analytics
Dzienniki niestandardowe mogą wysyłać dane do dowolnej utworzonej tabeli niestandardowej i do niektórych wbudowanych tabel w obszarze roboczym usługi Log Analytics. Tabela docelowa musi istnieć przed wysłaniem do niej danych. Obecnie obsługiwane są następujące tabele wbudowane:
Examples
You can familiarize yourself with different APIs using Samples.
Przekazywanie dzienników niestandardowych
Możesz utworzyć klienta i wywołać metodę klienta Upload . 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. Przed zweryfikowaniem dzienników uruchom przykład Przekazywanie dzienników niestandardowych .
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]),
);
}
Przekazywanie dużych partii dzienników
W przypadku przekazywania więcej niż 1 MB dzienników w jednym wywołaniu upload metody na LogsIngestionClient, przekazywanie zostanie podzielone na kilka mniejszych partii, z których każda nie jest większa niż 1 MB. Domyślnie te partie będą przesyłane równolegle, przy czym jednocześnie przesyłanych będzie maksymalnie 5 partii. Może być pożądane zmniejszenie maksymalnej współbieżności, jeśli użycie pamięci jest problemem. Maksymalną liczbę jednoczesnych przekazywania można kontrolować za pomocą opcji, jak pokazano maxConcurrency w tym przykładzie:
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
Dzienniki przekazane przy użyciu biblioteki klienta monitorowania pozyskiwania można pobrać przy użyciu biblioteki klienta zapytania monitorowania.
Troubleshooting
For details on diagnosing various failure scenarios, see our troubleshooting guide.
Next steps
Aby dowiedzieć się więcej na temat usługi Azure Monitor, zobacz dokumentację usługi Azure Monitor. 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