@aztec/telemetry-client 0.0.1-commit.fce3e4f → 0.0.1-commit.fffb133c

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 (53) hide show
  1. package/dest/attributes.d.ts +10 -1
  2. package/dest/attributes.d.ts.map +1 -1
  3. package/dest/attributes.js +5 -0
  4. package/dest/bench.d.ts +3 -1
  5. package/dest/bench.d.ts.map +1 -1
  6. package/dest/bench.js +24 -14
  7. package/dest/l1_metrics.d.ts +2 -2
  8. package/dest/l1_metrics.d.ts.map +1 -1
  9. package/dest/l1_metrics.js +4 -20
  10. package/dest/lmdb_metrics.d.ts +3 -3
  11. package/dest/lmdb_metrics.d.ts.map +1 -1
  12. package/dest/lmdb_metrics.js +4 -20
  13. package/dest/metric-utils.d.ts +5 -0
  14. package/dest/metric-utils.d.ts.map +1 -0
  15. package/dest/metric-utils.js +7 -0
  16. package/dest/metrics.d.ts +246 -206
  17. package/dest/metrics.d.ts.map +1 -1
  18. package/dest/metrics.js +1238 -204
  19. package/dest/nodejs_metrics_monitor.d.ts +3 -5
  20. package/dest/nodejs_metrics_monitor.d.ts.map +1 -1
  21. package/dest/nodejs_metrics_monitor.js +14 -41
  22. package/dest/noop.d.ts +6 -3
  23. package/dest/noop.d.ts.map +1 -1
  24. package/dest/noop.js +32 -1
  25. package/dest/otel.d.ts +5 -3
  26. package/dest/otel.d.ts.map +1 -1
  27. package/dest/otel.js +51 -4
  28. package/dest/prom_otel_adapter.d.ts +1 -1
  29. package/dest/prom_otel_adapter.d.ts.map +1 -1
  30. package/dest/prom_otel_adapter.js +15 -7
  31. package/dest/start.d.ts +2 -2
  32. package/dest/start.d.ts.map +1 -1
  33. package/dest/start.js +3 -2
  34. package/dest/telemetry.d.ts +35 -24
  35. package/dest/telemetry.d.ts.map +1 -1
  36. package/dest/telemetry.js +46 -23
  37. package/dest/wrappers/l2_block_stream.d.ts +4 -3
  38. package/dest/wrappers/l2_block_stream.d.ts.map +1 -1
  39. package/dest/wrappers/l2_block_stream.js +385 -11
  40. package/package.json +8 -6
  41. package/src/attributes.ts +13 -0
  42. package/src/bench.ts +27 -15
  43. package/src/l1_metrics.ts +5 -20
  44. package/src/lmdb_metrics.ts +5 -26
  45. package/src/metric-utils.ts +12 -0
  46. package/src/metrics.ts +1311 -249
  47. package/src/nodejs_metrics_monitor.ts +16 -52
  48. package/src/noop.ts +61 -3
  49. package/src/otel.ts +76 -6
  50. package/src/prom_otel_adapter.ts +12 -18
  51. package/src/start.ts +3 -2
  52. package/src/telemetry.ts +102 -65
  53. package/src/wrappers/l2_block_stream.ts +6 -2
package/src/bench.ts CHANGED
@@ -2,13 +2,13 @@ import { createLogger } from '@aztec/foundation/log';
2
2
 
3
3
  import type { BatchObservableCallback, Context, MetricOptions, Observable, ValueType } from '@opentelemetry/api';
4
4
 
5
+ import type { MetricDefinition } from './metrics.js';
5
6
  import { NoopTracer } from './noop.js';
