Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
The Azure Monitor Ingestion client library is used to send custom logs to Azure Monitor using the Logs Ingestion API.
Ez a kódtár lehetővé teszi, hogy gyakorlatilag bármilyen forrásból küldjön adatokat a támogatott beépített táblákba vagy a Log Analytics-munkaterületen létrehozott egyéni táblákba. A beépített táblák sémáját egyéni oszlopokkal is kiterjesztheti.
Resources:
Getting started
Prerequisites
A csomag telepítése
Install the Azure Monitor Ingestion client library for JS with npm:
npm install @azure/monitor-ingestion
Az ügyfél hitelesítése
Az adatok betöltéséhez hitelesített ügyfélre van szükség. To authenticate, create an instance of a TokenCredential class (see @azure/identity for DefaultAzureCredential and other TokenCredential implementations). Adja át az ügyfélosztály konstruktorának.
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);
Ügyfél konfigurálása az Azure szuverén felhőhöz
Alapértelmezés szerint az ügyfél az Azure nyilvános felhő használatára van konfigurálva. Ha ehelyett szuverén felhőt szeretne használni, adja meg a megfelelő végpontot és célközönség értékét az ügyfél példányosításakor. 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
Adatgyűjtési végpont
Az adatgyűjtési végpontok (DCE-k) lehetővé teszik a Azure Monitor betöltési beállításainak egyedi konfigurálását. This article provides an overview of data collection endpoints including their contents and structure and how you can create and work with them.
Adatgyűjtési szabály
Az adatgyűjtési szabályok (DCR) határozzák meg a Azure Monitor által gyűjtött adatokat, és határozzák meg, hogyan és hol kell elküldeni vagy tárolni ezeket az adatokat. A REST API hívásnak meg kell adnia egy használni kívánt DCR-t. Egyetlen DCE több DCR-t is támogat, így különböző DCR-eket adhat meg a különböző forrásokhoz és céltáblákhoz.
A DCR-nek meg kell értenie a bemeneti adatok szerkezetét és a céltábla szerkezetét. Ha a kettő nem egyezik, átalakítással konvertálhatja a forrásadatokat a céltáblának megfelelően. Az átalakítást a forrásadatok szűrésére és egyéb számítások vagy átalakítások elvégzésére is használhatja.
További részletekért tekintse meg az adatgyűjtési szabályokat a Azure Monitor. A DCR-azonosítók lekérésével kapcsolatos információkért tekintse meg ezt az oktatóanyagot.
Log Analytics-munkaterület táblái
Az egyéni naplók adatokat küldhetnek bármely létrehozott egyéni táblába, valamint a Log Analytics-munkaterület bizonyos beépített tábláiba. A céltáblának léteznie kell, mielőtt adatokat küldhet neki. Jelenleg a következő beépített táblák támogatottak:
Examples
You can familiarize yourself with different APIs using Samples.
Egyéni naplók feltöltése
Létrehozhat egy ügyfelet, és meghívhatja az ügyfél Upload metódusát. 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. A naplók ellenőrzése előtt először futtassa az Egyéni naplók feltöltése mintát.
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]),
);
}
Nagy mennyiségű napló feltöltése
Ha több mint 1 MB naplót tölt fel egyetlen hívással a upload metódusba LogsIngestionClient, a feltöltés több kisebb kötegre lesz felosztva, amelyek mindegyike nem haladja meg az 1 MB-ot. Alapértelmezés szerint ezek a kötegek párhuzamosan lesznek feltöltve, legfeljebb 5 köteg feltöltése egyszerre. Kívánatos lehet csökkenteni a maximális egyidejűséget, ha a memóriahasználat aggodalomra ad okot. Az egyidejű feltöltések maximális száma az maxConcurrency alábbi beállítással szabályozható, ahogy az alábbi példában látható:
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
A Monitor Ingestion ügyféloldali kódtárral feltöltött naplók a Monitor Query ügyféloldali kódtár használatával kérhetők le.
Troubleshooting
For details on diagnosing various failure scenarios, see our troubleshooting guide.
Next steps
További információ a Azure Monitor: Azure Monitor szolgáltatás dokumentációja. 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