Skip to main content

OtelService

@webda/otel


Class: OtelService<T>

Defined in: otel/src/otel.service.ts:205

Otel Service

Start the OpenTelemetry NodeSDK, forward the logs and add a span for each request (see OtelRequestTracer) and each service method call

Webda Modda​

Extends​

  • Service<T>

Type Parameters​

T​

T extends OtelServiceParameters = OtelServiceParameters

Constructors​

Constructor​

new OtelService<T>(name, params): OtelService<T>

Defined in: core/lib/services/service.d.ts:72

Create a new Service instance

Service

Parameters​

name​

string

The name of the service

params​

T

The parameters block define in the configuration file

Returns​

OtelService<T>

Inherited from​

Service<T>.constructor

Properties​

_compiledCapabilities​

protected _compiledCapabilities: Record<string, any>

Defined in: core/lib/services/iservice.d.ts:50

Capabilities detected at compile-time from @WebdaCapability-tagged interfaces.

Populated during Service.resolve by reading the service's entry in webda.module.json. Each key is a capability name (e.g., "request-filter"), and the value is an empty object {} by default. Override getCapabilities to provide capability-specific configuration or to conditionally disable capabilities.

See​

getCapabilities

Inherited from​

Service._compiledCapabilities


[WEBDA_EVENTS]​

[WEBDA_EVENTS]: object

Defined in: core/lib/services/service.d.ts:50

Set the Webda events here

Inherited from​

Service.[WEBDA_EVENTS]


instrumentations?​

optional instrumentations?: Instrumentation<InstrumentationConfig>[]

Defined in: otel/src/otel.service.ts:238

Instrumentations


logger​

protected logger: Logger

Defined in: core/lib/services/service.d.ts:59

Logger with class context

Inherited from​

Service.logger


loggerExporter​

loggerExporter: LogRecordExporter

Defined in: otel/src/otel.service.ts:226

Logger exporter


loggerProvider​

loggerProvider: LoggerProvider$1

Defined in: otel/src/otel.service.ts:230

Logger provider


metrics?​

protected optional metrics?: object

Defined in: core/lib/services/service.d.ts:63

Get metrics

Inherited from​

Service.metrics


name​

readonly name: string

Defined in: core/lib/services/iservice.d.ts:27

Name

Inherited from​

Service.name


otelLogger​

otelLogger: OtelLogger

Defined in: otel/src/otel.service.ts:222

OTEL logger


parameters​

readonly parameters: T

Defined in: core/lib/services/iservice.d.ts:31

Parameters

Inherited from​

Service.parameters


requestTracer?​

optional requestTracer?: OtelRequestTracer

Defined in: otel/src/otel.service.ts:234

Request tracer


sdk​

sdk: NodeSDK

Defined in: otel/src/otel.service.ts:209

SDK


stubs?​

optional stubs?: Map<object, {[key: string]: Function; }>

Defined in: otel/src/otel.service.ts:213

Stubs


createConfiguration?​

static optional createConfiguration?: (params) => any

Defined in: core/lib/services/iservice.d.ts:35

Create configuration set by the application on load

Parameters​

params​

any

Returns​

any

Inherited from​

Service.createConfiguration


filterConfiguration?​

static optional filterConfiguration?: (params) => any

Defined in: core/lib/services/iservice.d.ts:39

Create configuration set by the application on load

Parameters​

params​

any

Returns​

any

Inherited from​

Service.filterConfiguration


Parameters​

static Parameters: typeof ServiceParameters

Defined in: core/lib/services/service.d.ts:46

Service parameters

Inherited from​

Service.Parameters

Methods​

__clean()​

abstract __clean(): Promise<void>

Defined in: core/lib/services/service.d.ts:224

Clean the service data, can only be used in test mode

Returns​

Promise<void>

Inherited from​

Service.__clean


_wrap()​

protected _wrap(object, method, wrapper): void

Defined in: otel/src/otel.service.ts:508

Wrap a method

Parameters​

object​

object

the object owning the method

method​

string

the method name

wrapper​

Function

return the replacement from the bound original

Returns​

void


addListener()​

addListener<Key>(eventName, listener): this

Defined in: core/lib/events/asynceventemitter.d.ts:87

Add listener

Type Parameters​

Key​

Key extends never

Parameters​

eventName​

Key

the event name

listener​

