@aztec/telemetry-client 0.0.0-test.1 → 0.0.1-commit.017a351

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dest/attributes.d.ts +45 -10
  2. package/dest/attributes.d.ts.map +1 -1
  3. package/dest/attributes.js +28 -9
  4. package/dest/bench.d.ts +6 -1
  5. package/dest/bench.d.ts.map +1 -1
  6. package/dest/bench.js +31 -14
  7. package/dest/config.d.ts +9 -2
  8. package/dest/config.d.ts.map +1 -1
  9. package/dest/config.js +44 -8
  10. package/dest/index.d.ts +2 -1
  11. package/dest/index.d.ts.map +1 -1
  12. package/dest/index.js +1 -0
  13. package/dest/l1_metrics.d.ts +17 -0
  14. package/dest/l1_metrics.d.ts.map +1 -0
  15. package/dest/l1_metrics.js +54 -0
  16. package/dest/lmdb_metrics.d.ts +5 -3
  17. package/dest/lmdb_metrics.d.ts.map +1 -1
  18. package/dest/lmdb_metrics.js +7 -15
  19. package/dest/metric-utils.d.ts +24 -0
  20. package/dest/metric-utils.d.ts.map +1 -0
  21. package/dest/metric-utils.js +59 -0
  22. package/dest/metrics.d.ts +312 -122
  23. package/dest/metrics.d.ts.map +1 -1
  24. package/dest/metrics.js +1595 -120
  25. package/dest/monitored_batch_span_processor.d.ts +29 -0
  26. package/dest/monitored_batch_span_processor.d.ts.map +1 -0
  27. package/dest/monitored_batch_span_processor.js +70 -0
  28. package/dest/nodejs_metrics_monitor.d.ts +19 -0
  29. package/dest/nodejs_metrics_monitor.d.ts.map +1 -0
  30. package/dest/nodejs_metrics_monitor.js +115 -0
  31. package/dest/noop.d.ts +9 -4
  32. package/dest/noop.d.ts.map +1 -1
  33. package/dest/noop.js +34 -1
  34. package/dest/otel.d.ts +13 -7
  35. package/dest/otel.d.ts.map +1 -1
  36. package/dest/otel.js +204 -24
  37. package/dest/otel_filter_metric_exporter.d.ts +12 -4
  38. package/dest/otel_filter_metric_exporter.d.ts.map +1 -1
  39. package/dest/otel_filter_metric_exporter.js +38 -4
  40. package/dest/otel_logger_provider.d.ts +1 -1
  41. package/dest/otel_propagation.d.ts +3 -1
  42. package/dest/otel_propagation.d.ts.map +1 -1
  43. package/dest/otel_propagation.js +49 -1
  44. package/dest/otel_resource.d.ts +1 -1
  45. package/dest/otel_resource.d.ts.map +1 -1
  46. package/dest/otel_resource.js +43 -2
  47. package/dest/prom_otel_adapter.d.ts +61 -12
  48. package/dest/prom_otel_adapter.d.ts.map +1 -1
  49. package/dest/prom_otel_adapter.js +157 -48
  50. package/dest/start.d.ts +3 -2
  51. package/dest/start.d.ts.map +1 -1
  52. package/dest/start.js +8 -7
  53. package/dest/telemetry.d.ts +63 -34
  54. package/dest/telemetry.d.ts.map +1 -1
  55. package/dest/telemetry.js +47 -24
  56. package/dest/vendor/attributes.d.ts +1 -1
  57. package/dest/vendor/otel-pino-stream.d.ts +1 -2
  58. package/dest/vendor/otel-pino-stream.d.ts.map +1 -1
  59. package/dest/vendor/otel-pino-stream.js +2 -2
  60. package/dest/with_tracer.d.ts +1 -1
  61. package/dest/with_tracer.d.ts.map +1 -1
  62. package/dest/wrappers/fetch.d.ts +3 -3
  63. package/dest/wrappers/fetch.d.ts.map +1 -1
  64. package/dest/wrappers/fetch.js +9 -6
  65. package/dest/wrappers/index.d.ts +1 -1
  66. package/dest/wrappers/json_rpc_server.d.ts +2 -2
  67. package/dest/wrappers/json_rpc_server.d.ts.map +1 -1
  68. package/dest/wrappers/l2_block_stream.d.ts +4 -3
  69. package/dest/wrappers/l2_block_stream.d.ts.map +1 -1
  70. package/dest/wrappers/l2_block_stream.js +385 -11
  71. package/package.json +21 -15
  72. package/src/attributes.ts +59 -12
  73. package/src/bench.ts +37 -15
  74. package/src/config.ts +76 -9
  75. package/src/index.ts +1 -0
  76. package/src/l1_metrics.ts +65 -0
  77. package/src/lmdb_metrics.ts +24 -24
  78. package/src/metric-utils.ts +75 -0
  79. package/src/metrics.ts +1679 -145
  80. package/src/monitored_batch_span_processor.ts +93 -0
  81. package/src/nodejs_metrics_monitor.ts +135 -0
  82. package/src/noop.ts +65 -4
  83. package/src/otel.ts +193 -28
  84. package/src/otel_filter_metric_exporter.ts +47 -5
  85. package/src/otel_propagation.ts +42 -1
  86. package/src/otel_resource.ts +57 -2
  87. package/src/prom_otel_adapter.ts +195 -70
  88. package/src/start.ts +17 -8
  89. package/src/telemetry.ts +152 -76
  90. package/src/vendor/otel-pino-stream.ts +1 -4
  91. package/src/wrappers/fetch.ts +32 -33
  92. package/src/wrappers/json_rpc_server.ts +1 -1
  93. package/src/wrappers/l2_block_stream.ts +3 -2
  94. package/dest/event_loop_monitor.d.ts +0 -18
  95. package/dest/event_loop_monitor.d.ts.map +0 -1
  96. package/dest/event_loop_monitor.js +0 -93
  97. package/src/event_loop_monitor.ts +0 -119
