@sentio/runtime 2.40.0-rc.24 → 2.40.0-rc.26
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/lib/{chunk-N6FVCF37.js → chunk-Y4EYUOCV.js} +337 -338
- package/lib/index.js +1 -1
- package/lib/processor-runner.d.ts +3 -0
- package/lib/processor-runner.js +14887 -27234
- package/package.json +1 -1
- package/src/multicall.ts +0 -1
- package/src/processor-runner.ts +55 -21
package/package.json
CHANGED
package/src/multicall.ts
CHANGED
package/src/processor-runner.ts
CHANGED
@@ -7,9 +7,9 @@ import { compressionAlgorithms } from '@grpc/grpc-js'
|
|
7
7
|
import commandLineArgs from 'command-line-args'
|
8
8
|
import { createServer } from 'nice-grpc'
|
9
9
|
import { errorDetailsServerMiddleware } from 'nice-grpc-error-details'
|
10
|
-
import { registry as niceGrpcRegistry
|
10
|
+
// import { registry as niceGrpcRegistry } from 'nice-grpc-prometheus'
|
11
11
|
import { openTelemetryServerMiddleware } from 'nice-grpc-opentelemetry'
|
12
|
-
import { register as globalRegistry, Registry } from 'prom-client'
|
12
|
+
// import { register as globalRegistry, Registry } from 'prom-client'
|
13
13
|
import http from 'http'
|
14
14
|
// @ts-ignore inspector promises is not included in @type/node
|
15
15
|
import { Session } from 'node:inspector/promises'
|
@@ -21,23 +21,17 @@ 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'
|
24
|
+
// import { NodeSDK } from '@opentelemetry/sdk-node'
|
25
|
+
import { envDetector } from '@opentelemetry/resources'
|
25
26
|
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-grpc'
|
26
27
|
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc'
|
27
|
-
import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics'
|
28
|
-
import {
|
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'
|
29
33
|
|
30
|
-
const
|
31
|
-
traceExporter: new OTLPTraceExporter(),
|
32
|
-
metricReader: new PeriodicExportingMetricReader({
|
33
|
-
exporter: new OTLPMetricExporter()
|
34
|
-
})
|
35
|
-
// instrumentations: [getNodeAutoInstrumentations()],
|
36
|
-
})
|
37
|
-
|
38
|
-
sdk.start()
|
39
|
-
|
40
|
-
const mergedRegistry = Registry.merge([globalRegistry, niceGrpcRegistry])
|
34
|
+
// const mergedRegistry = Registry.merge([globalRegistry, niceGrpcRegistry])
|
41
35
|
|
42
36
|
const optionDefinitions = [
|
43
37
|
{ name: 'target', type: String, defaultOption: true },
|
@@ -68,6 +62,46 @@ if (options.debug) {
|
|
68
62
|
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG)
|
69
63
|
}
|
70
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
|
+
|
71
105
|
Error.stackTraceLimit = 20
|
72
106
|
|
73
107
|
const fullPath = path.resolve(options['chains-config'])
|
@@ -106,7 +140,7 @@ const server = createServer({
|
|
106
140
|
'grpc.max_receive_message_length': 384 * 1024 * 1024,
|
107
141
|
'grpc.default_compression_algorithm': compressionAlgorithms.gzip
|
108
142
|
})
|
109
|
-
.use(prometheusServerMiddleware())
|
143
|
+
// .use(prometheusServerMiddleware())
|
110
144
|
.use(openTelemetryServerMiddleware())
|
111
145
|
.use(errorDetailsServerMiddleware)
|
112
146
|
const baseService = new ProcessorServiceImpl(async () => {
|
@@ -129,10 +163,10 @@ const httpServer = http
|
|
129
163
|
const reqUrl = new URL(req.url, `http://${req.headers.host}`)
|
130
164
|
const queries = reqUrl.searchParams
|
131
165
|
switch (reqUrl.pathname) {
|
132
|
-
case '/metrics':
|
133
|
-
|
134
|
-
|
135
|
-
|
166
|
+
// case '/metrics':
|
167
|
+
// const metrics = await mergedRegistry.metrics()
|
168
|
+
// res.write(metrics)
|
169
|
+
// break
|
136
170
|
case '/profile': {
|
137
171
|
try {
|
138
172
|
const profileTime = parseInt(queries.get('t') || '1000', 10) || 1000
|