From e22742a73949d63d599ba6e9e433624a31582d86 Mon Sep 17 00:00:00 2001 From: Michael FIG Date: Mon, 17 Jan 2022 15:32:30 -0600 Subject: [PATCH] fix(cosmic-swingset): use `@agoric/telemetry` --- packages/cosmic-swingset/package.json | 2 +- packages/cosmic-swingset/src/chain-main.js | 6 +-- packages/cosmic-swingset/src/kernel-stats.js | 39 ++------------------ packages/cosmic-swingset/src/sim-chain.js | 9 +++-- 4 files changed, 13 insertions(+), 43 deletions(-) diff --git a/packages/cosmic-swingset/package.json b/packages/cosmic-swingset/package.json index a6d9a9e4fd5..db0c36b1eb4 100644 --- a/packages/cosmic-swingset/package.json +++ b/packages/cosmic-swingset/package.json @@ -34,10 +34,10 @@ "@agoric/store": "^0.6.8", "@agoric/swing-store": "^0.6.3", "@agoric/swingset-vat": "^0.24.1", + "@agoric/telemetry": "^0.1.0", "@agoric/vats": "^0.5.1", "@agoric/xsnap": "^0.11.0", "@iarna/toml": "^2.2.3", - "@opentelemetry/exporter-prometheus": "^0.16.0", "@opentelemetry/metrics": "^0.16.0", "agoric": "^0.13.21", "anylogger": "^0.21.0", diff --git a/packages/cosmic-swingset/src/chain-main.js b/packages/cosmic-swingset/src/chain-main.js index 1d38b6726b0..f50e0bce73c 100644 --- a/packages/cosmic-swingset/src/chain-main.js +++ b/packages/cosmic-swingset/src/chain-main.js @@ -10,7 +10,7 @@ import { assert, details as X } from '@agoric/assert'; import { launch } from './launch-chain.js'; import makeBlockManager from './block-manager.js'; -import { getMeterProvider } from './kernel-stats.js'; +import { getTelemetryProviders } from './kernel-stats.js'; const AG_COSMOS_INIT = 'AG_COSMOS_INIT'; @@ -248,7 +248,7 @@ export default async function main(progname, args, { env, homedir, agcc }) { import.meta.url, ), ).pathname; - const meterProvider = getMeterProvider(console, env); + const { metricsProvider } = getTelemetryProviders({ console, env }); const slogFile = env.SLOGFILE; const consensusMode = env.DEBUG === undefined; const s = await launch( @@ -259,7 +259,7 @@ export default async function main(progname, args, { env, homedir, agcc }) { vatconfig, argv, undefined, - meterProvider, + metricsProvider, slogFile, consensusMode, ); diff --git a/packages/cosmic-swingset/src/kernel-stats.js b/packages/cosmic-swingset/src/kernel-stats.js index 974e8b60a79..290df2627b5 100644 --- a/packages/cosmic-swingset/src/kernel-stats.js +++ b/packages/cosmic-swingset/src/kernel-stats.js @@ -1,5 +1,5 @@ +// @ts-check import { MeterProvider } from '@opentelemetry/metrics'; -import { PrometheusExporter } from '@opentelemetry/exporter-prometheus'; import { makeLegacyMap } from '@agoric/store'; @@ -8,6 +8,8 @@ import { KERNEL_STATS_UPDOWN_METRICS, } from '@agoric/swingset-vat/src/kernel/metrics.js'; +export { getTelemetryProviders } from '@agoric/telemetry'; + /** * TODO Would be nice somehow to label the vats individually, but it's too * high cardinality for us unless we can somehow limit the number of active @@ -261,38 +263,3 @@ export function exportKernelStats({ return { schedulerCrankTimeHistogram, schedulerBlockTimeHistogram }; } - -/** - * Interpret the meter provider environment variables. - * - * @param {{ log: Console['log'] }} console - * @param {Record} env - */ -export function getMeterProvider(console, env) { - if ( - !env.OTEL_EXPORTER_PROMETHEUS_HOST && - !env.OTEL_EXPORTER_PROMETHEUS_PORT - ) { - return undefined; - } - const host = - env.OTEL_EXPORTER_PROMETHEUS_HOST || - PrometheusExporter.DEFAULT_OPTIONS.host || - '0.0.0.0'; - const port = - Number(env.OTEL_EXPORTER_PROMETHEUS_PORT) || - PrometheusExporter.DEFAULT_OPTIONS.port; - const exporter = new PrometheusExporter( - { - startServer: true, - host, - port, - }, - () => { - console.log( - `Prometheus scrape endpoint: http://${host}:${port}${PrometheusExporter.DEFAULT_OPTIONS.endpoint}`, - ); - }, - ); - return new MeterProvider({ exporter, interval: 1000 }); -} diff --git a/packages/cosmic-swingset/src/sim-chain.js b/packages/cosmic-swingset/src/sim-chain.js index e5b47ceaccb..d5609299262 100644 --- a/packages/cosmic-swingset/src/sim-chain.js +++ b/packages/cosmic-swingset/src/sim-chain.js @@ -16,7 +16,7 @@ import { makeWithQueue } from '@agoric/vats/src/queue.js'; import { makeBatchedDeliver } from '@agoric/vats/src/batched-deliver.js'; import { launch } from './launch-chain.js'; import makeBlockManager from './block-manager.js'; -import { getMeterProvider } from './kernel-stats.js'; +import { getTelemetryProviders } from './kernel-stats.js'; import { DEFAULT_SIM_SWINGSET_PARAMS } from './sim-params.js'; const console = anylogger('fake-chain'); @@ -79,7 +79,10 @@ export async function connectToFakeChain(basedir, GCI, delay, inbound) { assert(!replay, X`Replay not implemented`); } - const meterProvider = getMeterProvider(console, process.env); + const { metricsProvider } = getTelemetryProviders({ + console, + env: process.env, + }); const s = await launch( stateDBdir, mailboxStorage, @@ -88,7 +91,7 @@ export async function connectToFakeChain(basedir, GCI, delay, inbound) { vatconfig, argv, GCI, // debugName - meterProvider, + metricsProvider, ); const { savedHeight, savedActions, savedChainSends } = s;