(event) => void | Promise<void>

the event listener

Returns​

this

this for chaining

See​

EventEmitter.addListener

Inherited from​

Service.addListener


addRoute()​

protected addRoute(url, methods, executer, openapi?, override?): void

Defined in: core/lib/services/service.d.ts:177

Add a route dynamicaly

Parameters​

url​

string

of the route can contains dynamic part like {uuid}

methods​

HttpMethodType[]

the HTTP methods

executer​

Function

Method to execute for this route

openapi?​

OpenAPIWebdaDefinition

the OpenAPI specification

override?​

boolean

whether to override existing

Returns​

void

Inherited from​

Service.addRoute


authorizeClientEvent()​

authorizeClientEvent(_event, _context): boolean

Defined in: core/lib/services/service.d.ts:153

Authorize a public event subscription

Parameters​

_event​

string

the event name

_context​

OperationContext

the execution context

Returns​

boolean

true if the condition is met

Inherited from​

Service.authorizeClientEvent


canEnableWebTracing()​

protected canEnableWebTracing(context): Promise<boolean>

Defined in: otel/src/otel.service.ts:388

Check whether the caller can enable web tracing

Anonymous callers are refused. Override to change the policy.

Parameters​

context​

Context

the caller context

Returns​

Promise<boolean>

true if allowed


computeParameters()​

computeParameters(): void

Defined in: core/lib/services/service.d.ts:77

Used to compute or derivate input parameter to attribute

Returns​

void

Deprecated​

Inherited from​

Service.computeParameters


emit()​

emit<Key>(event, data): Promise<void>

Defined in: core/lib/services/service.d.ts:213

Emit the event with data and wait for Promise to finish if listener returned a Promise

Type Parameters​

Key​

Key extends never

Parameters​

event​

Key

the event name

data​

object[Key]

the data to process

Returns​

Promise<void>

Inherited from​

Service.emit


enableWebTracing()​

enableWebTracing(sessionId?): Promise<{ expiresAt: number; sessionId: string; token: string; }>

Defined in: otel/src/otel.service.ts:426

Enable web tracing for the current user

Parameters​

sessionId?​

string

the tracing session to join, generated when omitted: 1 to 128 characters among A-Z a-z 0-9 . _ : -

Returns​

Promise<{ expiresAt: number; sessionId: string; token: string; }>

the trace token to send as X-Webda-Trace and its expiration

Throws​

WebdaError.Forbidden when the caller is not allowed

Throws​

WebdaError.BadRequest when the session id is not valid


getCapabilities()​

getCapabilities(): Record<string, any>

Defined in: core/lib/services/iservice.d.ts:72

Return the capabilities of this service.

By default returns capabilities detected at compile-time from

Returns​

Record<string, any>

the result

Webda Capability-tagged​

interfaces in webda.module.json.

Override to disable capabilities based on configuration:

getCapabilities() {
const caps = super.getCapabilities();
if (!this.parameters.enabled) delete caps["request-filter"];
return caps;
}

Inherited from​

Service.getCapabilities


getClientEvents()​

getClientEvents(): string[]

Defined in: core/lib/services/service.d.ts:144

Return the events that an external system can subscribe to

Returns​

string[]

the list of results

Inherited from​

Service.getClientEvents


getDiagLevel()​

getDiagLevel(): DiagLogLevel

Defined in: otel/src/otel.service.ts:258

Get diag level based on parameters

Returns​

DiagLogLevel

the OpenTelemetry diagnostic level


getLogRecordProcessors()​

protected getLogRecordProcessors(): LogRecordProcessor[] | undefined

Defined in: otel/src/otel.service.ts:377

Log record processors of the SDK global logger provider

The Webda logs use their own provider (loggerProvider). When the logger exporter is disabled, the SDK gets an empty list so it does not read its exporters from the environment.

Returns​

LogRecordProcessor[] | undefined

an empty list when the logger exporter is disabled, else undefined (SDK defaults)


getMaxListeners()​

getMaxListeners(): number

Defined in: core/lib/events/asynceventemitter.d.ts:91

Returns​

number

Inherited from​

Service.getMaxListeners


getMetric()​

getMetric<T>(type, configuration): T

Defined in: core/lib/services/service.d.ts:138

Add service name label

Type Parameters​

T​

T = Gauge<string> | Counter<string> | Histogram<string>

