@sentio/runtime 2.44.0-rc.3 → 2.44.0-rc.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentio/runtime",
3
- "version": "2.44.0-rc.3",
3
+ "version": "2.44.0-rc.4",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "exports": {
package/src/metrics.ts CHANGED
@@ -1,13 +1,18 @@
1
1
  import { Attributes, Counter, metrics, Gauge } from '@opentelemetry/api'
2
2
 
3
- const meter = metrics.getMeter('processor')
3
+ const getMeter = () => metrics.getMeter('processor')
4
4
 
5
5
  class C {
6
- private counter: Counter<Attributes>
6
+ private _counter: Counter<Attributes>
7
7
  private value: number = 0
8
8
 
9
- constructor(name: string) {
10
- this.counter = meter.createCounter(name)
9
+ constructor(private name: string) {}
10
+
11
+ get counter(): Counter<Attributes> {
12
+ if (!this._counter) {
13
+ this._counter = getMeter().createCounter(this.name)
14
+ }
15
+ return this._counter
11
16
  }
12
17
 
13
18
  add(value: number, attributes?: Attributes) {
@@ -21,11 +26,16 @@ class C {
21
26
  }
22
27
 
23
28
  class G {
24
- private gauge: Gauge<Attributes>
29
+ private _gauge: Gauge<Attributes>
25
30
  private value: number = 0
26
31
 
27
- constructor(name: string) {
28
- this.gauge = meter.createGauge(name)
32
+ constructor(private name: string) {}
33
+
34
+ get gauge(): Gauge<Attributes> {
35
+ if (!this._gauge) {
36
+ this._gauge = getMeter().createGauge(this.name)
37
+ }
38
+ return this._gauge
29
39
  }
30
40
 
31
41
  record(value: number, attributes?: Attributes) {
package/src/otlp.ts CHANGED
@@ -5,9 +5,13 @@ import { PrometheusExporter } from '@opentelemetry/exporter-prometheus'
5
5
  import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
6
6
  import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc'
7
7
  import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base'
8
- import { metrics, trace, ProxyTracerProvider } from '@opentelemetry/api'
8
+ import { diag, DiagConsoleLogger, DiagLogLevel, metrics, trace, ProxyTracerProvider } from '@opentelemetry/api'
9
+
10
+ export async function setupOTLP(debug?: boolean) {
11
+ if (debug) {
12
+ diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG)
13
+ }
9
14
 
10
- export async function setupOTLP() {
11
15
  const resource = await envDetector.detect()
12
16
 
13
17
  const meterProvider = new MeterProvider({
@@ -29,12 +33,15 @@ export async function setupOTLP() {
29
33
  const exporter = new OTLPTraceExporter() // new ConsoleSpanExporter();
30
34
  const processor = new BatchSpanProcessor(exporter)
31
35
  traceProvider.addSpanProcessor(processor)
36
+ traceProvider.register()
32
37
 
33
38
  metrics.setGlobalMeterProvider(meterProvider)
34
39
  trace.setGlobalTracerProvider(traceProvider)
35
40
  ;['SIGINT', 'SIGTERM'].forEach((signal) => {
36
41
  process.on(signal as any, () => shutdownProvider())
37
42
  })
43
+
44
+ metrics.getMeter('processor').createGauge('up').record(1)
38
45
  }
39
46
 
40
47
  export async function shutdownProvider() {
@@ -21,15 +21,7 @@ import { FullProcessorServiceImpl } from './full-service.js'
21
21
  import { ChainConfig } from './chain-config.js'
22
22
  import { setupLogger } from './logger.js'
23
23
 
24
- // import { NodeSDK } from '@opentelemetry/sdk-node'
25
- import { envDetector } from '@opentelemetry/resources'
26
- import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-grpc'
27
- import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc'
28
- import { PeriodicExportingMetricReader, MeterProvider } from '@opentelemetry/sdk-metrics'
29
- import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base'
30
- import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
31
- import { diag, DiagConsoleLogger, DiagLogLevel, metrics, trace } from '@opentelemetry/api'
32
- import { PrometheusExporter } from '@opentelemetry/exporter-prometheus'
24
+ import { setupOTLP } from './otlp.js'
33
25
 
34
26
  // const mergedRegistry = Registry.merge([globalRegistry, niceGrpcRegistry])
35
27
 
@@ -58,51 +50,7 @@ const logLevel = process.env['LOG_LEVEL']?.toUpperCase()
58
50
  setupLogger(options['log-format'] === 'json', logLevel === 'debug' ? true : options.debug)
59
51
  console.debug('Starting with', options.target)
60
52
 
61
- if (options.debug) {
62
- diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG)
63
- }
64
-
65
- const resource = await envDetector.detect()
66
-
67
- const meterProvider = new MeterProvider({
68
- resource,
69
- readers: [
70
- new PeriodicExportingMetricReader({
71
- exporter: new OTLPMetricExporter()
72
- }),
73
- new PrometheusExporter({
74
- // http://localhost:4041/metrics
75
- port: 4041
76
- })
77
- ]
78
- })
79
-
80
- const traceProvider = new NodeTracerProvider({
81
- resource: resource
82
- })
83
- const exporter = new OTLPTraceExporter() // new ConsoleSpanExporter();
84
- const processor = new BatchSpanProcessor(exporter)
85
- traceProvider.addSpanProcessor(processor)
86
- traceProvider.register()
87
-
88
- metrics.setGlobalMeterProvider(meterProvider)
89
- trace.setGlobalTracerProvider(traceProvider)
90
- ;['SIGINT', 'SIGTERM'].forEach((signal) => {
91
- process.on(signal as any, () => shutdownProvider())
92
- })
93
-
94
- export async function shutdownProvider() {
95
- const traceProvider = trace.getTracerProvider()
96
- if (traceProvider instanceof NodeTracerProvider) {
97
- traceProvider.shutdown().catch(console.error)
98
- }
99
- const meterProvider = metrics.getMeterProvider()
100
- if (meterProvider instanceof MeterProvider) {
101
- meterProvider.shutdown().catch(console.error)
102
- }
103
- }
104
-
105
- metrics.getMeter('processor').createGauge('up').record(1)
53
+ await setupOTLP(options.debug)
106
54
 
107
55
  Error.stackTraceLimit = 20
108
56