@prairielearn/opentelemetry 1.10.6 → 1.10.7

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,5 +1,11 @@
1
1
  # @prairielearn/opentelemetry
2
2
 
3
+ ## 1.10.7
4
+
5
+ ### Patch Changes
6
+
7
+ - 3395c25: Upgrade all JavaScript dependencies
8
+
3
9
  ## 1.10.6
4
10
 
5
11
  ### Patch Changes
package/dist/init.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { PushMetricExporter } from '@opentelemetry/sdk-metrics';
2
- import { SpanExporter } from '@opentelemetry/sdk-trace-base';
2
+ import { SpanExporter, SpanProcessor } from '@opentelemetry/sdk-trace-base';
3
3
  export interface OpenTelemetryConfigEnabled {
4
4
  openTelemetryEnabled: true;
5
5
  openTelemetryExporter: 'console' | 'honeycomb' | 'jaeger' | SpanExporter;
@@ -7,7 +7,7 @@ export interface OpenTelemetryConfigEnabled {
7
7
  openTelemetryMetricExportIntervalMillis?: number;
8
8
  openTelemetrySamplerType: 'always-on' | 'always-off' | 'trace-id-ratio';
9
9
  openTelemetrySampleRate?: number;
10
- openTelemetrySpanProcessor?: 'batch' | 'simple';
10
+ openTelemetrySpanProcessor?: 'batch' | 'simple' | SpanProcessor;
11
11
  honeycombApiKey?: string;
12
12
  honeycombDataset?: string;
13
13
  serviceName?: string;
package/dist/init.js CHANGED
@@ -11,7 +11,6 @@ const api_1 = require("@opentelemetry/api");
11
11
  const core_1 = require("@opentelemetry/core");
12
12
  // Exporters go here.
13
13
  const exporter_trace_otlp_grpc_1 = require("@opentelemetry/exporter-trace-otlp-grpc");
14
- const exporter_jaeger_1 = require("@opentelemetry/exporter-jaeger");
15
14
  const exporter_metrics_otlp_grpc_1 = require("@opentelemetry/exporter-metrics-otlp-grpc");
16
15
  // Instrumentations go here.
17
16
  const instrumentation_aws_sdk_1 = require("@opentelemetry/instrumentation-aws-sdk");
@@ -122,13 +121,8 @@ function getTraceExporter(config) {
122
121
  });
123
122
  break;
124
123
  case 'jaeger':
125
- return new exporter_jaeger_1.JaegerExporter({
126
- // By default, the UDP sender will be used, but that causes issues
127
- // with packet sizes when Jaeger is running in Docker. We'll instead
128
- // configure it to use the HTTP sender, which shouldn't face those
129
- // same issues. We'll still allow the endpoint to be overridden via
130
- // environment variable if needed.
131
- endpoint: process.env.OTEL_EXPORTER_JAEGER_ENDPOINT ?? 'http://localhost:14268/api/traces',
124
+ return new exporter_trace_otlp_grpc_1.OTLPTraceExporter({
125
+ url: process.env.OTEL_EXPORTER_JAEGER_ENDPOINT ?? 'grpc://localhost:4317/',
132
126
  });
133
127
  default:
134
128
  throw new Error(`Unknown OpenTelemetry exporter: ${config.openTelemetryExporter}`);
@@ -159,6 +153,23 @@ function getMetricExporter(config) {
159
153
  throw new Error(`Unknown OpenTelemetry metric exporter: ${config.openTelemetryMetricExporter}`);
160
154
  }
161
155
  }
156
+ function getSpanProcessor(config) {
157
+ if (typeof config.openTelemetrySpanProcessor === 'object') {
158
+ return config.openTelemetrySpanProcessor;
159
+ }
160
+ const traceExporter = getTraceExporter(config);
161
+ switch (config.openTelemetrySpanProcessor ?? 'batch') {
162
+ case 'batch': {
163
+ return new FilterBatchSpanProcessor(traceExporter, filter);
164
+ }
165
+ case 'simple': {
166
+ return new sdk_trace_base_1.SimpleSpanProcessor(traceExporter);
167
+ }
168
+ default: {
169
+ throw new Error(`Unknown OpenTelemetry span processor: ${config.openTelemetrySpanProcessor}`);
170
+ }
171
+ }
172
+ }
162
173
  /**
163
174
  * Should be called once we've loaded our config; this will allow us to set up
164
175
  * the correct metadata for the Honeycomb exporter. We don't actually have that
@@ -175,8 +186,8 @@ async function init(config) {
175
186
  // https://github.com/open-telemetry/opentelemetry-js-contrib/pull/972
176
187
  return;
177
188
  }
178
- const traceExporter = getTraceExporter(config);
179
189
  const metricExporter = getMetricExporter(config);
190
+ const spanProcessor = getSpanProcessor(config);
180
191
  let sampler;
181
192
  switch (config.openTelemetrySamplerType ?? 'always-on') {
182
193
  case 'always-on': {
@@ -196,26 +207,12 @@ async function init(config) {
196
207
  default:
197
208
  throw new Error(`Unknown OpenTelemetry sampler type: ${config.openTelemetrySamplerType}`);
198
209
  }
199
- let spanProcessor;
200
- switch (config.openTelemetrySpanProcessor ?? 'batch') {
201
- case 'batch': {
202
- spanProcessor = new FilterBatchSpanProcessor(traceExporter, filter);
203
- break;
204
- }
205
- case 'simple': {
206
- spanProcessor = new sdk_trace_base_1.SimpleSpanProcessor(traceExporter);
207
- break;
208
- }
209
- default: {
210
- throw new Error(`Unknown OpenTelemetry span processor: ${config.openTelemetrySpanProcessor}`);
211
- }
212
- }
213
210
  // Much of this functionality is copied from `@opentelemetry/sdk-node`, but
214
211
  // we can't use the SDK directly because of the fact that we load our config
215
212
  // asynchronously. We need to initialize our instrumentations first; only
216
213
  // then can we actually start requiring all of our code that loads our config
217
214
  // and ultimately tells us how to configure OpenTelemetry.
218
- let resource = await (0, resources_1.detectResources)({
215
+ let resource = (0, resources_1.detectResourcesSync)({
219
216
  detectors: [resource_detector_aws_1.awsEc2Detector, resources_1.processDetector, resources_1.envDetector],
220
217
  });
221
218
  if (config.serviceName) {
@@ -233,13 +230,16 @@ async function init(config) {
233
230
  tracerProvider = nodeTracerProvider;
234
231
  // Set up metrics instrumentation if it's enabled.
235
232
  if (metricExporter) {
236
- const meterProvider = new sdk_metrics_1.MeterProvider({ resource });
237
- api_1.metrics.setGlobalMeterProvider(meterProvider);
238
- const metricReader = new sdk_metrics_1.PeriodicExportingMetricReader({
239
- exporter: metricExporter,
240
- exportIntervalMillis: config.openTelemetryMetricExportIntervalMillis ?? 30000,
233
+ const meterProvider = new sdk_metrics_1.MeterProvider({
234
+ resource,
235
+ readers: [
236
+ new sdk_metrics_1.PeriodicExportingMetricReader({
237
+ exporter: metricExporter,
238
+ exportIntervalMillis: config.openTelemetryMetricExportIntervalMillis ?? 30000,
239
+ }),
240
+ ],
241
241
  });
242
- meterProvider.addMetricReader(metricReader);
242
+ api_1.metrics.setGlobalMeterProvider(meterProvider);
243
243
  }
244
244
  }
245
245
  exports.init = init;
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,13 @@ const context_async_hooks_1 = require("@opentelemetry/context-async-hooks");
7
7
  describe('instrumented', () => {
8
8
  let contextManager;
9
9
  const exporter = new sdk_node_1.tracing.InMemorySpanExporter();
10
+ const spanProcessor = new sdk_node_1.tracing.SimpleSpanProcessor(exporter);
10
11
  before(async () => {
11
12
  await (0, index_1.init)({
12
13
  openTelemetryEnabled: true,
13
14
  openTelemetryExporter: exporter,
14
15
  openTelemetrySamplerType: 'always-on',
15
- openTelemetrySpanProcessor: 'simple',
16
+ openTelemetrySpanProcessor: spanProcessor,
16
17
  });
17
18
  });
18
19
  beforeEach(async () => {
@@ -20,6 +21,7 @@ describe('instrumented', () => {
20
21
  index_1.context.setGlobalContextManager(contextManager.enable());
21
22
  });
22
23
  afterEach(async () => {
24
+ await spanProcessor.forceFlush();
23
25
  exporter.reset();
24
26
  index_1.context.disable();
25
27
  });
@@ -29,6 +31,7 @@ describe('instrumented', () => {
29
31
  });
30
32
  it('records a span on success', async () => {
31
33
  await (0, index_1.instrumented)('test-success', () => 'foo');
34
+ await spanProcessor.forceFlush();
32
35
  const spans = exporter.getFinishedSpans();
33
36
  chai_1.assert.lengthOf(spans, 1);
34
37
  chai_1.assert.equal(spans[0].name, 'test-success');
@@ -47,6 +50,7 @@ describe('instrumented', () => {
47
50
  // Ensure the error was propagated back to the caller.
48
51
  chai_1.assert.equal(maybeError?.message, 'foo');
49
52
  // Ensure the correct span was recorded.
53
+ await spanProcessor.forceFlush();
50
54
  const spans = exporter.getFinishedSpans();
51
55
  chai_1.assert.lengthOf(spans, 1);
52
56
  chai_1.assert.equal(spans[0].name, 'test-failure');
@@ -1 +1 @@
1
- {"version":3,"file":"tracing.test.js","sourceRoot":"","sources":["../src/tracing.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracing.test.js","sourceRoot":"","sources":["../src/tracing.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prairielearn/opentelemetry",
3
- "version": "1.10.6",
3
+ "version": "1.10.7",
4
4
  "main": "dist/index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,38 +13,37 @@
13
13
  "test": "mocha --no-config --require tsx src/**/*.test.ts"
14
14
  },
15
15
  "dependencies": {
16
- "@grpc/grpc-js": "^1.9.14",
17
- "@opentelemetry/api": "^1.7.0",
18
- "@opentelemetry/core": "^1.21.0",
19
- "@opentelemetry/exporter-jaeger": "^1.21.0",
20
- "@opentelemetry/exporter-metrics-otlp-grpc": "^0.48.0",
21
- "@opentelemetry/exporter-trace-otlp-grpc": "^0.48.0",
22
- "@opentelemetry/instrumentation": "^0.48.0",
23
- "@opentelemetry/instrumentation-aws-sdk": "^0.38.0",
16
+ "@grpc/grpc-js": "^1.10.1",
17
+ "@opentelemetry/api": "^1.8.0",
18
+ "@opentelemetry/core": "^1.22.0",
19
+ "@opentelemetry/exporter-metrics-otlp-grpc": "^0.49.1",
20
+ "@opentelemetry/exporter-trace-otlp-grpc": "^0.49.1",
21
+ "@opentelemetry/instrumentation": "^0.49.1",
22
+ "@opentelemetry/instrumentation-aws-sdk": "^0.38.1",
24
23
  "@opentelemetry/instrumentation-connect": "^0.33.0",
25
24
  "@opentelemetry/instrumentation-dns": "^0.33.0",
26
25
  "@opentelemetry/instrumentation-express": "^0.35.0",
27
- "@opentelemetry/instrumentation-http": "^0.48.0",
26
+ "@opentelemetry/instrumentation-http": "^0.49.1",
28
27
  "@opentelemetry/instrumentation-pg": "^0.38.0",
29
28
  "@opentelemetry/instrumentation-redis": "^0.36.0",
30
29
  "@opentelemetry/resource-detector-aws": "^1.3.6",
31
- "@opentelemetry/resources": "^1.21.0",
32
- "@opentelemetry/sdk-metrics": "^1.21.0",
33
- "@opentelemetry/sdk-node": "^0.48.0",
34
- "@opentelemetry/sdk-trace-base": "^1.21.0",
35
- "@opentelemetry/sdk-trace-node": "^1.21.0",
36
- "@opentelemetry/semantic-conventions": "^1.21.0"
30
+ "@opentelemetry/resources": "^1.22.0",
31
+ "@opentelemetry/sdk-metrics": "^1.22.0",
32
+ "@opentelemetry/sdk-node": "^0.49.1",
33
+ "@opentelemetry/sdk-trace-base": "^1.22.0",
34
+ "@opentelemetry/sdk-trace-node": "^1.22.0",
35
+ "@opentelemetry/semantic-conventions": "^1.22.0"
37
36
  },
38
37
  "devDependencies": {
39
- "@opentelemetry/context-async-hooks": "^1.21.0",
38
+ "@opentelemetry/context-async-hooks": "^1.22.0",
40
39
  "@prairielearn/tsconfig": "^0.0.0",
41
- "@types/chai": "^4.3.11",
40
+ "@types/chai": "^4.3.12",
42
41
  "@types/mocha": "^10.0.6",
43
- "@types/node": "^20.11.11",
42
+ "@types/node": "^20.11.24",
44
43
  "chai": "^4.4.1",
45
44
  "chai-as-promised": "^7.1.1",
46
- "mocha": "^10.2.0",
47
- "tsx": "^4.7.0",
45
+ "mocha": "^10.3.0",
46
+ "tsx": "^4.7.1",
48
47
  "typescript": "^5.3.3"
49
48
  }
50
49
  }
