Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@athenna/otel",
"version": "5.19.0",
"version": "5.20.0",
"description": "OpenTelemetry package for Athenna.",
"license": "MIT",
"author": "João Lenon <lenon@athenna.io>",
Expand Down
3 changes: 2 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,10 @@ export { OtelProvider } from '#src/providers/OtelProvider'

export { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base'
export { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics'
export { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-grpc'
export { getNodeAutoInstrumentations } from '#src/helpers/getNodeAutoInstrumentations'
export { OTLPLogExporter as HttpOTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http'
export { OTLPLogExporter as GrpcOTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-grpc'
export { OTLPTraceExporter as HttpOTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'
export { OTLPTraceExporter as GrpcOTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc'
export { OTLPMetricExporter as HttpOTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http'
export { OTLPMetricExporter as GrpcOTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-grpc'
100 changes: 99 additions & 1 deletion src/otel/OtelImpl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@
import {
trace,
context,
metrics,
propagation,
createContextKey,
SpanStatusCode,
type Span,
type Context
type Context,
type MetricOptions
} from '@opentelemetry/api'

import { Config } from '@athenna/config'
Expand Down Expand Up @@ -202,6 +204,18 @@ export class OtelImpl extends Macroable {
return propagation
}

/**
* Get the metrics API from the OpenTelemetry SDK.
*
* @example
* ```ts
* const meter = Otel.metrics.getMeter('@athenna/otel')
* ```
*/
public get metrics() {
return metrics
}

/**
* Get the symbol for the current context bag.
*
Expand All @@ -214,6 +228,90 @@ export class OtelImpl extends Macroable {
return otelCurrentContextBagKey
}

/**
* Create a counter metric.
*
* @example
* ```ts
* const counter = Otel.createCounter('my.counter')
* ```
*/
public createCounter(name: string, options?: MetricOptions) {
return metrics.getMeter('@athenna/otel').createCounter(name, options)
}

/**
* Create a gauge metric.
*
* @example
* ```ts
* const gauge = Otel.createGauge('my.gauge')
* ```
*/
public createGauge(name: string, options?: MetricOptions) {
return metrics.getMeter('@athenna/otel').createGauge(name, options)
}

/**
* Create a histogram metric.
*
* @example
* ```ts
* const histogram = Otel.createHistogram('my.histogram')
* ```
*/
public createHistogram(name: string, options?: MetricOptions) {
return metrics.getMeter('@athenna/otel').createHistogram(name, options)
}

/**
* Create an up-down counter metric.
*
* @example
* ```ts
* const upDownCounter = Otel.createUpDownCounter('my.upDownCounter')
* ```
*/
public createUpDownCounter(name: string, options?: MetricOptions) {
return metrics.getMeter('@athenna/otel').createUpDownCounter(name, options)
}

/**
* Create an observable counter metric.
*
* @example
* ```ts
* const observableCounter = Otel.createObservableCounter('my.observableCounter')
* ```
*/
public createObservableCounter(name: string, options?: MetricOptions) {
return metrics.getMeter('@athenna/otel').createObservableCounter(name, options)
}

/**
* Create an observable gauge metric.
*
* @example
* ```ts
* const observableGauge = Otel.createObservableGauge('my.observableGauge')
* ```
*/
public createObservableGauge(name: string, options?: MetricOptions) {
return metrics.getMeter('@athenna/otel').createObservableGauge(name, options)
}

/**
* Create an observable up-down counter metric.
*
* @example
* ```ts
* const observableUpDownCounter = Otel.createObservableUpDownCounter('my.observableUpDownCounter')
* ```
*/
public createObservableUpDownCounter(name: string, options?: MetricOptions) {
return metrics.getMeter('@athenna/otel').createObservableUpDownCounter(name, options)
}

/**
* Create a custom OpenTelemetry context key.
*
Expand Down
Loading