Parameters​

type​

CustomConstructor<T, [MetricConfiguration<T>]>

the type to look up

configuration​

MetricConfiguration<T>

the configuration

Returns​

T

the result

Inherited from​

Service.getMetric


getMetricReaders()​

protected getMetricReaders(): MetricReader[]

Defined in: otel/src/otel.service.ts:358

Metric readers of the SDK

An empty list, not undefined, when disabled: the SDK would otherwise read its exporters from the environment

Returns​

MetricReader[]

the readers, empty when the metric exporter is disabled


getName()​

getName(): string

Defined in: core/lib/services/service.d.ts:218

Get service name

Returns​

string

the result string

Inherited from​

Service.getName


getOpenApiReplacements()​

getOpenApiReplacements(): any

Defined in: core/lib/services/service.d.ts:182

Return variables for replacement in openapi

Returns​

any

the result

Inherited from​

Service.getOpenApiReplacements


getOperationId()​

getOperationId(id): string | undefined

Defined in: core/lib/services/service.d.ts:167

If undefined is returned it cancel the operation registration

Parameters​

id​

string

the identifier

Returns​

string | undefined

the result

Inherited from​

Service.getOperationId


getParameters()​

getParameters(): T

Defined in: core/lib/services/service.d.ts:82

Get the service parameters

Returns​

T

the result

Inherited from​

Service.getParameters


getService()​

getService<T>(name): ServicesMap[T]

Defined in: core/lib/services/service.d.ts:131

Get a service by name

Type Parameters​

T​

T extends keyof ServicesMap

Parameters​

name​

T

the name to use

Returns​

ServicesMap[T]

the result map

Deprecated​

Use useService, might reconsider

Inherited from​

Service.getService


getSpanProcessors()​

protected getSpanProcessors(): SpanProcessor[]

Defined in: otel/src/otel.service.ts:347

Span processors of the SDK: session.id attribute then export

Returns​

SpanProcessor[]

the processors, empty when the trace exporter is disabled


getState()​

getState(): ServiceStates

Defined in: core/lib/services/service.d.ts:55

Get the current state

Returns​

ServiceStates

the result

Inherited from​

Service.getState


getTraceExporter()​

getTraceExporter(): SpanExporter | undefined

Defined in: otel/src/otel.service.ts:467

Create the trace exporter based on parameters

Returns​

SpanExporter | undefined

the trace exporter or undefined if disabled


getUrl()​

getUrl(url, _methods): string

Defined in: core/lib/services/service.d.ts:161

Return the full path url based on parameters

Parameters​

url​

string

relative url to service

_methods​

HttpMethodType[]

in case we need filtering (like Store)

Returns​

string

absolute url or undefined if need to skip the Route

Inherited from​

Service.getUrl


init()​

abstract init(): Promise<OtelService<T>>

Defined in: core/lib/services/service.d.ts:207

Will be called after all the Services are created

Returns​

Promise<OtelService<T>>

Inherited from​

Service.init


initMetrics()​

initMetrics(): void

Defined in: core/lib/services/service.d.ts:124

Init the metrics

Returns​

void

Inherited from​

Service.initMetrics


initOperations()​

initOperations(): void

Defined in: core/lib/services/service.d.ts:195

Init the operations from

Returns​

void

Operation​

decorators on this service

Inherited from​

Service.initOperations


listeners()​

listeners(eventName): Function[]

Defined in: core/lib/events/asynceventemitter.d.ts:151

Get all listeners for an event

Parameters​

eventName​

never

the event name

Returns​

Function[]

the list of results

Inherited from​

Service.listeners


loadCapabilities()​

protected loadCapabilities(): void

Defined in: core/lib/services/service.d.ts:120

Load capabilities from webda.module.json metadata into _compiledCapabilities.

Called during resolve after dependency injection. Reads the service's type name from parameters, looks it up in the application's module metadata (moddas or beans section), and populates _compiledCapabilities with an empty object for each declared capability name.

Fails silently if the application is not available (e.g., in unit tests where services are instantiated without a full application context).

Returns​

void

Example​

// If webda.module.json contains:
// { "moddas": { "MyApp/HawkService": { "capabilities": ["request-filter", "cors-filter"] } } }
// Then after resolve(), this.getCapabilities() returns:
// { "request-filter": {}, "cors-filter": {} }

