Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Come iniziare
Questo pacchetto di esportazione presuppone che l'applicazione sia già instrumentata con OpenTelemetry SDK. Quando si è pronti per esportare i dati OpenTelemetry, è possibile aggiungere questo esportatore all'applicazione.
Installare il pacchetto
npm install @azure/monitor-opentelemetry-exporter
Ambienti attualmente supportati
Per altri dettagli, vedere i criteri di supporto .
Avvertimento: Questo SDK funziona solo per ambienti Node.js. Usare Application Insights JavaScript SDK per gli ambienti browser.
Prerequisiti
Tracciamento distribuito
Aggiungere l'esportatore al provider OpenTelemetry Tracer esistente (NodeTracerProvider / BasicTracerProvider)
import { AzureMonitorTraceExporter } from "@azure/monitor-opentelemetry-exporter";
import { NodeTracerProvider, BatchSpanProcessor } from "@opentelemetry/sdk-trace-node";
import { resourceFromAttributes } from "@opentelemetry/resources";
import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
// Create an exporter instance
const exporter = new AzureMonitorTraceExporter({
connectionString: "<connection string>",
});
// Create and configure the Node Tracer provider
const tracerProvider = new NodeTracerProvider({
resource: resourceFromAttributes({
[ATTR_SERVICE_NAME]: "basic-service",
}),
spanProcessors: [
new BatchSpanProcessor(exporter, {
exportTimeoutMillis: 15000,
maxQueueSize: 1000,
}),
],
});
// Register Tracer Provider as global
tracerProvider.register();
Metriche
Aggiungere l'esportatore al provider di contatori OpenTelemetry esistente (MeterProvider)
import { AzureMonitorMetricExporter } from "@azure/monitor-opentelemetry-exporter";
import { PeriodicExportingMetricReader, MeterProvider } from "@opentelemetry/sdk-metrics";
import { metrics } from "@opentelemetry/api";
// Add the exporter into the MetricReader and register it with the MeterProvider
const exporter = new AzureMonitorMetricExporter({
connectionString: "<connection string>",
});
const metricReaderOptions = {
exporter: exporter,
};
const metricReader = new PeriodicExportingMetricReader(metricReaderOptions);
const meterProvider = new MeterProvider({
readers: [metricReader],
});
// Register Meter Provider as global
metrics.setGlobalMeterProvider(meterProvider);
Registrazioni
Aggiungere Log Exporter al provider di logger OpenTelemetry esistente (LoggerProvider)
import { AzureMonitorLogExporter } from "@azure/monitor-opentelemetry-exporter";
import { BatchLogRecordProcessor, LoggerProvider } from "@opentelemetry/sdk-logs";
import { logs } from "@opentelemetry/api-logs";
// Add the Log exporter into the logRecordProcessor and register it with the LoggerProvider
const exporter = new AzureMonitorLogExporter({
connectionString: "<connection string>",
});
const logRecordProcessor = new BatchLogRecordProcessor({ exporter });
const loggerProvider = new LoggerProvider({
processors: [logRecordProcessor],
});
// Register logger Provider as global
logs.setGlobalLoggerProvider(loggerProvider);
Risultati della disponibilità
Dopo aver registrato il fornitore di logger, emettere un registro di OpenTelemetry con gli attributi di disponibilità qui sotto. L'esportatore converte il record in telemetria di disponibilità di Application Insights.
import { logs } from "@opentelemetry/api-logs";
const logger = logs.getLogger("availability");
logger.emit({
body: "Homepage availability test completed.",
attributes: {
"microsoft.availability.id": "availability-test-run-123",
"microsoft.availability.name": "Homepage",
"microsoft.availability.duration": "00:00:00.250",
"microsoft.availability.success": true,
"microsoft.availability.runLocation": "westus2",
"microsoft.availability.message": "HTTP 200",
},
});
Gli attributi seguenti sono obbligatori:
| Attribute | Description |
|---|---|
microsoft.availability.id |
Identificatore per questa prova. |
microsoft.availability.name |
Nome del test di disponibilità. |
microsoft.availability.duration |
Durata del test, ad 00:00:00.250esempio. |
microsoft.availability.success |
Se il test avesse avuto successo. |
microsoft.availability.runLocation e microsoft.availability.message sono facoltativi. Se l'attributo del messaggio viene omesso, il corpo del log viene usato come messaggio di disponibilità. Il timestamp del risultato della disponibilità proviene dal registro di OpenTelemetry.
I record di disponibilità utilizzano lo stesso contesto di correlazione degli altri log OpenTelemetry. Quando un record viene emesso con un span attivo (o un contesto esplicito di OpenTelemetry), l'ID della traccia span e l'ID dello span popolano l'ID operazione Application Insights e l'ID genitore. Questi valori sono autorevoli e non possono essere sovrascritti dagli attributi logaritari. L'ID di disponibilità per l'esecuzione del test rimane separato dall'ID operazione.
Se manca o è vuoto un attributo richiesto, l'esportatore invia il record come telemetria del messaggio normale. Gli attributi eccezione ed eventi personalizzati hanno la precedenza sugli attributi di disponibilità.
Campionamento
È possibile abilitare il campionamento per limitare la quantità di record di telemetria ricevuti. Per abilitare il campionamento corretto in Application Insights, usare come ApplicationInsightsSampler illustrato di seguito.
import { ApplicationInsightsSampler } from "@azure/monitor-opentelemetry-exporter";
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
import { resourceFromAttributes } from "@opentelemetry/resources";
import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
// Sampler expects a sample rate of between 0 and 1 inclusive
// A rate of 0.75 means approximately 75 % of your traces will be sent
const aiSampler = new ApplicationInsightsSampler(0.75);
const provider = new NodeTracerProvider({
sampler: aiSampler,
resource: resourceFromAttributes({
[ATTR_SERVICE_NAME]: "basic-service",
}),
});
provider.register();
Esempi
Per esempi completi di alcuni scenari di campioni, vedere la samples/ cartella.
Concetti chiave
Per altre informazioni sul progetto OpenTelemetry, vedere le specifiche OpenTelemetry.
Dimensioni personalizzate Limite di dimensione
Di default, i valori delle dimensioni personalizzate sono troncati a 64KB. Questo protegge contro carichi utili inaspettatamente grandi.
Risoluzione dei problemi
Abilitare la registrazione di debug
È possibile abilitare la registrazione di debug modificando il livello di registrazione del provider.
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
import { diag, DiagConsoleLogger, DiagLogLevel } from "@opentelemetry/api";
const provider = new NodeTracerProvider();
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.ALL);
provider.register();
Registrazione
L'abilitazione della registrazione di Azure può anche aiutare a scoprire informazioni utili sugli errori. Per visualizzare un log di richieste e risposte HTTP, impostare la variabile di ambiente AZURE_LOG_LEVEL su info. In alternativa, la registrazione può essere abilitata in fase di esecuzione chiamando setLogLevel nel @azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Per istruzioni più dettagliate su come abilitare i log, è possibile esaminare la documentazione del pacchetto @azure/logger.
Passaggi successivi
Questo esportatore è fatto per essere utilizzato con OpenTelemetry JS.
Registro dei plugin
Per vedere se è già stato creato un plug-in per una libreria che stai utilizzando, consulta il registro OpenTelemetry.
Se non riesci a inserire la tua libreria nel registro, sentiti libero di suggerire una nuova richiesta di plug-in all'indirizzo opentelemetry-js-contrib.
Contribuire
Per contribuire a questa libreria, leggere la guida per i contributi per altre informazioni su come compilare e testare il codice.
Azure SDK for JavaScript