6
7
  import type {
7
8
  AttributesType,
8
9
  Gauge,
9
10
  Histogram,
10
11
  Meter,
11
- MetricsType,
12
12
  ObservableGauge,
13
13
  ObservableUpDownCounter,
14
14
  TelemetryClient,
@@ -61,6 +61,14 @@ export class BenchmarkTelemetryClient implements TelemetryClient {
61
61
  return true;
62
62
  }
63
63
 
64
+ getTraceContext(): string | undefined {
65
+ return undefined;
66
+ }
67
+
68
+ extractPropagatedContext() {
69
+ return undefined;
70
+ }
71
+
64
72
  getMeters(): BenchmarkMetricsType {
65
73
  return this.meters;
66
74
  }
@@ -79,30 +87,34 @@ class InMemoryPlainMeter implements Meter {
79
87
  this.metrics.forEach(metric => metric.clear());
80
88
  }
81
89
 
82
- createGauge(name: MetricsType, options?: MetricOptions): Gauge {
83
- return this.createMetric('gauge', name, options);
90
+ createGauge(metric: MetricDefinition): Gauge {
91
+ return this.createMetric('gauge', metric);
84
92
  }
85
93
 
86
- createObservableGauge(name: MetricsType, options?: MetricOptions): ObservableGauge {
87
- return this.createMetric('gauge', name, options);
94
+ createObservableGauge(metric: MetricDefinition): ObservableGauge {
95
+ return this.createMetric('gauge', metric);
88
96
  }
89
97
 
90
- createHistogram(name: MetricsType, options?: MetricOptions): Histogram {
91
- return this.createMetric('histogram', name, options);
98
+ createHistogram(metric: MetricDefinition, _extraOptions?: Partial<MetricOptions>): Histogram {
99
+ return this.createMetric('histogram', metric);
92
100
  }
93
101
 
94
- createUpDownCounter(name: MetricsType, options?: MetricOptions): UpDownCounter {
95
- return this.createMetric('counter', name, options);
102
+ createUpDownCounter(metric: MetricDefinition): UpDownCounter {
103
+ return this.createMetric('counter', metric);
96
104
  }
97
105
 
98
- createObservableUpDownCounter(name: MetricsType, options?: MetricOptions): ObservableUpDownCounter {
99
- return this.createMetric('counter', name, options);
106
+ createObservableUpDownCounter(metric: MetricDefinition): ObservableUpDownCounter {
107
+ return this.createMetric('counter', metric);
100
108
  }
101
109
 
102
- private createMetric(type: 'gauge' | 'counter' | 'histogram', name: string, options?: MetricOptions) {
103
- const metric = new InMemoryPlainMetric(type, name, options);
104
- this.metrics.push(metric);
105
- return metric;
110
+ private createMetric(type: 'gauge' | 'counter' | 'histogram', metric: MetricDefinition) {
111
+ const m = new InMemoryPlainMetric(type, metric.name, {
112
+ description: metric.description,
113
+ unit: metric.unit,
114
+ valueType: metric.valueType,
115
+ });
116
+ this.metrics.push(m);
117
+ return m;
106
118
  }
107
119
 
108
120
  addBatchObservableCallback(
package/src/l1_metrics.ts CHANGED
@@ -4,7 +4,7 @@ import { type Chain, type FallbackTransport, type Hex, type HttpTransport, type
4
4
 
5
5
  import { L1_SENDER } from './attributes.js';
6
6
  import { L1_BALANCE_ETH, L1_BLOB_BASE_FEE_WEI, L1_BLOCK_HEIGHT, L1_GAS_PRICE_WEI } from './metrics.js';
7
- import { type BatchObservableResult, type Meter, type ObservableGauge, ValueType } from './telemetry.js';
7
+ import type { BatchObservableResult, Meter, ObservableGauge } from './telemetry.js';
8
8
 
9
9
  export class L1Metrics {
10
10
  private l1BlockHeight: ObservableGauge;
@@ -18,25 +18,10 @@ export class L1Metrics {
18
18
  private client: PublicClient<FallbackTransport<HttpTransport[]>, Chain>,
19
19
  addresses: EthAddress[],
20
20
  ) {
21
- this.l1BlockHeight = meter.createObservableGauge(L1_BLOCK_HEIGHT, {
22
- description: 'The latest L1 block seen',
23
- valueType: ValueType.INT,
24
- });
25
- this.l1BalanceEth = meter.createObservableGauge(L1_BALANCE_ETH, {
26
- description: 'Eth balance of an address',
27
- unit: 'eth',
28
- valueType: ValueType.DOUBLE,
29
- });
30
- this.gasPriceWei = meter.createObservableGauge(L1_GAS_PRICE_WEI, {
31
- description: 'L1 gas price',
32
- unit: 'wei',
33
- valueType: ValueType.DOUBLE,
34
- });
35
- this.blobBaseFeeWei = meter.createObservableGauge(L1_BLOB_BASE_FEE_WEI, {
36
- description: 'L1 blob fee',
37
- unit: 'wei',
38
- valueType: ValueType.DOUBLE,
39
- });
21
+ this.l1BlockHeight = meter.createObservableGauge(L1_BLOCK_HEIGHT);
22
+ this.l1BalanceEth = meter.createObservableGauge(L1_BALANCE_ETH);
23
+ this.gasPriceWei = meter.createObservableGauge(L1_GAS_PRICE_WEI);
24
+ this.blobBaseFeeWei = meter.createObservableGauge(L1_BLOB_BASE_FEE_WEI);
40
25
 
41
26
  this.addresses = addresses.map(addr => addr.toString());
42
27
  }
@@ -1,11 +1,5 @@
1
1
  import * as Metrics from './metrics.js';
2
- import {
3
- type AttributesType,
4
- type BatchObservableResult,
5
- type Meter,
6
- type ObservableGauge,
7
- ValueType,
8
- } from './telemetry.js';
2
+ import type { AttributesType, BatchObservableResult, Meter, ObservableGauge } from './telemetry.js';
9
3
 
10
4
  export type LmdbStatsCallback = () => Promise<{
11
5
  mappingSize: number;
@@ -25,25 +19,10 @@ export class LmdbMetrics {
25
19
  private attributes?: AttributesType,
26
20
  private getStats?: LmdbStatsCallback,
27
21
  ) {
28
- this.dbMapSize = meter.createObservableGauge(Metrics.DB_MAP_SIZE, {
29
- description: 'LMDB Map Size',
30
- valueType: ValueType.INT,
31
- unit: 'By',
32
- });
33
- this.dbPhysicalFileSize = meter.createObservableGauge(Metrics.DB_PHYSICAL_FILE_SIZE, {
34
- description: 'LMDB Physical File Size',
35
- valueType: ValueType.INT,
36
- unit: 'By',
37
- });
38
- this.dbUsedSize = meter.createObservableGauge(Metrics.DB_USED_SIZE, {
39
- description: 'LMDB Used Size',
40
- valueType: ValueType.INT,
41
- unit: 'By',
42
- });
43
- this.dbNumItems = meter.createObservableGauge(Metrics.DB_NUM_ITEMS, {
44
- description: 'LMDB Num Items',
45
- valueType: ValueType.INT,
46
- });
22
+ this.dbMapSize = meter.createObservableGauge(Metrics.DB_MAP_SIZE);
23
+ this.dbPhysicalFileSize = meter.createObservableGauge(Metrics.DB_PHYSICAL_FILE_SIZE);
24
+ this.dbUsedSize = meter.createObservableGauge(Metrics.DB_USED_SIZE);
25
+ this.dbNumItems = meter.createObservableGauge(Metrics.DB_NUM_ITEMS);
47
26
 
48
27
  meter.addBatchObservableCallback(this.recordDBMetrics, [
49
28
  this.dbMapSize,
@@ -0,0 +1,12 @@
1
+ import type { MetricOptions } from '@opentelemetry/api';
2
+
3
+ import type { MetricDefinition } from './metrics.js';
4
+
5
+ /** Extracts OpenTelemetry MetricOptions from a MetricDefinition */
6
+ export function toMetricOptions(def: MetricDefinition): MetricOptions {
7
+ return {
8
+ description: def.description,
9
+ unit: def.unit,
10
+ valueType: def.valueType,
11
+ };
12
+ }