See​

getCapabilities

Inherited from​

Service.loadCapabilities


log()​

log(level, ...args): void

Defined in: core/lib/services/service.d.ts:236

Log operation

Parameters​

level​

WorkerLogLevel

to log

args​

...any[]

additional arguments

Returns​

void

Inherited from​

Service.log


off()​

off<Key>(eventName, listener): this

Defined in: core/lib/events/asynceventemitter.d.ts:127

Perform off

Type Parameters​

Key​

Key extends never

Parameters​

eventName​

Key

the event name

listener​

(event) => void

the event listener

Returns​

this

this for chaining

See​

EventEmitter.off

Inherited from​

Service.off


on()​

on<Key>(eventName, listener): this

Defined in: core/lib/events/asynceventemitter.d.ts:111

Perform on

Type Parameters​

Key​

Key extends never

Parameters​

eventName​

Key

the event name

listener​

(event) => void

the event listener

Returns​

this

this for chaining

See​

EventEmitter.once

Inherited from​

Service.on


once()​

once<Key>(eventName, listener): this

Defined in: core/lib/events/asynceventemitter.d.ts:103

Perform once

Type Parameters​

Key​

Key extends never

Parameters​

eventName​

Key

the event name

listener​

(event) => void

the event listener

Returns​

this

this for chaining

See​

EventEmitter.once

Inherited from​

Service.once


operationSchemaName()​

protected operationSchemaName(method, side): string

Defined in: core/lib/services/service.d.ts:191

Schema of an operation side: <service name>.<method>.<side> when the application knows it, else the one the build writes, <class>.<method>.<side>, for the class or its nearest ancestor that has it (a service configured under another name than its class)

Parameters​

method​

string

the method name

side​

"input" | "output"

input or output

Returns​

string

the schema name

Inherited from​

Service.operationSchemaName


patch()​

patch(): void

Defined in: otel/src/otel.service.ts:531

Patch all services to add span

Returns​

void


removeAllListeners()​

removeAllListeners<Key>(eventName?): this

Defined in: core/lib/events/asynceventemitter.d.ts:134

Remove all listeners

Type Parameters​

Key​

Key extends never

Parameters​

eventName?​

Key

the event name

Returns​

this

this for chaining

See​

EventEmitter.removeAllListeners

Inherited from​

Service.removeAllListeners


removeListener()​

removeListener<Key>(eventName, listener): this

Defined in: core/lib/events/asynceventemitter.d.ts:119

Remove listener

Type Parameters​

Key​

Key extends never

Parameters​

eventName​

Key

the event name

listener​

(event) => void

the event listener

Returns​

this

this for chaining

See​

EventEmitter.removeListener

Inherited from​

Service.removeListener


resolve()​

resolve(): this

Defined in: otel/src/otel.service.ts:280

Start the SDK as early as possible so instrumentations are in place

Returns​

this

this

Overrides​

Service.resolve


setMaxListeners()​

setMaxListeners(n): this

Defined in: core/lib/events/asynceventemitter.d.ts:95

Parameters​

n​

number

Returns​

this

Inherited from​

Service.setMaxListeners


stop()​

stop(): Promise<void>

Defined in: otel/src/otel.service.ts:243

Stop otlp

Returns​

Promise<void>

Overrides​

Service.stop


toJSON()​

toJSON(): string

Defined in: core/lib/services/service.d.ts:200

Prevent service to be serialized

Returns​

string

the result

Inherited from​

Service.toJSON


toString()​

toString(): string

Defined in: core/lib/services/service.d.ts:91

Return service representation

Returns​

string

the result

Inherited from​

Service.toString


unpatch()​

unpatch(): void

Defined in: otel/src/otel.service.ts:492

Remove patched methods

Returns​

void


updatePatch()​

updatePatch(): this

Defined in: otel/src/otel.service.ts:480

Patch or unpatch the services depending on the trace exporter configuration

Returns​

this

this


verifyTraceToken()​

verifyTraceToken(token): Promise<{ sid: string; uid: string; } | undefined>

Defined in: otel/src/otel.service.ts:450

Verify a trace token

Parameters​

token​

string

the X-Webda-Trace value

Returns​

Promise<{ sid: string; uid: string; } | undefined>

the claims or undefined when the token is invalid, expired or not a trace token