@@ -1 +1 @@
1
- {"version":3,"file":"prom_otel_adapter.d.ts","sourceRoot":"","sources":["../src/prom_otel_adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prom_otel_adapter.d.ts","sourceRoot":"","sources":["../src/prom_otel_adapter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
+ import { Timer } from '@aztec/foundation/timer';
2
3
  import { Registry } from 'prom-client';
3
4
  export var MessageSource = /*#__PURE__*/ function(MessageSource) {
4
5
  MessageSource["forward"] = "forward";
@@ -34,9 +35,11 @@ export var MessageSource = /*#__PURE__*/ function(MessageSource) {
34
35
  this.labeledValues = new Map();
35
36
  this.collectFns = [];
36
37
  this._collect = ()=>{};
37
- this.gauge = meter.createObservableGauge(name, {
38
+ const metricDef = {
39
+ name,
38
40
  description: help
39
- });
41
+ };
42
+ this.gauge = meter.createObservableGauge(metricDef);
40
43
  // Only observe in the callback when collect() is called
41
44
  this.gauge.addCallback(this.handleObservation.bind(this));
42
45
  }
@@ -59,7 +62,7 @@ export var MessageSource = /*#__PURE__*/ function(MessageSource) {
59
62
  return;
60
63
  }
61
64
  for (const [labelStr, value] of this.labeledValues.entries()){
62
- const labels = this.parseLabelsSafely(labelStr);
65
+ const labels = parseLabelsSafely(labelStr, this.logger);
63
66
  if (labels) {
64
67
  result.observe(value, labels);
65
68
  }
@@ -71,7 +74,7 @@ export var MessageSource = /*#__PURE__*/ function(MessageSource) {
71
74
  return;
72
75
  }
73
76
  if (labelsOrValue) {
74
- this.validateLabels(labelsOrValue);
77
+ validateLabels(labelsOrValue, this.labelNames, 'Gauge');
75
78
  const labelKey = JSON.stringify(labelsOrValue);
76
79
  const currentValue = this.labeledValues.get(labelKey) ?? 0;
77
80
  this.labeledValues.set(labelKey, currentValue + (value ?? 1));
@@ -84,7 +87,7 @@ export var MessageSource = /*#__PURE__*/ function(MessageSource) {
84
87
  this.currentValue = labelsOrValue;
85
88
  return;
86
89
  }
87
- this.validateLabels(labelsOrValue);
90
+ validateLabels(labelsOrValue, this.labelNames, 'Gauge');
88
91
  const labelKey = JSON.stringify(labelsOrValue);
89
92
  this.labeledValues.set(labelKey, value);
90
93
  }
@@ -93,7 +96,7 @@ export var MessageSource = /*#__PURE__*/ function(MessageSource) {
93
96
  * @param labels - Optional labels object
94
97
  */ dec(labels) {
95
98
  if (labels) {
96
- this.validateLabels(labels);
99
+ validateLabels(labels, this.labelNames, 'Gauge');
97
100
  const labelKey = JSON.stringify(labels);
98
101
  const currentValue = this.labeledValues.get(labelKey) ?? 0;
99
102
  this.labeledValues.set(labelKey, currentValue - 1);
@@ -107,77 +110,183 @@ export var MessageSource = /*#__PURE__*/ function(MessageSource) {
107
110
  this.currentValue = 0;
108
111
  this.labeledValues.clear();
109
112
  }
113
+ }
114
+ /**
115
+ * Implementation of a Histogram collector
116
+ */ export class OtelHistogram {
117
+ logger;
118
+ labelNames;
119
+ histogram;
120
+ constructor(logger, meter, name, help, buckets = [], labelNames = []){
121
+ this.logger = logger;
122
+ this.labelNames = labelNames;
123
+ const metricDef = {
124
+ name,
125
+ description: help
126
+ };
127
+ this.histogram = meter.createHistogram(metricDef, {
128
+ advice: buckets.length ? {
129
+ explicitBucketBoundaries: buckets
130
+ } : undefined
131
+ });
132
+ }
110
133
  /**
111
- * Validates that provided labels match the expected schema
112
- * @param labels - Labels object to validate
113
- * @throws Error if invalid labels are provided
114
- */ validateLabels(labels) {
115
- if (this.labelNames.length === 0) {
116
- throw new Error('Gauge was initialized without labels support');
134
+ * Starts a timer and returns a function that when called will record the time elapsed
135
+ * @param labels - Optional labels for the observation
136
+ */ startTimer(labels) {
137
+ if (labels) {
138
+ validateLabels(labels, this.labelNames, 'Histogram');
117
139
  }
118
- for (const key of Object.keys(labels)){
119
- if (!this.labelNames.includes(key)) {
120
- throw new Error(`Invalid label key: ${key}`);
140
+ const timer = new Timer();
141
+ return ()=>{
142
+ // Use timer.s() here to get the duration in seconds since this is only currently used by gossipsub_heartbeat_duration_seconds
143
+ const duration = timer.s();
144
+ if (labels) {
145
+ this.observe(labels, duration);
146
+ } else {
147
+ this.observe(duration);
121
148
  }
122
- }
149
+ };
123
150
  }
124
- /**
125
- * Safely parses label string back to object
126
- * @param labelStr - Stringified labels object
127
- * @returns Labels object or null if parsing fails
128
- */ parseLabelsSafely(labelStr) {
129
- try {
130
- return JSON.parse(labelStr);
131
- } catch {
132
- this.logger.error(`Failed to parse label string: ${labelStr}`);
133
- return null;
151
+ observe(labelsOrValue, value) {
152
+ if (typeof labelsOrValue === 'number') {
153
+ this.histogram.record(labelsOrValue);
154
+ } else {
155
+ validateLabels(labelsOrValue, this.labelNames, 'Histogram');
156
+ this.histogram.record(value, labelsOrValue);
134
157
  }
135
158
  }
159
+ reset() {
160
+ // OpenTelemetry histograms cannot be reset, but we implement the interface
161
+ this.logger.silent('OpenTelemetry histograms cannot be fully reset');
162
+ }
136
163
  }
137
164
  /**
138
- * Noop implementation of a Historgram collec
139
- */ class NoopOtelHistogram {
165
+ * Implementation of an AvgMinMax collector
166
+ */ export class OtelAvgMinMax {
140
167
  logger;
141
- constructor(logger, _meter, _name, _help, _buckets = [], _labelNames = []){
168
+ labelNames;
169
+ gauges;
170
+ currentValues;
171
+ labeledValues;
172
+ constructor(logger, meter, name, help, labelNames = []){
142
173
  this.logger = logger;
174
+ this.labelNames = labelNames;
175
+ this.currentValues = [];
176
+ this.labeledValues = new Map();
177
+ // Create three separate gauges for avg, min, and max
178
+ this.gauges = {
179
+ avg: meter.createObservableGauge({
180
+ name: `${name}_avg`,
181
+ description: `${help} (average)`
182
+ }),
183
+ min: meter.createObservableGauge({
184
+ name: `${name}_min`,
185
+ description: `${help} (minimum)`
186
+ }),
187
+ max: meter.createObservableGauge({
188
+ name: `${name}_max`,
189
+ description: `${help} (maximum)`
190
+ })
191
+ };
192
+ // Register callbacks for each gauge
193
+ this.gauges.avg.addCallback(this.observeAvg.bind(this));
194
+ this.gauges.min.addCallback(this.observeMin.bind(this));
195
+ this.gauges.max.addCallback(this.observeMax.bind(this));
143
196
  }
144
- observe(_valueOrLabels, _value) {}
145
- startTimer(_labels) {
146
- return ()=>0;
197
+ set(labelsOrValues, values) {
198
+ if (Array.isArray(labelsOrValues)) {
199
+ this.currentValues = labelsOrValues;
200
+ return;
201
+ } else {
202
+ validateLabels(labelsOrValues, this.labelNames, 'AvgMinMax');
203
+ const labelKey = JSON.stringify(labelsOrValues);
204
+ this.labeledValues.set(labelKey, values || []);
205
+ }
147
206
  }
148
- reset() {
149
- // OpenTelemetry histograms cannot be reset, but we implement the interface
150
- this.logger.warn('OpenTelemetry histograms cannot be reset');
207
+ /**
208
+ * Resets all stored values
209
+ */ reset() {
210
+ this.currentValues = [];
211
+ this.labeledValues.clear();
212
+ }
213
+ /**
214
+ * General function to observe an aggregation
215
+ * @param result - Observer result
216
+ * @param aggregateFn - Function that calculates the aggregation
217
+ */ observeAggregation(result, aggregateFn) {
218
+ // Observe unlabeled values
219
+ if (this.currentValues.length > 0) {
220
+ result.observe(aggregateFn(this.currentValues));
221
+ }
222
+ // Observe labeled values
223
+ for (const [labelStr, values] of this.labeledValues.entries()){
224
+ if (values.length > 0) {
225
+ const labels = parseLabelsSafely(labelStr, this.logger);
226
+ if (labels) {
227
+ result.observe(aggregateFn(values), labels);
228
+ }
229
+ }
230
+ }
231
+ }
232
+ observeAvg(result) {
233
+ this.observeAggregation(result, (arr)=>arr.reduce((sum, val)=>sum + val, 0) / arr.length);
234
+ }
235
+ observeMin(result) {
236
+ this.observeAggregation(result, (arr)=>Math.min.apply(null, arr));
237
+ }
238
+ observeMax(result) {
239
+ this.observeAggregation(result, (arr)=>Math.max.apply(null, arr));
151
240
  }
152
241
  }
153
242
  /**
154
- * Noop implementation of an AvgMinMax collector
155
- */ class NoopOtelAvgMinMax {
156
- _logger;
157
- constructor(_logger, _meter, _name, _help, _labelNames = []){
158
- this._logger = _logger;
159
- }
160
- set(_valueOrLabels, _values) {}
161
- reset() {}
243
+ * Validates that provided labels match the expected schema
244
+ * @param labels - Labels object to validate
245
+ * @param labelNames - Array of allowed label names
246
+ * @param metricType - Type of metric for error message ('Gauge', 'Histogram', 'AvgMinMax')
247
+ * @throws Error if invalid labels are provided
248
+ */ function validateLabels(labels, labelNames, metricType) {
249
+ if (labelNames.length === 0) {
250
+ throw new Error(`${metricType} was initialized without labels support`);
251
+ }
252
+ for (const key of Object.keys(labels)){
253
+ if (!labelNames.includes(key)) {
254
+ throw new Error(`Invalid label key: ${key}`);
255
+ }
256
+ }
257
+ }
258
+ /**
259
+ * Safely parses label string back to object
260
+ * @param labelStr - Stringified labels object
261
+ * @param logger - Logger instance for error reporting
262
+ * @returns Labels object or null if parsing fails
263
+ */ function parseLabelsSafely(labelStr, logger) {
264
+ try {
265
+ return JSON.parse(labelStr);
266
+ } catch {
267
+ logger.error(`Failed to parse label string: ${labelStr}`);
268
+ return null;
269
+ }
162
270
  }
163
271
  /**
164
272
  * Otel metrics Adapter
165
273
  *
166
274
  * Maps the PromClient based MetricsRegister from gossipsub and discv5 services to the Otel MetricsRegister
167
275
  */ export class OtelMetricsAdapter extends Registry {
168
- logger;
169
276
  meter;
170
- constructor(telemetryClient, logger = createLogger('telemetry:otel-metrics-adapter')){
171
- super(), this.logger = logger;
277
+ logger;
278
+ constructor(telemetryClient, bindings){
279
+ super();
280
+ this.logger = createLogger('telemetry:otel-metrics-adapter', bindings);
172
281
  this.meter = telemetryClient.getMeter('metrics-adapter');
173
282
  }
174
283
  gauge(configuration) {
175
284
  return new OtelGauge(this.logger, this.meter, configuration.name, configuration.help, configuration.labelNames);
176
285
  }
177
286
  histogram(configuration) {
178
- return new NoopOtelHistogram(this.logger, this.meter, configuration.name, configuration.help, configuration.buckets, configuration.labelNames);
287
+ return new OtelHistogram(this.logger, this.meter, configuration.name, configuration.help, configuration.buckets, configuration.labelNames);
179
288
  }
180
289
  avgMinMax(configuration) {
181
- return new NoopOtelAvgMinMax(this.logger, this.meter, configuration.name, configuration.help, configuration.labelNames);
290
+ return new OtelAvgMinMax(this.logger, this.meter, configuration.name, configuration.help, configuration.labelNames);
182
291
  }
183
292
  }
package/dest/start.d.ts CHANGED
@@ -1,6 +1,7 @@
1
+ import { type LoggerBindings } from '@aztec/foundation/log';
1
2
  import type { TelemetryClientConfig } from './config.js';
2
3
  import type { TelemetryClient } from './telemetry.js';
3
4
  export * from './config.js';
4
- export declare function initTelemetryClient(config: TelemetryClientConfig): TelemetryClient;
5
+ export declare function initTelemetryClient(config: TelemetryClientConfig, bindings?: LoggerBindings): Promise<TelemetryClient>;
5
6
  export declare function getTelemetryClient(): TelemetryClient;
6
- //# sourceMappingURL=start.d.ts.map
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFMUUsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFekQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsY0FBYyxhQUFhLENBQUM7QUFLNUIsd0JBQXNCLG1CQUFtQixDQUN2QyxNQUFNLEVBQUUscUJBQXFCLEVBQzdCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsR0FDeEIsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQXVCMUI7QUFFRCx3QkFBZ0Isa0JBQWtCLElBQUksZUFBZSxDQUVwRCJ9
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,cAAc,aAAa,CAAC;AAK5B,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAgBlF;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAE1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,cAAc,aAAa,CAAC;AAK5B,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,eAAe,CAAC,CAuB1B;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD"}
package/dest/start.js CHANGED
@@ -1,22 +1,23 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
2
  import { NoopTelemetryClient } from './noop.js';
3
- import { OpenTelemetryClient } from './otel.js';
4
3
  export * from './config.js';
5
- let initialised = false;
4
+ let initialized = false;
6
5
  let telemetry = new NoopTelemetryClient();
7
- export function initTelemetryClient(config) {
8
- const log = createLogger('telemetry:client');
9
- if (initialised) {
6
+ export async function initTelemetryClient(config, bindings) {
7
+ const log = createLogger('telemetry:client', bindings);
8
+ if (initialized) {
10
9
  log.warn('Telemetry client has already been initialized once');
11
10
  return telemetry;
12
11
  }
13
- if (config.metricsCollectorUrl) {
12
+ if (config.metricsCollectorUrl || config.publicMetricsCollectorUrl || config.tracesCollectorUrl || config.logsCollectorUrl) {
14
13
  log.info(`Using OpenTelemetry client with custom collector`);
14
+ // Lazy load OpenTelemetry to avoid loading heavy deps at startup
15
+ const { OpenTelemetryClient } = await import('./otel.js');
15
16
  telemetry = OpenTelemetryClient.createAndStart(config, log);
16
17
  } else {
17
18
  log.info('Using NoopTelemetryClient');
18
19
  }
19
- initialised = true;
20
+ initialized = true;
20
21
  return telemetry;
21
22
  }
22
23
  export function getTelemetryClient() {
@@ -1,21 +1,32 @@
1
- import { type AttributeValue, type BatchObservableCallback, type MetricOptions, type Observable, type BatchObservableResult as OtelBatchObservableResult, type Gauge as OtelGauge, type Histogram as OtelHistogram, type ObservableGauge as OtelObservableGauge, type ObservableResult as OtelObservableResult, type ObservableUpDownCounter as OtelObservableUpDownCounter, type UpDownCounter as OtelUpDownCounter, type Span, type Tracer } from '@opentelemetry/api';
1
+ import { type AttributeValue, type BatchObservableCallback, type Context, type MetricOptions, type Observable, type BatchObservableResult as OtelBatchObservableResult, type Gauge as OtelGauge, type Histogram as OtelHistogram, type ObservableGauge as OtelObservableGauge, type ObservableResult as OtelObservableResult, type ObservableUpDownCounter as OtelObservableUpDownCounter, type UpDownCounter as OtelUpDownCounter, type Span, type Tracer } from '@opentelemetry/api';
2
2
  import type * as Attributes from './attributes.js';
3
- import type * as Metrics from './metrics.js';
4
- export { type Span, SpanStatusCode, ValueType } from '@opentelemetry/api';
3
+ import type { MetricDefinition } from './metrics.js';
4
+ export { toMetricOptions, createUpDownCounterWithDefault } from './metric-utils.js';
5
+ export { type Span, SpanStatusCode, ValueType, type Context } from '@opentelemetry/api';
5
6
  type ValuesOf<T> = T extends Record<string, infer U> ? U : never;
7
+ type AttributeNames = ValuesOf<typeof Attributes>;
8
+ /**
9
+ * This is a set of attributes that could lead to high cardinality in the metrics.
10
+ * If you find yourself wanting to capture this data in a metric consider if it makes sense to capture
11
+ * as the metric value instead of an attribute or consider logging instead.
12
+ *
13
+ * Think twice before removing an attribute from this list.
14
+ */
15
+ type BannedMetricAttributeNames = (typeof Attributes)['BLOCK_NUMBER' | 'BLOCK_ARCHIVE' | 'SLOT_NUMBER' | 'BLOCK_PARENT' | 'BLOCK_CANDIDATE_TXS_COUNT' | 'BLOCK_TXS_COUNT' | 'BLOCK_SIZE' | 'EPOCH_SIZE' | 'EPOCH_NUMBER' | 'TX_HASH' | 'PROVING_JOB_ID' | 'P2P_ID' | 'TARGET_ADDRESS' | 'MANA_USED' | 'TOTAL_INSTRUCTIONS'];
6
16
  /** Global registry of attributes */
7
- type AttributesType = Partial<Record<ValuesOf<typeof Attributes>, AttributeValue>>;
8
- export type { AttributesType };
9
- /** Global registry of metrics */
10
- type MetricsType = (typeof Metrics)[keyof typeof Metrics];
11
- export type { MetricsType };
12
- export type Gauge = OtelGauge<AttributesType>;
13
- export type Histogram = OtelHistogram<AttributesType>;
14
- export type UpDownCounter = OtelUpDownCounter<AttributesType>;
15
- export type ObservableGauge = OtelObservableGauge<AttributesType>;
16
- export type ObservableUpDownCounter = OtelObservableUpDownCounter<AttributesType>;
17
- export type ObservableResult = OtelObservableResult<AttributesType>;
18
- export type BatchObservableResult = OtelBatchObservableResult<AttributesType>;
17
+ export type AttributesType = Partial<Record<AttributeNames, AttributeValue>>;
18
+ export type AllowedAttributeNames = Exclude<AttributeNames, BannedMetricAttributeNames>;
19
+ /** Subset of attributes allowed to be added to metrics */
20
+ export type MetricAttributesType = Partial<Record<AllowedAttributeNames, AttributeValue>>;
21
+ /** Re-export MetricDefinition for convenience */
22
+ export type { MetricDefinition } from './metrics.js';
23
+ export type Gauge = OtelGauge<MetricAttributesType>;
24
+ export type Histogram = OtelHistogram<MetricAttributesType>;
25
+ export type UpDownCounter = OtelUpDownCounter<MetricAttributesType>;
26
+ export type ObservableGauge = OtelObservableGauge<MetricAttributesType>;
27
+ export type ObservableUpDownCounter = OtelObservableUpDownCounter<MetricAttributesType>;
28
+ export type ObservableResult = OtelObservableResult<MetricAttributesType>;
29
+ export type BatchObservableResult = OtelBatchObservableResult<MetricAttributesType>;
19
30
  export type { Tracer };
20
31
  /**
21
32
  * A meter that provides instruments for recording metrics.
@@ -23,36 +34,32 @@ export type { Tracer };
23
34
  export interface Meter {
24
35
  /**
25
36
  * Creates a new gauge instrument. A gauge is a metric that represents a single numerical value that can arbitrarily go up and down.
26
- * @param name - The name of the gauge
27
- * @param options - The options for the gauge
37
+ * @param metric - The metric definition
28
38
  */
29
- createGauge(name: MetricsType, options?: MetricOptions): Gauge;
39
+ createGauge(metric: MetricDefinition): Gauge;
30
40
  /**
31
- * Creates a new gauge instrument. A gauge is a metric that represents a single numerical value that can arbitrarily go up and down.
32
- * @param name - The name of the gauge
33
- * @param options - The options for the gauge
41
+ * Creates a new observable gauge instrument. A gauge is a metric that represents a single numerical value that can arbitrarily go up and down.
42
+ * @param metric - The metric definition
34
43
  */
35
- createObservableGauge(name: MetricsType, options?: MetricOptions): ObservableGauge;
44
+ createObservableGauge(metric: MetricDefinition): ObservableGauge;
36
45
  addBatchObservableCallback(callback: BatchObservableCallback<AttributesType>, observables: Observable<AttributesType>[]): void;
37
46
  removeBatchObservableCallback(callback: BatchObservableCallback<AttributesType>, observables: Observable<AttributesType>[]): void;
38
47
  /**
39
48
  * Creates a new histogram instrument. A histogram is a metric that samples observations (usually things like request durations or response sizes) and counts them in configurable buckets.
40
- * @param name - The name of the histogram
41
- * @param options - The options for the histogram
49
+ * @param metric - The metric definition
50
+ * @param extraOptions - Optional extra options (e.g., advice for bucket boundaries)
42
51
  */
43
- createHistogram(name: MetricsType, options?: MetricOptions): Histogram;
52
+ createHistogram(metric: MetricDefinition, extraOptions?: Partial<MetricOptions>): Histogram;
44
53
  /**
45
54
  * Creates a new counter instrument. A counter can go up or down with a delta from the previous value.
46
- * @param name - The name of the counter
47
- * @param options - The options for the counter
55
+ * @param metric - The metric definition
48
56
  */
49
- createUpDownCounter(name: MetricsType, options?: MetricOptions): UpDownCounter;
57
+ createUpDownCounter(metric: MetricDefinition): UpDownCounter;
50
58
  /**
51
- * Creates a new gauge instrument. A gauge is a metric that represents a single numerical value that can arbitrarily go up and down.
52
- * @param name - The name of the gauge
53
- * @param options - The options for the gauge
59
+ * Creates a new observable up/down counter instrument.
60
+ * @param metric - The metric definition
54
61
  */
55
- createObservableUpDownCounter(name: MetricsType, options?: MetricOptions): ObservableUpDownCounter;
62
+ createObservableUpDownCounter(metric: MetricDefinition): ObservableUpDownCounter;
56
63
  }
57
64
  /**
58
65
  * A telemetry client that provides meters for recording metrics.
@@ -80,6 +87,23 @@ export interface TelemetryClient {
80
87
  * Flushes the telemetry client.
81
88
  */
82
89
  flush(): Promise<void>;
90
+ /**
91
+ * Updates what telemetry is exported to the public collector
92
+ */
93
+ setExportedPublicTelemetry(prefixes: string[]): void;
94
+ /**
95
+ * Updates the roles that would share telemetry (if enabled)
96
+ */
97
+ setPublicTelemetryCollectFrom(roles: string[]): void;
98
+ /**
99
+ * Get current trace context as an opaque string for propagation.
100
+ * Returns the W3C traceparent header value if a trace is active, undefined otherwise.
101
+ */
102
+ getTraceContext(): string | undefined;
103
+ /**
104
+ * Recreates a context propagated by a remote system
105
+ */
106
+ extractPropagatedContext(traceContext: string): Context | undefined;
83
107
  }
84
108
  /** Objects that adhere to this interface can use @trackSpan */
85
109
  export interface Traceable {
@@ -114,5 +138,10 @@ export declare function trackSpan<T extends Traceable, F extends (...args: any[]
114
138
  * @returns - A new function that wraps the callback in a span
115
139
  */
116
140
  export declare function wrapCallbackInSpan<F extends (...args: any[]) => any>(tracer: Tracer, spanName: string, attributes: AttributesType, callback: F): F;
117
- export declare function runInSpan<A extends any[], R>(tracer: Tracer | string, spanName: string, callback: (span: Span, ...args: A) => R): (...args: A) => R;
118
- //# sourceMappingURL=telemetry.d.ts.map
141
+ export declare function runInSpan<A extends any[], R>(tracer: Tracer | string, spanName: string, callback: (span: Span, ...args: A) => Promise<R>): (...args: A) => Promise<R>;
142
+ /**
143
+ * Execute a callback within a span immediately (for one-off traced calls).
144
+ * Unlike runInSpan which returns a reusable function, this executes right away.
145
+ */
146
+ export declare function execInSpan<R>(tracer: Tracer | string, spanName: string, callback: (span: Span) => Promise<R>): Promise<R>;
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdGVsZW1ldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGNBQWMsRUFDbkIsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSyxPQUFPLEVBQ1osS0FBSyxhQUFhLEVBQ2xCLEtBQUssVUFBVSxFQUNmLEtBQUsscUJBQXFCLElBQUkseUJBQXlCLEVBQ3ZELEtBQUssS0FBSyxJQUFJLFNBQVMsRUFDdkIsS0FBSyxTQUFTLElBQUksYUFBYSxFQUMvQixLQUFLLGVBQWUsSUFBSSxtQkFBbUIsRUFDM0MsS0FBSyxnQkFBZ0IsSUFBSSxvQkFBb0IsRUFDN0MsS0FBSyx1QkFBdUIsSUFBSSwyQkFBMkIsRUFDM0QsS0FBSyxhQUFhLElBQUksaUJBQWlCLEVBQ3ZDLEtBQUssSUFBSSxFQUVULEtBQUssTUFBTSxFQUNaLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxLQUFLLEtBQUssVUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVwRixPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxLQUFLLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhGLEtBQUssUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7QUFFakUsS0FBSyxjQUFjLEdBQUcsUUFBUSxDQUFDLE9BQU8sVUFBVSxDQUFDLENBQUM7QUFFbEQ7Ozs7OztHQU1HO0FBQ0gsS0FBSywwQkFBMEIsR0FBRyxDQUFDLE9BQU8sVUFBVSxDQUFDLENBQ2pELGNBQWMs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
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
package/dest/telemetry.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { SpanStatusCode } from '@opentelemetry/api';
2
- import { isPromise } from 'node:util/types';
3
2
  import { getTelemetryClient } from './start.js';
3
+ export { toMetricOptions, createUpDownCounterWithDefault } from './metric-utils.js';
4
4
  export { SpanStatusCode, ValueType } from '@opentelemetry/api';
5
5
  /**
6
6
  * Starts a new span whenever the decorated method is called.
@@ -27,19 +27,26 @@ export { SpanStatusCode, ValueType } from '@opentelemetry/api';
27
27
  // run originalMethod wrapped in an active span
28
28
  // "active" means the span will be alive for the duration of the function execution
29
29
  // and if any other spans are started during the execution of originalMethod, they will be children of this span
30
- // behind the scenes this uses AsyncLocalStorage https://nodejs.org/dist/latest-v18.x/docs/api/async_context.html
31
- return this.tracer.startActiveSpan(name, async (span)=>{
32
- span.setAttributes(currentAttrs ?? {});
30
+ // behind the scenes this uses AsyncLocalStorage https://nodejs.org/dist/latest-v22.x/docs/api/async_context.html
31
+ return this.tracer.startActiveSpan(name, {
32
+ attributes: currentAttrs
33
+ }, async (span)=>{
33
34
  try {
34
35
  const res = await originalMethod.call(this, ...args);
35
36
  const extraAttrs = extraAttributes?.call(this, res);
36
37
  span.setAttributes(extraAttrs ?? {});
38
+ span.setStatus({
39
+ code: SpanStatusCode.OK
40
+ });
37
41
  return res;
38
42
  } catch (err) {
39
43
  span.setStatus({
40
44
  code: SpanStatusCode.ERROR,
41
45
  message: String(err)
42
46
  });
47
+ if (typeof err === 'string' || err && err instanceof Error) {
48
+ span.recordException(err);
49
+ }
43
50
  throw err;
44
51
  } finally{
45
52
  span.end();
@@ -82,35 +89,51 @@ export { SpanStatusCode, ValueType } from '@opentelemetry/api';
82
89
  export function runInSpan(tracer, spanName, callback) {
83
90
  return (...args)=>{
84
91
  const actualTracer = typeof tracer === 'string' ? getTelemetryClient().getTracer(tracer) : tracer;
85
- return actualTracer.startActiveSpan(spanName, (span)=>{
86
- let deferSpanEnd = false;
92
+ return actualTracer.startActiveSpan(spanName, async (span)=>{
87
93
  try {
88
- const res = callback(span, ...args);
89
- if (isPromise(res)) {
90
- deferSpanEnd = true;
91
- return res.catch((err)=>{
92
- span.setStatus({
93
- code: SpanStatusCode.ERROR,
94
- message: String(err)
95
- });
96
- throw err;
97
- }).finally(()=>{
98
- span.end();
99
- });
100
- } else {
101
- return res;
102
- }
94
+ const res = await callback(span, ...args);
95
+ span.setStatus({
96
+ code: SpanStatusCode.OK
97
+ });
98
+ return res;
103
99
  } catch (err) {
104
100
  span.setStatus({
105
101
  code: SpanStatusCode.ERROR,
106
102
  message: String(err)
107
103
  });
104
+ if (typeof err === 'string' || err && err instanceof Error) {
105
+ span.recordException(err);
106
+ }
108
107
  throw err;
109
108
  } finally{
110
- if (!deferSpanEnd) {
111
- span.end();
112
- }
109
+ span.end();
113
110
  }
114
111
  });
115
112
  };
116
113
  }
114
+ /**
115
+ * Execute a callback within a span immediately (for one-off traced calls).
116
+ * Unlike runInSpan which returns a reusable function, this executes right away.
117
+ */ export function execInSpan(tracer, spanName, callback) {
118
+ const actualTracer = typeof tracer === 'string' ? getTelemetryClient().getTracer(tracer) : tracer;
119
+ return actualTracer.startActiveSpan(spanName, async (span)=>{
120
+ try {
121
+ const res = await callback(span);
122
+ span.setStatus({
123
+ code: SpanStatusCode.OK
124
+ });
125
+ return res;
126
+ } catch (err) {
127
+ span.setStatus({
128
+ code: SpanStatusCode.ERROR,
129
+ message: String(err)
130
+ });
131
+ if (typeof err === 'string' || err && err instanceof Error) {
132
+ span.recordException(err);
133
+ }
134
+ throw err;
135
+ } finally{
136
+ span.end();
137
+ }
138
+ });
139
+ }