Skip to content

Commit

Permalink
fix: manually pass a meterprovider to host metrics
Browse files Browse the repository at this point in the history
This suppresses an annoying warning. The host metrics class already gets
the global meter provider in the same way but logs a warning if it has
to. This is a lot of noise in our logs.
  • Loading branch information
rowanmanning committed Jul 11, 2024
1 parent 28640ee commit 63c8216
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 2 deletions.
6 changes: 5 additions & 1 deletion packages/opentelemetry/lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const logger = require('@dotcom-reliability-kit/logger');

/**
* @import { Instances, Options } from '@dotcom-reliability-kit/opentelemetry'
* @import { MeterProvider } from '@opentelemetry/sdk-metrics'
*/

/**
Expand Down Expand Up @@ -79,7 +80,10 @@ function setupOpenTelemetry({

// Set up host metrics if we have a metrics endpoint
if (metricsOptions?.endpoint) {
instances.hostMetrics = new HostMetrics();
const meterProvider = /** @type {MeterProvider} */ (
opentelemetry.api.metrics.getMeterProvider()
);
instances.hostMetrics = new HostMetrics({ meterProvider });
instances.hostMetrics.start();
}

Expand Down
5 changes: 4 additions & 1 deletion packages/opentelemetry/test/unit/lib/index.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ describe('@dotcom-reliability-kit/opentelemetry', () => {
createTracingConfig =
require('../../../lib/config/tracing').createTracingConfig;
api = require('@opentelemetry/sdk-node').api;
api.metrics.getMeterProvider.mockReturnValue('mock-meter-provider');
HostMetrics = require('@opentelemetry/host-metrics').HostMetrics;
NodeSDK = require('@opentelemetry/sdk-node').NodeSDK;
logger = require('@dotcom-reliability-kit/logger');
Expand Down Expand Up @@ -185,7 +186,9 @@ describe('@dotcom-reliability-kit/opentelemetry', () => {

it('instantiates and starts a HostMetrics collector', () => {
expect(HostMetrics).toHaveBeenCalledTimes(1);
expect(HostMetrics).toHaveBeenCalledWith();
expect(HostMetrics).toHaveBeenCalledWith({
meterProvider: 'mock-meter-provider'
});
expect(HostMetrics.prototype.start).toHaveBeenCalledTimes(1);
});

Expand Down

0 comments on commit 63c8216

Please sign in to comment.