0.48.2 • Published 1 month ago

@askluna/exporter-logs-otlp-http-wintercg v0.48.2

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
1 month ago

OpenTelemetry Collector Logs Exporter for web and node with HTTP

Note: This is an experimental package under active development. New releases may include breaking changes.

This module provides a logs-exporter for OTLP (http/json).

Installation

npm install --save @askluna/exporter-logs-otlp-http-wintercg

Use

/**
 * Registers an OpenTelemetry logger with the specified parameters.
 * @param params - The parameters for registering the logger.
 * @param params.otelIdentifier - The identifier for the OpenTelemetry logger.
 * @param params.apiKey - The API key for authentication.
 * @param params.endpoint - The endpoint for sending logs.
 * @param reregister - Optional. Specifies whether to re-register the logger if it already exists. Default is false.
 * @returns A promise that resolves to a Result object containing the logger if successful, or an error if unsuccessful.
 */
export const registerOtelLogger = async (
 params: {
  otelIdentifier: CreateOtelLogProviderParams['otelIdentifier'];
  auth:
   | {
     kind: 'api-key';
     value: string;
     }
   | {
     kind: 'dns';
     value: string;
     };
  endpoint: string;
 },
 reregister: boolean = false
): Promise<Logger | null> => {

  const otelLogger : Logger | null = null;
  // make sure fetch is in the right state when using with https://github.com/evanderkoogh/otel-cf-workers
  // you may have to wait for the fetch proxy to be ready

 const logProvider = await createOtelLogProvider({
  otelIdentifier: params.otelIdentifier,
  exportOptions: {
   url: params.endpoint,
   headers: { [params.auth.kind]: params.auth.value },
   compression: 'gzip' as never,
   hostname: globalThis.hostUrl,
   concurrencyLimit: 1, // an optional limit on pending requests
   fetch: (input, init) => {
    return fetch(input, init);
   },
  },
 });

 if (logProvider) {
  otelLogger = createOtelLogger(logProvider, { name: params.otelIdentifier.name })
  return otelLogger;
 } else {
  otelLogger = null
 }

 return otelLogger;
};

Further Documentation

Please see @opentelemetry/exporter-logs-otlp-http for futher details. Github link

This is a shim that works to make @opentelemetry/exporter-logs-otlp-http compatible with

Environment Variable Configuration

In addition to settings passed to the constructor, the exporter also supports configuration via environment variables:

Environment variableDescription
OTEL_EXPORTER_OTLP_ENDPOINTThe endpoint to send logs to. This will also be used for the traces exporter if OTEL_EXPORTER_OTLP_TRACES_ENDPOINT is not configured. By default http://localhost:4318 will be used. /v1/logs will be automatically appended to configured values.
OTEL_EXPORTER_OTLP_LOGS_ENDPOINTThe endpoint to send logs to. By default https://localhost:4318/v1/logs will be used. v1/logs will not be appended automatically and has to be added explicitly.
OTEL_EXPORTER_OTLP_LOGS_TIMEOUTThe maximum waiting time, in milliseconds, allowed to send each OTLP log batch. Default is 10000.
OTEL_EXPORTER_OTLP_TIMEOUTThe maximum waiting time, in milliseconds, allowed to send each OTLP trace/metric/log batch. Default is 10000.

Settings configured programmatically take precedence over environment variables. Per-signal environment variables take precedence over non-per-signal environment variables.

Useful links

License

Apache 2.0 - See LICENSE for more information.