@aztec/telemetry-client 1.0.0-staging.0 → 1.0.0-staging.1
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.
- package/dest/bench.d.ts +1 -0
- package/dest/bench.d.ts.map +1 -1
- package/dest/bench.js +1 -0
- package/dest/config.d.ts +2 -0
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +17 -6
- package/dest/noop.d.ts +1 -0
- package/dest/noop.d.ts.map +1 -1
- package/dest/noop.js +1 -0
- package/dest/otel.d.ts +3 -2
- package/dest/otel.d.ts.map +1 -1
- package/dest/otel.js +7 -4
- package/dest/otel_filter_metric_exporter.d.ts +7 -1
- package/dest/otel_filter_metric_exporter.d.ts.map +1 -1
- package/dest/otel_filter_metric_exporter.js +21 -0
- package/dest/telemetry.d.ts +4 -0
- package/dest/telemetry.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/bench.ts +1 -0
- package/src/config.ts +26 -6
- package/src/noop.ts +1 -0
- package/src/otel.ts +10 -6
- package/src/otel_filter_metric_exporter.ts +27 -1
- package/src/telemetry.ts +5 -0
package/dest/bench.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export declare class BenchmarkTelemetryClient implements TelemetryClient {
|
|
|
15
15
|
private meters;
|
|
16
16
|
constructor();
|
|
17
17
|
setExportedPublicTelemetry(_prefixes: string[]): void;
|
|
18
|
+
setPublicTelemetryCollectFrom(_roles: string[]): void;
|
|
18
19
|
getMeter(name: string): Meter;
|
|
19
20
|
getTracer(): Tracer;
|
|
20
21
|
stop(): Promise<void>;
|
package/dest/bench.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bench.d.ts","sourceRoot":"","sources":["../src/bench.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA2B,OAAO,EAA6B,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGjH,OAAO,KAAK,EACV,cAAc,EAGd,KAAK,EAIL,eAAe,EACf,MAAM,EAEP,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;QACxC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,MAAM,EAAE,kBAAkB,EAAE,CAAC;KAC9B,EAAE,CAAC;CACL,EAAE,CAAC;AAEJ,qBAAa,wBAAyB,YAAW,eAAe;IAC9D,OAAO,CAAC,MAAM,CAA4B;;IAO1C,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAErD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAM7B,SAAS,IAAI,MAAM;IAInB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,SAAS;IAIT,SAAS,IAAI,oBAAoB;IAIjC,KAAK;CAGN;AAgDD,MAAM,MAAM,kBAAkB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,cAAc,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"bench.d.ts","sourceRoot":"","sources":["../src/bench.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA2B,OAAO,EAA6B,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGjH,OAAO,KAAK,EACV,cAAc,EAGd,KAAK,EAIL,eAAe,EACf,MAAM,EAEP,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;QACxC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,MAAM,EAAE,kBAAkB,EAAE,CAAC;KAC9B,EAAE,CAAC;CACL,EAAE,CAAC;AAEJ,qBAAa,wBAAyB,YAAW,eAAe;IAC9D,OAAO,CAAC,MAAM,CAA4B;;IAO1C,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IACrD,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAErD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAM7B,SAAS,IAAI,MAAM;IAInB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,SAAS;IAIT,SAAS,IAAI,oBAAoB;IAIjC,KAAK;CAGN;AAgDD,MAAM,MAAM,kBAAkB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,cAAc,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC"}
|
package/dest/bench.js
CHANGED
|
@@ -7,6 +7,7 @@ export class BenchmarkTelemetryClient {
|
|
|
7
7
|
log.info(`Using benchmark telemetry client`);
|
|
8
8
|
}
|
|
9
9
|
setExportedPublicTelemetry(_prefixes) {}
|
|
10
|
+
setPublicTelemetryCollectFrom(_roles) {}
|
|
10
11
|
getMeter(name) {
|
|
11
12
|
const meter = new InMemoryPlainMeter(name);
|
|
12
13
|
this.meters.push(meter);
|
package/dest/config.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export interface TelemetryClientConfig {
|
|
|
3
3
|
metricsCollectorUrl?: URL;
|
|
4
4
|
publicMetricsCollectorUrl?: URL;
|
|
5
5
|
publicIncludeMetrics: string[];
|
|
6
|
+
publicMetricsOptOut: boolean;
|
|
7
|
+
publicMetricsCollectFrom: string[];
|
|
6
8
|
tracesCollectorUrl?: URL;
|
|
7
9
|
logsCollectorUrl?: URL;
|
|
8
10
|
otelCollectIntervalMs: number;
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAA8C,MAAM,0BAA0B,CAAC;AAE/G,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,CAAC,EAAE,GAAG,CAAC;IAC1B,yBAAyB,CAAC,EAAE,GAAG,CAAC;IAChC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,kBAAkB,CAAC,EAAE,GAAG,CAAC;IACzB,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,CAAC,qBAAqB,CA2EnF,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,qBAAqB,CAExD"}
|
package/dest/config.js
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
import { getConfigFromMappings } from '@aztec/foundation/config';
|
|
1
|
+
import { booleanConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
|
|
2
2
|
export const telemetryClientConfigMappings = {
|
|
3
3
|
metricsCollectorUrl: {
|
|
4
4
|
env: 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT',
|
|
5
5
|
description: 'The URL of the telemetry collector for metrics',
|
|
6
6
|
parseEnv: (val)=>val && new URL(val)
|
|
7
7
|
},
|
|
8
|
-
publicMetricsCollectorUrl: {
|
|
9
|
-
env: 'PUBLIC_OTEL_EXPORTER_OTLP_METRICS_ENDPOINT',
|
|
10
|
-
description: 'A URL to publish a subset of metrics for public consumption',
|
|
11
|
-
parseEnv: (val)=>val && new URL(val)
|
|
12
|
-
},
|
|
13
8
|
tracesCollectorUrl: {
|
|
14
9
|
env: 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT',
|
|
15
10
|
description: 'The URL of the telemetry collector for traces',
|
|
@@ -38,11 +33,27 @@ export const telemetryClientConfigMappings = {
|
|
|
38
33
|
parseEnv: (val)=>val ? val.split(',').map((s)=>s.trim()).filter((s)=>s.length > 0) : [],
|
|
39
34
|
defaultValue: []
|
|
40
35
|
},
|
|
36
|
+
publicMetricsCollectorUrl: {
|
|
37
|
+
env: 'PUBLIC_OTEL_EXPORTER_OTLP_METRICS_ENDPOINT',
|
|
38
|
+
description: 'A URL to publish a subset of metrics for public consumption',
|
|
39
|
+
parseEnv: (val)=>val && new URL(val)
|
|
40
|
+
},
|
|
41
|
+
publicMetricsCollectFrom: {
|
|
42
|
+
env: 'PUBLIC_OTEL_COLLECT_FROM',
|
|
43
|
+
description: 'The role types to collect metrics from',
|
|
44
|
+
parseEnv: (val)=>val ? val.split(',').map((s)=>s.trim()).filter((s)=>s.length > 0) : [],
|
|
45
|
+
defaultValue: []
|
|
46
|
+
},
|
|
41
47
|
publicIncludeMetrics: {
|
|
42
48
|
env: 'PUBLIC_OTEL_INCLUDE_METRICS',
|
|
43
49
|
description: 'A list of metric prefixes to publicly export',
|
|
44
50
|
parseEnv: (val)=>val ? val.split(',').map((s)=>s.trim()).filter((s)=>s.length > 0) : [],
|
|
45
51
|
defaultValue: []
|
|
52
|
+
},
|
|
53
|
+
publicMetricsOptOut: {
|
|
54
|
+
env: 'PUBLIC_OTEL_OPT_OUT',
|
|
55
|
+
description: 'Whether to opt out of sharing optional telemetry',
|
|
56
|
+
...booleanConfigHelper(false)
|
|
46
57
|
}
|
|
47
58
|
};
|
|
48
59
|
export function getConfigEnvVars() {
|
package/dest/noop.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type Meter, type Span, type Tracer } from '@opentelemetry/api';
|
|
|
2
2
|
import type { TelemetryClient } from './telemetry.js';
|
|
3
3
|
export declare class NoopTelemetryClient implements TelemetryClient {
|
|
4
4
|
setExportedPublicTelemetry(_prefixes: string[]): void;
|
|
5
|
+
setPublicTelemetryCollectFrom(_roles: string[]): void;
|
|
5
6
|
getMeter(): Meter;
|
|
6
7
|
getTracer(): Tracer;
|
|
7
8
|
stop(): Promise<void>;
|
package/dest/noop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noop.d.ts","sourceRoot":"","sources":["../src/noop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,IAAI,EAAoB,KAAK,MAAM,EAAmB,MAAM,oBAAoB,CAAC;AAE3G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,qBAAa,mBAAoB,YAAW,eAAe;IACzD,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAErD,QAAQ,IAAI,KAAK;IAIjB,SAAS,IAAI,MAAM;IAInB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,SAAS;CAGV;AAKD,qBAAa,UAAW,YAAW,MAAM;IACvC,SAAS,IAAI,IAAI;IAIjB,eAAe,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;CAKrG"}
|
|
1
|
+
{"version":3,"file":"noop.d.ts","sourceRoot":"","sources":["../src/noop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,IAAI,EAAoB,KAAK,MAAM,EAAmB,MAAM,oBAAoB,CAAC;AAE3G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,qBAAa,mBAAoB,YAAW,eAAe;IACzD,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IACrD,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAErD,QAAQ,IAAI,KAAK;IAIjB,SAAS,IAAI,MAAM;IAInB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,SAAS;CAGV;AAKD,qBAAa,UAAW,YAAW,MAAM;IACvC,SAAS,IAAI,IAAI;IAIjB,eAAe,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;CAKrG"}
|
package/dest/noop.js
CHANGED
package/dest/otel.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { LoggerProvider } from '@opentelemetry/sdk-logs';
|
|
|
6
6
|
import { MeterProvider, type PeriodicExportingMetricReaderOptions } from '@opentelemetry/sdk-metrics';
|
|
7
7
|
import type { TelemetryClientConfig } from './config.js';
|
|
8
8
|
import { NodejsMetricsMonitor } from './nodejs_metrics_monitor.js';
|
|
9
|
-
import {
|
|
9
|
+
import { PublicOtelFilterMetricExporter } from './otel_filter_metric_exporter.js';
|
|
10
10
|
import type { TelemetryClient } from './telemetry.js';
|
|
11
11
|
export type OpenTelemetryClientFactory = (resource: IResource, log: Logger) => OpenTelemetryClient;
|
|
12
12
|
export declare class OpenTelemetryClient implements TelemetryClient {
|
|
@@ -20,8 +20,9 @@ export declare class OpenTelemetryClient implements TelemetryClient {
|
|
|
20
20
|
nodejsMetricsMonitor: NodejsMetricsMonitor | undefined;
|
|
21
21
|
private meters;
|
|
22
22
|
private tracers;
|
|
23
|
-
protected constructor(resource: IResource, meterProvider: MeterProvider, traceProvider: TracerProvider, loggerProvider: LoggerProvider | undefined, publicMetricExporter:
|
|
23
|
+
protected constructor(resource: IResource, meterProvider: MeterProvider, traceProvider: TracerProvider, loggerProvider: LoggerProvider | undefined, publicMetricExporter: PublicOtelFilterMetricExporter | undefined, log: Logger);
|
|
24
24
|
setExportedPublicTelemetry(metrics: string[]): void;
|
|
25
|
+
setPublicTelemetryCollectFrom(roles: string[]): void;
|
|
25
26
|
getMeter(name: string): Meter;
|
|
26
27
|
getTracer(name: string): Tracer;
|
|
27
28
|
start(): void;
|
package/dest/otel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAqB,MAAM,uBAAuB,CAAC;AAErF,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,cAAc,EAKpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAGL,aAAa,EAEb,KAAK,oCAAoC,EAE1C,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAqB,MAAM,uBAAuB,CAAC;AAErF,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,cAAc,EAKpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAGL,aAAa,EAEb,KAAK,oCAAoC,EAE1C,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAA4B,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAG5G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,MAAM,0BAA0B,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,mBAAmB,CAAC;AAEnG,qBAAa,mBAAoB,YAAW,eAAe;IAOvD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,GAAG;IAXb,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,oBAAoB,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACvD,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,OAAO,CAAkD;IAEjE,SAAS,aACC,QAAQ,EAAE,SAAS,EACnB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,oBAAoB,EAAE,8BAA8B,GAAG,SAAS,EAChE,GAAG,EAAE,MAAM;IAGrB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAInD,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIpD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAS7B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IASxB,KAAK;IA+BL,SAAS;IAIH,KAAK;IAQL,IAAI;WAkBH,mBAAmB,CAC/B,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,KAAK,CAAC,oCAAoC,CAAC,GACrD,aAAa;IAiIhB,OAAO,CAAC,MAAM,CAAC,sBAAsB;WAiDvB,cAAc,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB;CAS9F"}
|
package/dest/otel.js
CHANGED
|
@@ -7,7 +7,7 @@ import { ExplicitBucketHistogramAggregation, InstrumentType, MeterProvider, Peri
|
|
|
7
7
|
import { BatchSpanProcessor, NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
|
|
8
8
|
import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
|
|
9
9
|
import { NodejsMetricsMonitor } from './nodejs_metrics_monitor.js';
|
|
10
|
-
import { OtelFilterMetricExporter } from './otel_filter_metric_exporter.js';
|
|
10
|
+
import { OtelFilterMetricExporter, PublicOtelFilterMetricExporter } from './otel_filter_metric_exporter.js';
|
|
11
11
|
import { registerOtelLoggerProvider } from './otel_logger_provider.js';
|
|
12
12
|
import { getOtelResource } from './otel_resource.js';
|
|
13
13
|
export class OpenTelemetryClient {
|
|
@@ -34,6 +34,9 @@ export class OpenTelemetryClient {
|
|
|
34
34
|
setExportedPublicTelemetry(metrics) {
|
|
35
35
|
this.publicMetricExporter?.setMetricPrefixes(metrics);
|
|
36
36
|
}
|
|
37
|
+
setPublicTelemetryCollectFrom(roles) {
|
|
38
|
+
this.publicMetricExporter?.setAllowedRoles(roles);
|
|
39
|
+
}
|
|
37
40
|
getMeter(name) {
|
|
38
41
|
let meter = this.meters.get(name);
|
|
39
42
|
if (!meter) {
|
|
@@ -347,14 +350,14 @@ export class OpenTelemetryClient {
|
|
|
347
350
|
});
|
|
348
351
|
}
|
|
349
352
|
let publicExporter;
|
|
350
|
-
if (config.publicMetricsCollectorUrl && config.
|
|
353
|
+
if (config.publicMetricsCollectorUrl && !config.publicMetricsOptOut) {
|
|
351
354
|
log.info(`Exporting public metrics: ${config.publicIncludeMetrics}`, {
|
|
352
355
|
publicMetrics: config.publicIncludeMetrics,
|
|
353
356
|
collectorUrl: config.publicMetricsCollectorUrl
|
|
354
357
|
});
|
|
355
|
-
publicExporter = new
|
|
358
|
+
publicExporter = new PublicOtelFilterMetricExporter(config.publicMetricsCollectFrom, new OTLPMetricExporter({
|
|
356
359
|
url: config.publicMetricsCollectorUrl.href
|
|
357
|
-
}), config.publicIncludeMetrics
|
|
360
|
+
}), config.publicIncludeMetrics);
|
|
358
361
|
exporters.push({
|
|
359
362
|
exporter: publicExporter,
|
|
360
363
|
exportTimeoutMillis: config.otelExportTimeoutMs,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ExportResult } from '@opentelemetry/core';
|
|
2
2
|
import type { PushMetricExporter, ResourceMetrics } from '@opentelemetry/sdk-metrics';
|
|
3
3
|
export declare class OtelFilterMetricExporter implements PushMetricExporter {
|
|
4
4
|
private readonly exporter;
|
|
@@ -11,4 +11,10 @@ export declare class OtelFilterMetricExporter implements PushMetricExporter {
|
|
|
11
11
|
shutdown(): Promise<void>;
|
|
12
12
|
setMetricPrefixes(metrics: string[]): void;
|
|
13
13
|
}
|
|
14
|
+
export declare class PublicOtelFilterMetricExporter extends OtelFilterMetricExporter {
|
|
15
|
+
private allowedRoles;
|
|
16
|
+
constructor(allowedRoles: string[], exporter: PushMetricExporter, metricPrefix: string[]);
|
|
17
|
+
export(metrics: ResourceMetrics, resultCallback: (result: ExportResult) => void): void;
|
|
18
|
+
setAllowedRoles(roles: string[]): void;
|
|
19
|
+
}
|
|
14
20
|
//# sourceMappingURL=otel_filter_metric_exporter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otel_filter_metric_exporter.d.ts","sourceRoot":"","sources":["../src/otel_filter_metric_exporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"otel_filter_metric_exporter.d.ts","sourceRoot":"","sources":["../src/otel_filter_metric_exporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EAAc,kBAAkB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAIlG,qBAAa,wBAAyB,YAAW,kBAAkB;IAE/D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,QAAQ,EAAE,kBAAkB,EACrC,YAAY,EAAE,MAAM,EAAE,EACb,MAAM,GAAE,OAAO,GAAG,MAAe;IAU7C,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IAW7F,OAAO,CAAC,aAAa;IAcd,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE;CAG3C;AAED,qBAAa,8BAA+B,SAAQ,wBAAwB;IAExE,OAAO,CAAC,YAAY;gBAAZ,YAAY,EAAE,MAAM,EAAE,EAC9B,QAAQ,EAAE,kBAAkB,EAC5B,YAAY,EAAE,MAAM,EAAE;IAKR,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IAU/F,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE;CAGvC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { ExportResultCode } from '@opentelemetry/core';
|
|
2
|
+
import { AZTEC_NODE_ROLE } from './attributes.js';
|
|
1
3
|
export class OtelFilterMetricExporter {
|
|
2
4
|
exporter;
|
|
3
5
|
metricPrefix;
|
|
@@ -44,3 +46,22 @@ export class OtelFilterMetricExporter {
|
|
|
44
46
|
this.metricPrefix = metrics;
|
|
45
47
|
}
|
|
46
48
|
}
|
|
49
|
+
export class PublicOtelFilterMetricExporter extends OtelFilterMetricExporter {
|
|
50
|
+
allowedRoles;
|
|
51
|
+
constructor(allowedRoles, exporter, metricPrefix){
|
|
52
|
+
super(exporter, metricPrefix, 'allow'), this.allowedRoles = allowedRoles;
|
|
53
|
+
}
|
|
54
|
+
export(metrics, resultCallback) {
|
|
55
|
+
const role = String(metrics.resource.attributes[AZTEC_NODE_ROLE] ?? '');
|
|
56
|
+
if (!role || !this.allowedRoles.includes(role)) {
|
|
57
|
+
// noop
|
|
58
|
+
return resultCallback({
|
|
59
|
+
code: ExportResultCode.SUCCESS
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
super.export(metrics, resultCallback);
|
|
63
|
+
}
|
|
64
|
+
setAllowedRoles(roles) {
|
|
65
|
+
this.allowedRoles = roles;
|
|
66
|
+
}
|
|
67
|
+
}
|
package/dest/telemetry.d.ts
CHANGED
|
@@ -93,6 +93,10 @@ export interface TelemetryClient {
|
|
|
93
93
|
* Updates what telemetry is exported to the public collector
|
|
94
94
|
*/
|
|
95
95
|
setExportedPublicTelemetry(prefixes: string[]): void;
|
|
96
|
+
/**
|
|
97
|
+
* Updates the roles that would share telemetry (if enabled)
|
|
98
|
+
*/
|
|
99
|
+
setPublicTelemetryCollectFrom(roles: string[]): void;
|
|
96
100
|
}
|
|
97
101
|
/** Objects that adhere to this interface can use @trackSpan */
|
|
98
102
|
export interface Traceable {
|
package/dest/telemetry.d.ts.map
CHANGED
|
@@ -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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/telemetry-client",
|
|
3
|
-
"version": "1.0.0-staging.
|
|
3
|
+
"version": "1.0.0-staging.1",
|
|
4
4
|
"inherits": [
|
|
5
5
|
"../package.common.json"
|
|
6
6
|
],
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"!*.test.*"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@aztec/foundation": "1.0.0-staging.
|
|
29
|
-
"@aztec/stdlib": "1.0.0-staging.
|
|
28
|
+
"@aztec/foundation": "1.0.0-staging.1",
|
|
29
|
+
"@aztec/stdlib": "1.0.0-staging.1",
|
|
30
30
|
"@opentelemetry/api": "^1.9.0",
|
|
31
31
|
"@opentelemetry/api-logs": "^0.55.0",
|
|
32
32
|
"@opentelemetry/core": "^1.28.0",
|
package/src/bench.ts
CHANGED
|
@@ -37,6 +37,7 @@ export class BenchmarkTelemetryClient implements TelemetryClient {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
setExportedPublicTelemetry(_prefixes: string[]): void {}
|
|
40
|
+
setPublicTelemetryCollectFrom(_roles: string[]): void {}
|
|
40
41
|
|
|
41
42
|
getMeter(name: string): Meter {
|
|
42
43
|
const meter = new InMemoryPlainMeter(name);
|
package/src/config.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { type ConfigMappingsType, getConfigFromMappings } from '@aztec/foundation/config';
|
|
1
|
+
import { type ConfigMappingsType, booleanConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
|
|
2
2
|
|
|
3
3
|
export interface TelemetryClientConfig {
|
|
4
4
|
metricsCollectorUrl?: URL;
|
|
5
5
|
publicMetricsCollectorUrl?: URL;
|
|
6
6
|
publicIncludeMetrics: string[];
|
|
7
|
+
publicMetricsOptOut: boolean;
|
|
8
|
+
publicMetricsCollectFrom: string[];
|
|
7
9
|
tracesCollectorUrl?: URL;
|
|
8
10
|
logsCollectorUrl?: URL;
|
|
9
11
|
otelCollectIntervalMs: number;
|
|
@@ -17,11 +19,6 @@ export const telemetryClientConfigMappings: ConfigMappingsType<TelemetryClientCo
|
|
|
17
19
|
description: 'The URL of the telemetry collector for metrics',
|
|
18
20
|
parseEnv: (val: string) => val && new URL(val),
|
|
19
21
|
},
|
|
20
|
-
publicMetricsCollectorUrl: {
|
|
21
|
-
env: 'PUBLIC_OTEL_EXPORTER_OTLP_METRICS_ENDPOINT',
|
|
22
|
-
description: 'A URL to publish a subset of metrics for public consumption',
|
|
23
|
-
parseEnv: (val: string) => val && new URL(val),
|
|
24
|
-
},
|
|
25
22
|
tracesCollectorUrl: {
|
|
26
23
|
env: 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT',
|
|
27
24
|
description: 'The URL of the telemetry collector for traces',
|
|
@@ -56,6 +53,24 @@ export const telemetryClientConfigMappings: ConfigMappingsType<TelemetryClientCo
|
|
|
56
53
|
: [],
|
|
57
54
|
defaultValue: [],
|
|
58
55
|
},
|
|
56
|
+
|
|
57
|
+
publicMetricsCollectorUrl: {
|
|
58
|
+
env: 'PUBLIC_OTEL_EXPORTER_OTLP_METRICS_ENDPOINT',
|
|
59
|
+
description: 'A URL to publish a subset of metrics for public consumption',
|
|
60
|
+
parseEnv: (val: string) => val && new URL(val),
|
|
61
|
+
},
|
|
62
|
+
publicMetricsCollectFrom: {
|
|
63
|
+
env: 'PUBLIC_OTEL_COLLECT_FROM',
|
|
64
|
+
description: 'The role types to collect metrics from',
|
|
65
|
+
parseEnv: (val: string) =>
|
|
66
|
+
val
|
|
67
|
+
? val
|
|
68
|
+
.split(',')
|
|
69
|
+
.map(s => s.trim())
|
|
70
|
+
.filter(s => s.length > 0)
|
|
71
|
+
: [],
|
|
72
|
+
defaultValue: [],
|
|
73
|
+
},
|
|
59
74
|
publicIncludeMetrics: {
|
|
60
75
|
env: 'PUBLIC_OTEL_INCLUDE_METRICS',
|
|
61
76
|
description: 'A list of metric prefixes to publicly export',
|
|
@@ -68,6 +83,11 @@ export const telemetryClientConfigMappings: ConfigMappingsType<TelemetryClientCo
|
|
|
68
83
|
: [],
|
|
69
84
|
defaultValue: [],
|
|
70
85
|
},
|
|
86
|
+
publicMetricsOptOut: {
|
|
87
|
+
env: 'PUBLIC_OTEL_OPT_OUT',
|
|
88
|
+
description: 'Whether to opt out of sharing optional telemetry',
|
|
89
|
+
...booleanConfigHelper(false),
|
|
90
|
+
},
|
|
71
91
|
};
|
|
72
92
|
|
|
73
93
|
export function getConfigEnvVars(): TelemetryClientConfig {
|
package/src/noop.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { TelemetryClient } from './telemetry.js';
|
|
|
4
4
|
|
|
5
5
|
export class NoopTelemetryClient implements TelemetryClient {
|
|
6
6
|
setExportedPublicTelemetry(_prefixes: string[]): void {}
|
|
7
|
+
setPublicTelemetryCollectFrom(_roles: string[]): void {}
|
|
7
8
|
|
|
8
9
|
getMeter(): Meter {
|
|
9
10
|
return createNoopMeter();
|
package/src/otel.ts
CHANGED
|
@@ -29,7 +29,7 @@ import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic
|
|
|
29
29
|
|
|
30
30
|
import type { TelemetryClientConfig } from './config.js';
|
|
31
31
|
import { NodejsMetricsMonitor } from './nodejs_metrics_monitor.js';
|
|
32
|
-
import { OtelFilterMetricExporter } from './otel_filter_metric_exporter.js';
|
|
32
|
+
import { OtelFilterMetricExporter, PublicOtelFilterMetricExporter } from './otel_filter_metric_exporter.js';
|
|
33
33
|
import { registerOtelLoggerProvider } from './otel_logger_provider.js';
|
|
34
34
|
import { getOtelResource } from './otel_resource.js';
|
|
35
35
|
import type { TelemetryClient } from './telemetry.js';
|
|
@@ -47,7 +47,7 @@ export class OpenTelemetryClient implements TelemetryClient {
|
|
|
47
47
|
private meterProvider: MeterProvider,
|
|
48
48
|
private traceProvider: TracerProvider,
|
|
49
49
|
private loggerProvider: LoggerProvider | undefined,
|
|
50
|
-
private publicMetricExporter:
|
|
50
|
+
private publicMetricExporter: PublicOtelFilterMetricExporter | undefined,
|
|
51
51
|
private log: Logger,
|
|
52
52
|
) {}
|
|
53
53
|
|
|
@@ -55,6 +55,10 @@ export class OpenTelemetryClient implements TelemetryClient {
|
|
|
55
55
|
this.publicMetricExporter?.setMetricPrefixes(metrics);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
setPublicTelemetryCollectFrom(roles: string[]): void {
|
|
59
|
+
this.publicMetricExporter?.setAllowedRoles(roles);
|
|
60
|
+
}
|
|
61
|
+
|
|
58
62
|
getMeter(name: string): Meter {
|
|
59
63
|
let meter = this.meters.get(name);
|
|
60
64
|
if (!meter) {
|
|
@@ -290,16 +294,16 @@ export class OpenTelemetryClient implements TelemetryClient {
|
|
|
290
294
|
});
|
|
291
295
|
}
|
|
292
296
|
|
|
293
|
-
let publicExporter:
|
|
294
|
-
if (config.publicMetricsCollectorUrl && config.
|
|
297
|
+
let publicExporter: PublicOtelFilterMetricExporter | undefined;
|
|
298
|
+
if (config.publicMetricsCollectorUrl && !config.publicMetricsOptOut) {
|
|
295
299
|
log.info(`Exporting public metrics: ${config.publicIncludeMetrics}`, {
|
|
296
300
|
publicMetrics: config.publicIncludeMetrics,
|
|
297
301
|
collectorUrl: config.publicMetricsCollectorUrl,
|
|
298
302
|
});
|
|
299
|
-
publicExporter = new
|
|
303
|
+
publicExporter = new PublicOtelFilterMetricExporter(
|
|
304
|
+
config.publicMetricsCollectFrom,
|
|
300
305
|
new OTLPMetricExporter({ url: config.publicMetricsCollectorUrl.href }),
|
|
301
306
|
config.publicIncludeMetrics,
|
|
302
|
-
'allow',
|
|
303
307
|
);
|
|
304
308
|
exporters.push({
|
|
305
309
|
exporter: publicExporter,
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ExportResult, ExportResultCode } from '@opentelemetry/core';
|
|
2
2
|
import type { MetricData, PushMetricExporter, ResourceMetrics } from '@opentelemetry/sdk-metrics';
|
|
3
3
|
|
|
4
|
+
import { AZTEC_NODE_ROLE } from './attributes.js';
|
|
5
|
+
|
|
4
6
|
export class OtelFilterMetricExporter implements PushMetricExporter {
|
|
5
7
|
constructor(
|
|
6
8
|
private readonly exporter: PushMetricExporter,
|
|
@@ -52,3 +54,27 @@ export class OtelFilterMetricExporter implements PushMetricExporter {
|
|
|
52
54
|
this.metricPrefix = metrics;
|
|
53
55
|
}
|
|
54
56
|
}
|
|
57
|
+
|
|
58
|
+
export class PublicOtelFilterMetricExporter extends OtelFilterMetricExporter {
|
|
59
|
+
constructor(
|
|
60
|
+
private allowedRoles: string[],
|
|
61
|
+
exporter: PushMetricExporter,
|
|
62
|
+
metricPrefix: string[],
|
|
63
|
+
) {
|
|
64
|
+
super(exporter, metricPrefix, 'allow');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
public override export(metrics: ResourceMetrics, resultCallback: (result: ExportResult) => void): void {
|
|
68
|
+
const role = String(metrics.resource.attributes[AZTEC_NODE_ROLE] ?? '');
|
|
69
|
+
if (!role || !this.allowedRoles.includes(role)) {
|
|
70
|
+
// noop
|
|
71
|
+
return resultCallback({ code: ExportResultCode.SUCCESS });
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
super.export(metrics, resultCallback);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
public setAllowedRoles(roles: string[]) {
|
|
78
|
+
this.allowedRoles = roles;
|
|
79
|
+
}
|
|
80
|
+
}
|
package/src/telemetry.ts
CHANGED
|
@@ -155,6 +155,11 @@ export interface TelemetryClient {
|
|
|
155
155
|
* Updates what telemetry is exported to the public collector
|
|
156
156
|
*/
|
|
157
157
|
setExportedPublicTelemetry(prefixes: string[]): void;
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Updates the roles that would share telemetry (if enabled)
|
|
161
|
+
*/
|
|
162
|
+
setPublicTelemetryCollectFrom(roles: string[]): void;
|
|
158
163
|
}
|
|
159
164
|
|
|
160
165
|
/** Objects that adhere to this interface can use @trackSpan */
|