@openapi-typescript-infra/service 2.7.7 → 2.8.0

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/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # [2.8.0](https://github.com/openapi-typescript-infra/service/compare/v2.7.7...v2.8.0) (2023-09-29)
2
+
3
+
4
+ ### Features
5
+
6
+ * **otlp:** rework OpenTelemetry integration to deal with limitations… ([#10](https://github.com/openapi-typescript-infra/service/issues/10)) ([5ce6e42](https://github.com/openapi-typescript-infra/service/commit/5ce6e42d76041142c23aec5cd5738173197e9613))
7
+
1
8
  ## [2.7.7](https://github.com/openapi-typescript-infra/service/compare/v2.7.6...v2.7.7) (2023-09-27)
2
9
 
3
10
 
@@ -42,7 +42,6 @@ export interface ConfigurationSchema extends Record<string, unknown> {
42
42
  server: {
43
43
  internalPort?: number;
44
44
  port?: number;
45
- metrics: ConfigurationItemEnabled;
46
45
  key?: string;
47
46
  certificate?: string;
48
47
  hostname?: string;
@@ -11,59 +11,15 @@ const path_1 = __importDefault(require("path"));
11
11
  const express_1 = __importDefault(require("express"));
12
12
  const pino_1 = require("pino");
13
13
  const cookie_parser_1 = __importDefault(require("cookie-parser"));
14
- const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
15
- const resources_1 = require("@opentelemetry/resources");
16
- const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
17
14
  const api_1 = require("@opentelemetry/api");
18
- const exporter_prometheus_1 = require("@opentelemetry/exporter-prometheus");
19
15
  const terminus_1 = require("@godaddy/terminus");
20
16
  const index_1 = require("../config/index");
21
17
  const openapi_1 = require("../openapi");
22
18
  const requestLogger_1 = require("../telemetry/requestLogger");
23
19
  const env_1 = require("../env");
20
+ const index_2 = require("../telemetry/index");
24
21
  const route_loader_1 = require("./route-loader");
25
22
  const internal_server_1 = require("./internal-server");
26
- const METRICS_KEY = Symbol('PrometheusMetricsInfo');
27
- async function enableMetrics(app, name) {
28
- const meterProvider = new sdk_metrics_1.MeterProvider({
29
- resource: new resources_1.Resource({
30
- [semantic_conventions_1.SemanticResourceAttributes.SERVICE_NAME]: name,
31
- }),
32
- });
33
- api_1.metrics.setGlobalMeterProvider(meterProvider);
34
- app.locals.meter = meterProvider.getMeter(name);
35
- const metricsConfig = app.locals.config.get('server:metrics');
36
- const value = { meterProvider };
37
- if (metricsConfig?.enabled) {
38
- const finalConfig = {
39
- ...metricsConfig,
40
- preventServerStart: true,
41
- };
42
- // There is what I would consider a bug in OpenTelemetry metrics
43
- // wherein adding metrics BEFORE the metricReader is added results
44
- // in those metrics screaming into the void. So, we need to add
45
- // this up front and then just tie it to the internal express
46
- // app if and when "listen" is called.
47
- const exporter = new exporter_prometheus_1.PrometheusExporter(finalConfig);
48
- meterProvider.addMetricReader(exporter);
49
- value.exporter = exporter;
50
- }
51
- else {
52
- app.locals.logger.info('No metrics will be exported');
53
- }
54
- // Squirrel it away for later
55
- Object.defineProperty(app.locals, METRICS_KEY, {
56
- value,
57
- enumerable: false,
58
- configurable: true,
59
- });
60
- }
61
- async function endMetrics(app) {
62
- const { internalApp, logger } = app.locals;
63
- const meterProvider = internalApp?.locals.meterProvider;
64
- await meterProvider?.shutdown();
65
- logger.info('Metrics shutdown');
66
- }
67
23
  function isSyncLogging() {
68
24
  if (process.env.LOG_SYNC) {
69
25
  return true;
@@ -124,13 +80,7 @@ async function startApp(startOptions) {
124
80
  if (serviceImpl.attach) {
125
81
  await serviceImpl.attach(app);
126
82
  }
127
- try {
128
- await enableMetrics(app, name);
129
- }
130
- catch (error) {
131
- logger.error(error, 'Could not enable metrics.');
132
- throw error;
133
- }
83
+ app.locals.meter = api_1.metrics.getMeterProvider().getMeter(name);
134
84
  if (config.get('trustProxy')) {
135
85
  app.set('trust proxy', config.get('trustProxy'));
136
86
  }
@@ -245,7 +195,6 @@ async function shutdownApp(app) {
245
195
  const { logger } = app.locals;
246
196
  try {
247
197
  await app.locals.service.stop?.(app);
248
- await endMetrics(app);
249
198
  logger.info('App shutdown complete');
250
199
  }
251
200
  catch (error) {
@@ -295,7 +244,6 @@ async function listen(app, shutdownHandler) {
295
244
  onShutdown() {
296
245
  return Promise.resolve()
297
246
  .then(() => service.stop?.(app))
298
- .then(() => endMetrics(app))
299
247
  .then(shutdownHandler || Promise.resolve)
300
248
  .then(() => logger.info('Graceful shutdown complete'))
301
249
  .catch((error) => logger.error(error, 'Error terminating tracing'))
@@ -318,8 +266,6 @@ async function listen(app, shutdownHandler) {
318
266
  server.on('error', (error) => {
319
267
  logger.error(error, 'Main service listener error');
320
268
  });
321
- const metricInfo = app.locals[METRICS_KEY];
322
- delete app.locals[METRICS_KEY];
323
269
  // TODO handle rejection/error?
324
270
  const listenPromise = new Promise((accept) => {
325
271
  server.listen(port, () => {
@@ -327,16 +273,16 @@ async function listen(app, shutdownHandler) {
327
273
  locals.logger.info({ url: url(config, port), service: locals.name }, 'express listening');
328
274
  const serverConfig = locals.config.get('server');
329
275
  // Ok now start the internal port if we have one.
330
- if (serverConfig?.internalPort) {
276
+ if (serverConfig?.internalPort || serverConfig?.internalPort === 0) {
331
277
  (0, internal_server_1.startInternalApp)(app, serverConfig.internalPort)
332
278
  .then((internalApp) => {
333
279
  locals.internalApp = internalApp;
334
- internalApp.locals.meterProvider = metricInfo.meterProvider;
335
280
  locals.logger.info({ port: serverConfig.internalPort }, 'Internal metadata server started');
336
281
  })
337
282
  .then(() => {
338
- if (metricInfo.exporter) {
339
- locals.internalApp.get('/metrics', metricInfo.exporter.getMetricsRequestHandler.bind(metricInfo.exporter));
283
+ const prometheusExporter = (0, index_2.getGlobalPrometheusExporter)();
284
+ if (prometheusExporter) {
285
+ locals.internalApp.get('/metrics', prometheusExporter.getMetricsRequestHandler.bind(prometheusExporter));
340
286
  locals.logger.info('Metrics exporter started');
341
287
  }
342
288
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/express-app/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/express-app/app.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,18 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
+ import { PrometheusExporter } from '@opentelemetry/exporter-prometheus';
3
4
  import type { DelayLoadServiceStartOptions, RequestLocals, ServiceLocals } from '../types';
5
+ /**
6
+ * OpenTelemetry is not friendly to the idea of stopping
7
+ * and starting itself, it seems. So we can only keep a global
8
+ * instance of the infrastructure no matter how many times
9
+ * you start/stop your service (this is mostly only relevant for testing).
10
+ * In addition, since we have to load it right away before configuration
11
+ * is available, we can't use configuration to decide anything.
12
+ */
13
+ export declare function startGlobalTelemetry(serviceName: string): void;
14
+ export declare function getGlobalPrometheusExporter(): PrometheusExporter | undefined;
15
+ export declare function shutdownGlobalTelemetry(): Promise<void>;
4
16
  export declare function startWithTelemetry<SLocals extends ServiceLocals = ServiceLocals, RLocals extends RequestLocals = RequestLocals>(options: DelayLoadServiceStartOptions): Promise<{
5
17
  app: import("../types").ServiceExpress<SLocals>;
6
18
  server: import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse> | import("https").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>;
@@ -23,10 +23,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.startWithTelemetry = void 0;
26
+ exports.startWithTelemetry = exports.shutdownGlobalTelemetry = exports.getGlobalPrometheusExporter = exports.startGlobalTelemetry = void 0;
27
27
  const api_1 = require("@opentelemetry/api");
28
28
  const exporter_trace_otlp_proto_1 = require("@opentelemetry/exporter-trace-otlp-proto");
29
29
  const opentelemetry = __importStar(require("@opentelemetry/sdk-node"));
30
+ const exporter_prometheus_1 = require("@opentelemetry/exporter-prometheus");
30
31
  const instrumentations_1 = require("./instrumentations");
31
32
  const DummyExporter_1 = require("./DummyExporter");
32
33
  // For troubleshooting, set the log level to DiagLogLevel.DEBUG
@@ -43,14 +44,43 @@ function getExporter() {
43
44
  }
44
45
  return new DummyExporter_1.DummySpanExporter();
45
46
  }
47
+ let prometheusExporter;
48
+ let telemetrySdk;
49
+ /**
50
+ * OpenTelemetry is not friendly to the idea of stopping
51
+ * and starting itself, it seems. So we can only keep a global
52
+ * instance of the infrastructure no matter how many times
53
+ * you start/stop your service (this is mostly only relevant for testing).
54
+ * In addition, since we have to load it right away before configuration
55
+ * is available, we can't use configuration to decide anything.
56
+ */
57
+ function startGlobalTelemetry(serviceName) {
58
+ if (!prometheusExporter) {
59
+ prometheusExporter = new exporter_prometheus_1.PrometheusExporter({ preventServerStart: true });
60
+ telemetrySdk = new opentelemetry.NodeSDK({
61
+ serviceName,
62
+ autoDetectResources: true,
63
+ traceExporter: getExporter(),
64
+ metricReader: prometheusExporter,
65
+ instrumentations: [(0, instrumentations_1.getAutoInstrumentations)()],
66
+ });
67
+ telemetrySdk.start();
68
+ }
69
+ }
70
+ exports.startGlobalTelemetry = startGlobalTelemetry;
71
+ function getGlobalPrometheusExporter() {
72
+ return prometheusExporter;
73
+ }
74
+ exports.getGlobalPrometheusExporter = getGlobalPrometheusExporter;
75
+ async function shutdownGlobalTelemetry() {
76
+ await prometheusExporter?.shutdown();
77
+ await telemetrySdk?.shutdown();
78
+ telemetrySdk = undefined;
79
+ prometheusExporter = undefined;
80
+ }
81
+ exports.shutdownGlobalTelemetry = shutdownGlobalTelemetry;
46
82
  async function startWithTelemetry(options) {
47
- const sdk = new opentelemetry.NodeSDK({
48
- serviceName: options.name,
49
- autoDetectResources: true,
50
- traceExporter: getExporter(),
51
- instrumentations: [(0, instrumentations_1.getAutoInstrumentations)()],
52
- });
53
- await sdk.start();
83
+ startGlobalTelemetry(options.name);
54
84
  // eslint-disable-next-line import/no-unresolved, @typescript-eslint/no-var-requires
55
85
  const { startApp, listen } = require('../express-app/app.js');
56
86
  // eslint-disable-next-line import/no-dynamic-require, global-require, @typescript-eslint/no-var-requires
@@ -64,7 +94,7 @@ async function startWithTelemetry(options) {
64
94
  const app = await startApp(startOptions);
65
95
  app.locals.logger.info('OpenTelemetry enabled');
66
96
  const server = await listen(app, async () => {
67
- await sdk.shutdown();
97
+ await shutdownGlobalTelemetry();
68
98
  app.locals.logger.info('OpenTelemetry shut down');
69
99
  });
70
100
  return { app, server };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA2E;AAC3E,wFAA6E;AAC7E,uEAAyD;AAUzD,yDAA6D;AAC7D,mDAAoD;AAEpD,+DAA+D;AAC/D,UAAI,CAAC,SAAS,CAAC,IAAI,uBAAiB,EAAE,EAAE,kBAAY,CAAC,IAAI,CAAC,CAAC;AAE3D,SAAS,WAAW;IAClB,IACE,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB;QAClC,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EACrF;QACA,OAAO,IAAI,6CAAiB,CAAC;YAC3B,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,qCAAqC;SACxE,CAAC,CAAC;KACJ;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE;QAC5C,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;KACxD;IACD,OAAO,IAAI,iCAAiB,EAAE,CAAC;AACjC,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAGtC,OAAqC;IACrC,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC;QACpC,WAAW,EAAE,OAAO,CAAC,IAAI;QACzB,mBAAmB,EAAE,IAAI;QACzB,aAAa,EAAE,WAAW,EAAE;QAC5B,gBAAgB,EAAE,CAAC,IAAA,0CAAuB,GAAE,CAAC;KAC9C,CAAC,CAAC;IACH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IAElB,oFAAoF;IACpF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAG3D,CAAC;IACF,yGAAyG;IACzG,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC;IAC/D,MAAM,YAAY,GAAiC;QACjD,GAAG,OAAO;QACV,OAAO;QACP,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAsB;KAClD,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;IACzC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;QACrB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACzB,CAAC;AAjCD,gDAiCC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"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"}