package/src/init.ts CHANGED
@@ -21,14 +21,18 @@ import {
21
21
  Sampler,
22
22
  ConsoleSpanExporter,
23
23
  } from '@opentelemetry/sdk-trace-base';
24
- import { detectResources, processDetector, envDetector, Resource } from '@opentelemetry/resources';
24
+ import {
25
+ detectResourcesSync,
26
+ processDetector,
27
+ envDetector,
28
+ Resource,
29
+ } from '@opentelemetry/resources';
25
30
  import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';
26
31
  import { metrics } from '@opentelemetry/api';
27
32
  import { hrTimeToMilliseconds } from '@opentelemetry/core';
28
33
 
29
34
  // Exporters go here.
30
35
  import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';
31
- import { JaegerExporter } from '@opentelemetry/exporter-jaeger';
32
36
  import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-grpc';
33
37
 
34
38
  // Instrumentations go here.
@@ -132,7 +136,7 @@ export interface OpenTelemetryConfigEnabled {
132
136
  openTelemetryMetricExportIntervalMillis?: number;
133
137
  openTelemetrySamplerType: 'always-on' | 'always-off' | 'trace-id-ratio';
134
138
  openTelemetrySampleRate?: number;
135
- openTelemetrySpanProcessor?: 'batch' | 'simple';
139
+ openTelemetrySpanProcessor?: 'batch' | 'simple' | SpanProcessor;
136
140
  honeycombApiKey?: string;
137
141
  honeycombDataset?: string;
138
142
  serviceName?: string;
@@ -172,13 +176,8 @@ function getTraceExporter(config: OpenTelemetryConfigEnabled): SpanExporter {
172
176
  });
173
177
  break;
174
178
  case 'jaeger':
175
- return new JaegerExporter({
176
- // By default, the UDP sender will be used, but that causes issues
177
- // with packet sizes when Jaeger is running in Docker. We'll instead
178
- // configure it to use the HTTP sender, which shouldn't face those
179
- // same issues. We'll still allow the endpoint to be overridden via
180
- // environment variable if needed.
181
- endpoint: process.env.OTEL_EXPORTER_JAEGER_ENDPOINT ?? 'http://localhost:14268/api/traces',
179
+ return new OTLPTraceExporter({
180
+ url: process.env.OTEL_EXPORTER_JAEGER_ENDPOINT ?? 'grpc://localhost:4317/',
182
181
  });
183
182
  default:
184
183
  throw new Error(`Unknown OpenTelemetry exporter: ${config.openTelemetryExporter}`);
@@ -214,6 +213,26 @@ function getMetricExporter(config: OpenTelemetryConfigEnabled): PushMetricExport
214
213
  }
215
214
  }
216
215
 
216
+ function getSpanProcessor(config: OpenTelemetryConfigEnabled): SpanProcessor {
217
+ if (typeof config.openTelemetrySpanProcessor === 'object') {
218
+ return config.openTelemetrySpanProcessor;
219
+ }
220
+
221
+ const traceExporter = getTraceExporter(config);
222
+
223
+ switch (config.openTelemetrySpanProcessor ?? 'batch') {
224
+ case 'batch': {
225
+ return new FilterBatchSpanProcessor(traceExporter, filter);
226
+ }
227
+ case 'simple': {
228
+ return new SimpleSpanProcessor(traceExporter);
229
+ }
230
+ default: {
231
+ throw new Error(`Unknown OpenTelemetry span processor: ${config.openTelemetrySpanProcessor}`);
232
+ }
233
+ }
234
+ }
235
+
217
236
  /**
218
237
  * Should be called once we've loaded our config; this will allow us to set up
219
238
  * the correct metadata for the Honeycomb exporter. We don't actually have that
@@ -231,8 +250,8 @@ export async function init(config: OpenTelemetryConfig) {
231
250
  return;
232
251
  }
233
252
 
234
- const traceExporter = getTraceExporter(config);
235
253
  const metricExporter = getMetricExporter(config);
254
+ const spanProcessor = getSpanProcessor(config);
236
255
 
237
256
  let sampler: Sampler;
238
257
  switch (config.openTelemetrySamplerType ?? 'always-on') {
@@ -254,28 +273,13 @@ export async function init(config: OpenTelemetryConfig) {
254
273
  throw new Error(`Unknown OpenTelemetry sampler type: ${config.openTelemetrySamplerType}`);
255
274
  }
256
275
 
257
- let spanProcessor: SpanProcessor;
258
- switch (config.openTelemetrySpanProcessor ?? 'batch') {
259
- case 'batch': {
260
- spanProcessor = new FilterBatchSpanProcessor(traceExporter, filter);
261
- break;
262
- }
263
- case 'simple': {
264
- spanProcessor = new SimpleSpanProcessor(traceExporter);
265
- break;
266
- }
267
- default: {
268
- throw new Error(`Unknown OpenTelemetry span processor: ${config.openTelemetrySpanProcessor}`);
269
- }
270
- }
271
-
272
276
  // Much of this functionality is copied from `@opentelemetry/sdk-node`, but
273
277
  // we can't use the SDK directly because of the fact that we load our config
274
278
  // asynchronously. We need to initialize our instrumentations first; only
275
279
  // then can we actually start requiring all of our code that loads our config
276
280
  // and ultimately tells us how to configure OpenTelemetry.
277
281
 
278
- let resource = await detectResources({
282
+ let resource = detectResourcesSync({
279
283
  detectors: [awsEc2Detector, processDetector, envDetector],
280
284
  });
281
285
 
@@ -299,13 +303,16 @@ export async function init(config: OpenTelemetryConfig) {
299
303
 
300
304
  // Set up metrics instrumentation if it's enabled.
301
305
  if (metricExporter) {
302
- const meterProvider = new MeterProvider({ resource });
303
- metrics.setGlobalMeterProvider(meterProvider);
304
- const metricReader = new PeriodicExportingMetricReader({
305
- exporter: metricExporter,
306
- exportIntervalMillis: config.openTelemetryMetricExportIntervalMillis ?? 30_000,
306
+ const meterProvider = new MeterProvider({
307
+ resource,
308
+ readers: [
309
+ new PeriodicExportingMetricReader({
310
+ exporter: metricExporter,
311
+ exportIntervalMillis: config.openTelemetryMetricExportIntervalMillis ?? 30_000,
312
+ }),
313
+ ],
307
314
  });
308
- meterProvider.addMetricReader(metricReader);
315
+ metrics.setGlobalMeterProvider(meterProvider);
309
316
  }
310
317
  }
311
318
 
@@ -7,13 +7,14 @@ import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks';
7
7
  describe('instrumented', () => {
8
8
  let contextManager: AsyncHooksContextManager;
9
9
  const exporter = new tracing.InMemorySpanExporter();
10
+ const spanProcessor = new tracing.SimpleSpanProcessor(exporter);
10
11
 
11
12
  before(async () => {
12
13
  await init({
13
14
  openTelemetryEnabled: true,
14
15
  openTelemetryExporter: exporter,
15
16
  openTelemetrySamplerType: 'always-on',
16
- openTelemetrySpanProcessor: 'simple',
17
+ openTelemetrySpanProcessor: spanProcessor,
17
18
  });
18
19
  });
19
20
 
@@ -23,6 +24,7 @@ describe('instrumented', () => {
23
24
  });
24
25
 
25
26
  afterEach(async () => {
27
+ await spanProcessor.forceFlush();
26
28
  exporter.reset();
27
29
  context.disable();
28
30
  });
@@ -35,6 +37,7 @@ describe('instrumented', () => {
35
37
  it('records a span on success', async () => {
36
38
  await instrumented('test-success', () => 'foo');
37
39
 
40
+ await spanProcessor.forceFlush();
38
41
  const spans = exporter.getFinishedSpans();
39
42
  assert.lengthOf(spans, 1);
40
43
  assert.equal(spans[0].name, 'test-success');
@@ -56,6 +59,7 @@ describe('instrumented', () => {
56
59
  assert.equal(maybeError?.message, 'foo');
57
60
 
58
61
  // Ensure the correct span was recorded.
62
+ await spanProcessor.forceFlush();
59
63
  const spans = exporter.getFinishedSpans();
60
64
  assert.lengthOf(spans, 1);
61
65
  assert.equal(spans[0].name, 'test-failure');
package/tsconfig.json CHANGED
@@ -3,6 +3,6 @@
3
3
  "compilerOptions": {
4
4
  "outDir": "./dist",
5
5
  "rootDir": "./src",
6
- "types": ["mocha", "node"],
7
- },
6
+ "types": ["mocha", "node"]
7
+ }
8
8
  }