@lodestar/beacon-node 1.50.0-dev.023ad6c012 → 1.50.0-dev.040a952dd7
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/chain/archiveStore/archiveStore.js +1 -1
- package/lib/chain/archiveStore/archiveStore.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +2 -2
- package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
- package/lib/chain/archiveStore/historicalState/getHistoricalState.js +5 -7
- package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +1 -1
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/types.d.ts +2 -2
- package/lib/chain/archiveStore/historicalState/types.d.ts.map +1 -1
- package/lib/chain/archiveStore/historicalState/worker.js +1 -1
- package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
- package/lib/chain/archiveStore/interface.d.ts +1 -1
- package/lib/chain/archiveStore/interface.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlock.js +1 -1
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts +2 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +5 -4
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +18 -0
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/options.d.ts +1 -1
- package/lib/chain/options.d.ts.map +1 -1
- package/lib/chain/options.js +1 -1
- package/lib/chain/options.js.map +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.js +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
- package/lib/chain/regen/regen.d.ts +2 -0
- package/lib/chain/regen/regen.d.ts.map +1 -1
- package/lib/chain/regen/regen.js +10 -4
- package/lib/chain/regen/regen.js.map +1 -1
- package/lib/chain/validatorMonitor.d.ts +5 -1
- package/lib/chain/validatorMonitor.d.ts.map +1 -1
- package/lib/chain/validatorMonitor.js +64 -54
- package/lib/chain/validatorMonitor.js.map +1 -1
- package/lib/execution/engine/disabled.d.ts +0 -2
- package/lib/execution/engine/disabled.d.ts.map +1 -1
- package/lib/execution/engine/disabled.js +0 -6
- package/lib/execution/engine/disabled.js.map +1 -1
- package/lib/execution/engine/http.d.ts +1 -3
- package/lib/execution/engine/http.d.ts.map +1 -1
- package/lib/execution/engine/http.js +2 -17
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +2 -4
- package/lib/execution/engine/interface.d.ts.map +1 -1
- package/lib/execution/engine/mock.d.ts +0 -2
- package/lib/execution/engine/mock.d.ts.map +1 -1
- package/lib/execution/engine/mock.js +0 -8
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/types.d.ts +0 -8
- package/lib/execution/engine/types.d.ts.map +1 -1
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/metrics/metrics.d.ts +7 -3
- package/lib/metrics/metrics.d.ts.map +1 -1
- package/lib/metrics/metrics.js +4 -4
- package/lib/metrics/metrics.js.map +1 -1
- package/lib/node/nodejs.d.ts.map +1 -1
- package/lib/node/nodejs.js +25 -3
- package/lib/node/nodejs.js.map +1 -1
- package/package.json +15 -15
- package/src/chain/archiveStore/archiveStore.ts +1 -1
- package/src/chain/archiveStore/historicalState/getHistoricalState.ts +5 -7
- package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +1 -1
- package/src/chain/archiveStore/historicalState/types.ts +2 -2
- package/src/chain/archiveStore/historicalState/worker.ts +1 -2
- package/src/chain/archiveStore/interface.ts +1 -1
- package/src/chain/blocks/verifyBlock.ts +1 -0
- package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +6 -3
- package/src/chain/chain.ts +21 -0
- package/src/chain/options.ts +2 -2
- package/src/chain/produceBlock/computeNewStateRoot.ts +1 -1
- package/src/chain/regen/regen.ts +12 -4
- package/src/chain/validatorMonitor.ts +75 -57
- package/src/execution/engine/disabled.ts +0 -8
- package/src/execution/engine/http.ts +1 -30
- package/src/execution/engine/interface.ts +2 -6
- package/src/execution/engine/mock.ts +1 -19
- package/src/execution/engine/types.ts +0 -10
- package/src/metrics/metrics.ts +21 -6
- package/src/node/nodejs.ts +31 -3
package/src/metrics/metrics.ts
CHANGED
|
@@ -9,27 +9,42 @@ import {RegistryMetricCreator} from "./utils/registryMetricCreator.js";
|
|
|
9
9
|
|
|
10
10
|
export type Metrics = BeaconMetrics &
|
|
11
11
|
ForkChoiceMetrics &
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
LodestarMetrics & {
|
|
13
|
+
/** Null when we use native state transition metrics instead */
|
|
14
|
+
stateTransition: BeaconStateTransitionMetrics | null;
|
|
15
|
+
register: RegistryMetricCreator;
|
|
16
|
+
close: () => void;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export type CreateMetricsOptions = {
|
|
20
|
+
/*
|
|
21
|
+
* Toggle inclusion of state transition metrics.
|
|
22
|
+
*
|
|
23
|
+
* False when native state transition is used, so we
|
|
24
|
+
* can grab metrics from the native implementation instead.
|
|
25
|
+
* */
|
|
26
|
+
includeStateTransitionMetrics?: boolean;
|
|
27
|
+
collectNodeMetrics?: boolean;
|
|
28
|
+
};
|
|
14
29
|
|
|
15
30
|
export function createMetrics(
|
|
16
31
|
opts: MetricsOptions,
|
|
17
32
|
genesisTime: number,
|
|
18
33
|
externalRegistries: Registry[] = [],
|
|
19
|
-
|
|
34
|
+
createOpts: CreateMetricsOptions = {}
|
|
20
35
|
): Metrics {
|
|
21
36
|
const register = new RegistryMetricCreator();
|
|
22
37
|
const beacon = createBeaconMetrics(register);
|
|
23
38
|
const forkChoice = getForkChoiceMetrics(register);
|
|
24
39
|
const lodestar = createLodestarMetrics(register, opts.metadata, genesisTime);
|
|
25
|
-
const stateTransition = getMetrics(register);
|
|
40
|
+
const stateTransition = createOpts.includeStateTransitionMetrics === false ? null : getMetrics(register);
|
|
26
41
|
|
|
27
42
|
const onUnhandledRejection = (_error: unknown): void => {
|
|
28
43
|
lodestar.unhandledPromiseRejections.inc();
|
|
29
44
|
};
|
|
30
45
|
process.on("unhandledRejection", onUnhandledRejection);
|
|
31
46
|
|
|
32
|
-
const nodeJsMetricsClose = collectNodeMetrics
|
|
47
|
+
const nodeJsMetricsClose = createOpts.collectNodeMetrics === false ? (): void => {} : collectNodeJSMetrics(register);
|
|
33
48
|
const close = (): void => {
|
|
34
49
|
process.removeListener("unhandledRejection", onUnhandledRejection);
|
|
35
50
|
nodeJsMetricsClose();
|
|
@@ -46,7 +61,7 @@ export function createMetrics(
|
|
|
46
61
|
...beacon,
|
|
47
62
|
...forkChoice,
|
|
48
63
|
...lodestar,
|
|
49
|
-
|
|
64
|
+
stateTransition,
|
|
50
65
|
register,
|
|
51
66
|
close,
|
|
52
67
|
};
|
package/src/node/nodejs.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import {setMaxListeners} from "node:events";
|
|
2
2
|
import {PrivateKey} from "@libp2p/interface";
|
|
3
3
|
import {Registry} from "prom-client";
|
|
4
|
+
import {
|
|
5
|
+
init as initNativeMetrics,
|
|
6
|
+
registerLocalValidator as registerNativeLocalValidator,
|
|
7
|
+
scrapeMetrics as scrapeNativeMetrics,
|
|
8
|
+
unregisterLocalValidator as unregisterNativeLocalValidator,
|
|
9
|
+
} from "@chainsafe/lodestar-z/metrics";
|
|
4
10
|
import {type PubkeyCache} from "@chainsafe/lodestar-z/pubkeys";
|
|
5
11
|
import {hasher} from "@chainsafe/persistent-merkle-tree";
|
|
6
12
|
import {BeaconApiMethods} from "@lodestar/api/beacon/server";
|
|
@@ -171,7 +177,13 @@ export class BeaconNode {
|
|
|
171
177
|
// monitoring relies on metrics data
|
|
172
178
|
opts.monitoring.endpoint
|
|
173
179
|
) {
|
|
174
|
-
|
|
180
|
+
if (opts.chain.nativeStateTransition) {
|
|
181
|
+
initNativeMetrics();
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
metrics = createMetrics(opts.metrics, anchorState.genesisTime, metricsRegistries, {
|
|
185
|
+
includeStateTransitionMetrics: !opts.chain.nativeStateTransition,
|
|
186
|
+
});
|
|
175
187
|
initBeaconMetrics(metrics, anchorState);
|
|
176
188
|
// Since the db is instantiated before this, metrics must be injected manually afterwards
|
|
177
189
|
db.setMetrics(metrics.db, metrics.flatFileStore);
|
|
@@ -185,7 +197,13 @@ export class BeaconNode {
|
|
|
185
197
|
config,
|
|
186
198
|
anchorState.genesisTime,
|
|
187
199
|
logger.child({module: LoggerModule.vmon}),
|
|
188
|
-
opts.validatorMonitor
|
|
200
|
+
opts.validatorMonitor,
|
|
201
|
+
opts.chain.nativeStateTransition
|
|
202
|
+
? {
|
|
203
|
+
registerLocalValidator: registerNativeLocalValidator,
|
|
204
|
+
unregisterLocalValidator: unregisterNativeLocalValidator,
|
|
205
|
+
}
|
|
206
|
+
: null
|
|
189
207
|
)
|
|
190
208
|
: null;
|
|
191
209
|
|
|
@@ -303,7 +321,17 @@ export class BeaconNode {
|
|
|
303
321
|
const metricsServer = opts.metrics.enabled
|
|
304
322
|
? await getHttpMetricsServer(opts.metrics, {
|
|
305
323
|
register: (metrics as Metrics).register,
|
|
306
|
-
getOtherMetrics: async () =>
|
|
324
|
+
getOtherMetrics: async () => {
|
|
325
|
+
const otherMetrics = await Promise.all([network.scrapeMetrics(), chain.archiveStore.scrapeMetrics()]);
|
|
326
|
+
if (opts.chain.nativeStateTransition) {
|
|
327
|
+
try {
|
|
328
|
+
otherMetrics.push(scrapeNativeMetrics());
|
|
329
|
+
} catch (e) {
|
|
330
|
+
logger.warn("Failed to scrape native state-transition metrics", {}, e as Error);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return otherMetrics;
|
|
334
|
+
},
|
|
307
335
|
logger: logger.child({module: LoggerModule.metrics}),
|
|
308
336
|
})
|
|
309
337
|
: null;
|