Azure Monitor Betöltési ügyfélkódtár JS-hez
Az Azure Monitor betöltési ügyfélkódtárával egyéni naplókat küldhet az Azure Monitornak a Logs Ingestion API használatával.
Ez a kódtár lehetővé teszi, hogy gyakorlatilag bármilyen forrásból adatokat küldjön a támogatott beépített tábláknak vagy a Log Analytics-munkaterületen létrehozott egyéni tábláknak. A beépített táblák sémáját akár egyéni oszlopokkal is bővítheti.
Erőforrások:
Első lépések
Előfeltételek
A csomag telepítése
Telepítse a JS-hez készült Azure Monitor-betöltési ügyfélkódtárat az npm használatával:
npm install @azure/monitor-ingestion
Az ügyfél hitelesítése
Az adatok betöltéséhez hitelesített ügyfél szükséges. A hitelesítéshez hozzon létre egy TokenCredential osztálypéldányt (lásd a @azure/identitástDefaultAzureCredential
és más TokenCredential
implementációkat). Adja át az ügyfélosztály konstruktorának.
A hitelesítéshez az alábbi példa a @azure/identitáscsomagból használDefaultAzureCredential
:
import { DefaultAzureCredential } from "@azure/identity";
import { LogsIngestionClient } from "@azure/monitor-ingestion";
import * as dotenv from "dotenv";
dotenv.config();
const logsIngestionEndpoint = process.env.LOGS_INGESTION_ENDPOINT || "logs_ingestion_endpoint";
const credential = new DefaultAzureCredential();
const logsIngestionClient = new LogsIngestionClient(logsIngestionEndpoint, credential);
Fő fogalmak
Adatgyűjtési végpont
Az adatgyűjtési végpontok (DCE-k) lehetővé teszik az Azure Monitor betöltési beállításainak egyedi konfigurálását. Ez a cikk áttekintést nyújt az adatgyűjtési végpontokról, beleértve azok tartalmát és szerkezetét, valamint a létrehozásuk és a velük való munka módját.
Adatgyűjtési szabály
Az adatgyűjtési szabályok (DCR) meghatározzák az Azure Monitor által gyűjtött adatokat, és megadják az adatok küldésének vagy tárolásának módját és helyét. A REST API-hívásnak meg kell adnia egy használandó DCR-t. Egyetlen DCE több DCR-t is támogat, így különböző forrásokhoz és céltáblákhoz megadhat egy másik DCR-t.
A DCR-nek tisztában kell lennie a bemeneti adatok szerkezetével és a céltábla szerkezetével. Ha a kettő nem egyezik, átalakítással átalakíthatja a forrásadatokat a céltáblának megfelelően. Az átalakítással szűrheti a forrásadatokat, és bármilyen más számítást vagy átalakítást végezhet.
További részletekért lásd: Adatgyűjtési szabályok az Azure Monitorban. A DCR-azonosítók lekéréséről ebben az oktatóanyagban olvashat bővebben.
Log Analytics-munkaterület táblái
Az egyéni naplók bármilyen létrehozott egyéni táblába és a Log Analytics-munkaterület bizonyos beépített tábláiba küldhetnek adatokat. A céltáblának léteznie kell ahhoz, hogy adatokat küldjön neki. Jelenleg a következő beépített táblák támogatottak:
Példák
A minták használatával megismerkedhet a különböző API-kkal.
Egyéni naplók feltöltése
Létrehozhat egy ügyfelet, és meghívhatja az ügyfél metódusát Upload
. Jegyezze fel az adatbetöltési korlátokat.
const { isAggregateLogsUploadError, DefaultAzureCredential } = require("@azure/identity");
const { LogsIngestionClient } = require("@azure/monitor-ingestion");
require("dotenv").config();
async function main() {
const logsIngestionEndpoint = process.env.LOGS_INGESTION_ENDPOINT || "logs_ingestion_endpoint";
const ruleId = process.env.DATA_COLLECTION_RULE_ID || "data_collection_rule_id";
const streamName = process.env.STREAM_NAME || "data_stream_name";
const credential = new DefaultAzureCredential();
const client = 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 client.upload(ruleId, streamName, logs);
}
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);
}
}
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
process.exit(1);
});
module.exports = { main };
Naplók ellenőrzése
Az adatok helyes feltöltését a @azure/monitor-query kódtár használatával ellenőrizheti. A naplók ellenőrzése előtt először futtassa az Egyéni naplók feltöltése mintát.
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
/**
* @summary Demonstrates how to run query against a Log Analytics workspace to verify if the logs were uploaded
*/
const { DefaultAzureCredential } = require("@azure/identity");
const { LogsQueryClient } = require("@azure/monitor-query");
const monitorWorkspaceId = process.env.MONITOR_WORKSPACE_ID || "workspace_id";
const tableName = process.env.TABLE_NAME || "table_name";
require("dotenv").config();
async function main() {
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])
);
}
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
process.exit(1);
});
module.exports = { main };
Nagy mennyiségű napló feltöltése
Ha egyetlen hívásban több mint 1 MB naplót tölt fel a upload
metódushoz, LogsIngestionClient
a feltöltés több kisebb kötegre lesz felosztva, egyenként nem nagyobb, mint 1 MB. Alapértelmezés szerint ezek a kötegek párhuzamosan lesznek feltöltve, és egyszerre legfeljebb 5 köteg tölthető fel. Érdemes 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 szabályozható az maxConcurrency
alábbi példában látható módon:
const { DefaultAzureCredential } = require("@azure/identity");
const { isAggregateLogsUploadError, LogsIngestionClient } = require("@azure/monitor-ingestion");
require("dotenv").config();
async function main() {
const logsIngestionEndpoint = process.env.LOGS_INGESTION_ENDPOINT || "logs_ingestion_endpoint";
const ruleId = process.env.DATA_COLLECTION_RULE_ID || "data_collection_rule_id";
const streamName = process.env.STREAM_NAME || "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);
}
}
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
process.exit(1);
});
module.exports = { main };
Naplók lekérése
A Monitor Ingestion ügyfélkódtár használatával feltöltött naplók a Lekérdezés figyelése ügyfélkódtár használatával kérhetők le.
Hibaelhárítás
Naplózás
A naplózás engedélyezése segíthet a hibákról szóló hasznos információk feltárásában. A HTTP-kérések és -válaszok naplójának megtekintéséhez állítsa a környezeti változót a AZURE_LOG_LEVEL
értékre info
. A naplózás futásidőben is engedélyezhető a következő hívással setLogLevel
@azure/logger
:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
A naplók engedélyezéséről a @azure/logger csomag dokumentációjában talál részletes útmutatást.
Következő lépések
Az Azure Monitorral kapcsolatos további információkért tekintse meg az Azure Monitor szolgáltatás dokumentációját. A kódtár használatára vonatkozó részletes példákért tekintse meg a mintakönyvtárat.
Közreműködés
Ha hozzá szeretne járulni ehhez a kódtárhoz, olvassa el a közreműködői útmutatót , amelyből többet is megtudhat a kód összeállításáról és teszteléséről.
Azure SDK for JavaScript
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: