Biblioteka klienta eksportera OpenTelemetry usługi Azure Monitor dla języka JavaScript — wersja 1.0.0-beta.23
Wprowadzenie
Ten pakiet eksportera zakłada, że aplikacja jest już instrumentowana przy użyciu zestawu OPENTelemetry SDK. Gdy wszystko będzie gotowe do wyeksportowania danych OpenTelemetry, możesz dodać tego eksportera do aplikacji.
Instalowanie pakietu
npm install @azure/monitor-opentelemetry-exporter
Obecnie obsługiwane środowiska
Aby uzyskać więcej informacji, zobacz nasze zasady pomocy technicznej .
Ostrzeżenie: Ten zestaw SDK działa tylko w środowiskach Node.js. Użyj zestawu SDK języka JavaScript usługi Application Insights dla środowisk przeglądarki.
Wymagania wstępne
Śledzenie rozproszone
Dodaj eksportera do istniejącego dostawcy śledzenia OpenTelemetry (NodeTracerProvider
/ BasicTracerProvider
)
const { AzureMonitorTraceExporter } = require("@azure/monitor-opentelemetry-exporter");
const { BatchSpanProcessor } = require("@opentelemetry/sdk-trace-base");
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");
const { Resource } = require("@opentelemetry/resources");
const { SemanticResourceAttributes } = require("@opentelemetry/semantic-conventions");
const tracerProvider = new NodeTracerProvider({
resource: new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: "basic-service",
}),
});
// Register Tracer Provider as global
tracerProvider.register();
// Create an exporter instance
const exporter = new AzureMonitorTraceExporter({
connectionString:
process.env["APPLICATIONINSIGHTS_CONNECTION_STRING"] || "<your connection string>"
});
// Add the exporter to the Provider
tracerProvider.addSpanProcessor(
new BatchSpanProcessor(exporter, {
bufferTimeout: 15000,
bufferSize: 1000
})
);
Metryki
Dodaj eksportera do istniejącego dostawcy miernika OpenTelemetry (MeterProvider
)
const { metrics } = require("@opentelemetry/api");
const { MeterProvider, PeriodicExportingMetricReader } = require("@opentelemetry/sdk-metrics");
const { AzureMonitorMetricExporter } = require("@azure/monitor-opentelemetry-exporter");
// Add the exporter into the MetricReader and register it with the MeterProvider
const exporter = new AzureMonitorMetricExporter({
connectionString:
process.env["APPLICATIONINSIGHTS_CONNECTION_STRING"] || "<your connection string>",
});
const metricReaderOptions = {
exporter: exporter,
};
const metricReader = new PeriodicExportingMetricReader(metricReaderOptions);
const meterProvider = new MeterProvider();
meterProvider.addMetricReader(metricReader);
// Register Meter Provider as global
metrics.setGlobalMeterProvider(meterProvider);
Dzienniki
Dodawanie eksportera dzienników do istniejącego dostawcy rejestratora OpenTelemetry (LoggerProvider
)
const { logs } = require("@opentelemetry/api-logs");
const { LoggerProvider, BatchLogRecordProcessor } = require("@opentelemetry/sdk-logs");
const { AzureMonitorLogExporter } = require("@azure/monitor-opentelemetry-exporter");
// Add the Log exporter into the logRecordProcessor and register it with the LoggerProvider
const exporter = new AzureMonitorLogExporter({
connectionString:
process.env["APPLICATIONINSIGHTS_CONNECTION_STRING"] || "<your connection string>",
});
const logRecordProcessor = new BatchLogRecordProcessor(exporter);
const loggerProvider = new LoggerProvider();
loggerProvider.addLogRecordProcessor(logRecordProcessor);
// Register logger Provider as global
logs.setGlobalLoggerProvider(loggerProvider);
Próbkowanie
Możesz włączyć próbkowanie, aby ograniczyć ilość otrzymywanych rekordów telemetrii. Aby włączyć poprawne próbkowanie w usłudze Application Insights, użyj polecenia ApplicationInsightsSampler
, jak pokazano poniżej.
const { ApplicationInsightsSampler } = require("@azure/monitor-opentelemetry-exporter");
const { BatchSpanProcessor } = require("@opentelemetry/sdk-trace-base");
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");
const { Resource } = require("@opentelemetry/resources");
const { SemanticResourceAttributes } = require("@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: new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: "basic-service",
}),
});
provider.register();
Przykłady
Aby zapoznać się z kompletnymi przykładami kilku scenariuszy mistrzów, zobacz samples/
folder.
Kluczowe pojęcia
Aby uzyskać więcej informacji na temat projektu OpenTelemetry, zapoznaj się ze specyfikacjami OpenTelemetry.
Rozwiązywanie problemów
Włączanie rejestrowania debugowania
Rejestrowanie debugowania można włączyć, zmieniając poziom rejestrowania dostawcy.
const { DiagConsoleLogger, DiagLogLevel, diag } = require("@opentelemetry/api");
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");
const provider = new NodeTracerProvider();
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.ALL);
provider.register();
Następne kroki
Ten eksporter jest używany z OpenTelemetry JS.
Rejestr wtyczek
Aby sprawdzić, czy wtyczka została już utworzona dla używanej biblioteki, zapoznaj się z rejestrem OpenTelemetry.
Jeśli nie możesz biblioteki w rejestrze, możesz zasugerować nowe żądanie wtyczki pod adresem opentelemetry-js-contrib
.
Współtworzenie
Jeśli chcesz współtworzyć tę bibliotekę, przeczytaj przewodnik współtworzenia , aby dowiedzieć się więcej na temat sposobu kompilowania i testowania kodu.
Azure SDK for JavaScript