From 9058d37a1218bb323eaf9966516bb7320d22a54b Mon Sep 17 00:00:00 2001 From: achingbrain Date: Thu, 15 Sep 2022 11:25:43 +0100 Subject: [PATCH 1/2] fix: add node memory stats to prometheus output The default prometheus memory stats are clunky and hard to interpret without additional tools like graphana because you get separate measurements for different types of memory usage. Add a single `nodejs_memory_usage` metric that is the output of `process.memoryUsage()`. --- packages/ipfs-http-server/src/api/routes/debug.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/ipfs-http-server/src/api/routes/debug.js b/packages/ipfs-http-server/src/api/routes/debug.js index 1ed38a0abe..dc61d62f09 100644 --- a/packages/ipfs-http-server/src/api/routes/debug.js +++ b/packages/ipfs-http-server/src/api/routes/debug.js @@ -8,7 +8,13 @@ import { disable, enable } from '@libp2p/logger' client.register.clear() /** @type {Record>} */ -const gauges = {} +const gauges = { + 'nodejs_memory_usage': new client.Gauge({ + name: 'nodejs_memory_usage', + help: 'nodejs_memory_usage', + labelNames: Object.keys(process.memoryUsage()) + }) +} // Endpoint for handling debug metrics export default [{ @@ -23,6 +29,10 @@ export default [{ throw Boom.notImplemented('Monitoring is disabled. Enable it by setting environment variable IPFS_MONITORING') } + Object.entries(process.memoryUsage()).forEach(([key, value]) => { + gauges['nodejs_memory_usage'].set({ [key]: key }, value) + }) + const { ipfs } = request.server.app // @ts-expect-error libp2p does not exist on ipfs const metrics = ipfs.libp2p.metrics From 67b1d25e87e9d53d2dc90c4b246f7a02eac87ec7 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Thu, 15 Sep 2022 11:51:27 +0100 Subject: [PATCH 2/2] chore: linting --- packages/ipfs-http-server/src/api/routes/debug.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ipfs-http-server/src/api/routes/debug.js b/packages/ipfs-http-server/src/api/routes/debug.js index dc61d62f09..9c71514cd7 100644 --- a/packages/ipfs-http-server/src/api/routes/debug.js +++ b/packages/ipfs-http-server/src/api/routes/debug.js @@ -9,7 +9,7 @@ client.register.clear() /** @type {Record>} */ const gauges = { - 'nodejs_memory_usage': new client.Gauge({ + nodejs_memory_usage: new client.Gauge({ name: 'nodejs_memory_usage', help: 'nodejs_memory_usage', labelNames: Object.keys(process.memoryUsage()) @@ -30,7 +30,7 @@ export default [{ } Object.entries(process.memoryUsage()).forEach(([key, value]) => { - gauges['nodejs_memory_usage'].set({ [key]: key }, value) + gauges.nodejs_memory_usage.set({ [key]: key }, value) }) const { ipfs } = request.server.app