@prairielearn/opentelemetry 1.4.0 → 1.5.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.
@@ -1,3 +1,3 @@
1
- @prairielearn/opentelemetry:build: cache hit, replaying output eb2ee28f25a984bf
1
+ @prairielearn/opentelemetry:build: cache hit, replaying output e4619a306dcdbb26
2
2
  @prairielearn/opentelemetry:build: warning package.json: No license field
3
3
  @prairielearn/opentelemetry:build: $ tsc
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @prairielearn/opentelemetry
2
2
 
3
+ ## 1.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 2ff1f1086: Add support for Jaeger exporter
8
+
9
+ ## 1.4.1
10
+
11
+ ### Patch Changes
12
+
13
+ - dba390399: Upgrade dependencies to latest versions
14
+
3
15
  ## 1.4.0
4
16
 
5
17
  ### Minor Changes
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import { SpanExporter } from '@opentelemetry/sdk-trace-base';
2
2
  import { Span } from '@opentelemetry/api';
3
3
  export interface OpenTelemetryConfig {
4
4
  openTelemetryEnabled: boolean;
5
- openTelemetryExporter: 'console' | 'honeycomb' | SpanExporter;
5
+ openTelemetryExporter: 'console' | 'honeycomb' | 'jaeger' | SpanExporter;
6
6
  openTelemetrySamplerType: 'always-on' | 'always-off' | 'trace-id-ratio';
7
7
  openTelemetrySampleRate?: number;
8
8
  openTelemetrySpanProcessor?: 'batch' | 'simple';
package/dist/index.js CHANGED
@@ -7,11 +7,13 @@ const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
7
7
  const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
8
8
  const resources_1 = require("@opentelemetry/resources");
9
9
  const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
10
- const exporter_otlp_grpc_1 = require("@opentelemetry/exporter-otlp-grpc");
11
10
  const instrumentation_express_1 = require("@opentelemetry/instrumentation-express");
12
11
  const sdk_trace_base_2 = require("@opentelemetry/sdk-trace-base");
13
12
  const api_1 = require("@opentelemetry/api");
14
13
  const core_1 = require("@opentelemetry/core");
14
+ // Exporters go here.
15
+ const exporter_otlp_grpc_1 = require("@opentelemetry/exporter-otlp-grpc");
16
+ const exporter_jaeger_1 = require("@opentelemetry/exporter-jaeger");
15
17
  // Instrumentations go here.
16
18
  const instrumentation_aws_sdk_1 = require("@opentelemetry/instrumentation-aws-sdk");
17
19
  const instrumentation_connect_1 = require("@opentelemetry/instrumentation-connect");
@@ -25,7 +27,7 @@ const resource_detector_aws_1 = require("@opentelemetry/resource-detector-aws");
25
27
  const resources_2 = require("@opentelemetry/resources");
26
28
  /**
27
29
  * Extends `BatchSpanProcessor` to give it the ability to filter out spans
28
- * before they're queued up to send. This enhances our samping process so
30
+ * before they're queued up to send. This enhances our sampling process so
29
31
  * that we can filter spans _after_ they've been emitted.
30
32
  */
31
33
  class FilterBatchSpanProcessor extends sdk_trace_base_2.BatchSpanProcessor {
@@ -68,7 +70,7 @@ const instrumentations = [
68
70
  new instrumentation_dns_1.DnsInstrumentation(),
69
71
  new instrumentation_express_2.ExpressInstrumentation({
70
72
  // We use a lot of middleware; it makes the traces way too noisy. If we
71
- // want telementry on a particular middleware, we should instrument it
73
+ // want telemetry on a particular middleware, we should instrument it
72
74
  // manually.
73
75
  ignoreLayersType: [instrumentation_express_1.ExpressLayerType.MIDDLEWARE],
74
76
  ignoreLayers: [
@@ -136,6 +138,17 @@ async function init(config) {
136
138
  });
137
139
  break;
138
140
  }
141
+ case 'jaeger': {
142
+ exporter = new exporter_jaeger_1.JaegerExporter({
143
+ // By default, the UDP sender will be used, but that causes issues
144
+ // with packet sizes when Jaeger is running in Docker. We'll instead
145
+ // configure it to use the HTTP sender, which shouldn't face those
146
+ // same issues. We'll still allow the endpoint to be overridden via
147
+ // environment variable if needed.
148
+ endpoint: process.env.OTEL_EXPORTER_JAEGER_ENDPOINT ?? 'http://localhost:14268/api/traces',
149
+ });
150
+ break;
151
+ }
139
152
  default:
140
153
  throw new Error(`Unknown OpenTelemetry exporter: ${config.openTelemetryExporter}`);
141
154
  }
@@ -143,16 +156,16 @@ async function init(config) {
143
156
  let sampler;
144
157
  switch (config.openTelemetrySamplerType ?? 'always-on') {
145
158
  case 'always-on': {
146
- sampler = new core_1.AlwaysOnSampler();
159
+ sampler = new sdk_trace_base_1.AlwaysOnSampler();
147
160
  break;
148
161
  }
149
162
  case 'always-off': {
150
- sampler = new core_1.AlwaysOffSampler();
163
+ sampler = new sdk_trace_base_1.AlwaysOffSampler();
151
164
  break;
152
165
  }
153
166
  case 'trace-id-ratio': {
154
- sampler = new core_1.ParentBasedSampler({
155
- root: new core_1.TraceIdRatioBasedSampler(config.openTelemetrySampleRate),
167
+ sampler = new sdk_trace_base_1.ParentBasedSampler({
168
+ root: new sdk_trace_base_1.TraceIdRatioBasedSampler(config.openTelemetrySampleRate),
156
169
  });
157
170
  break;
158
171
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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.4.0",
3
+ "version": "1.5.0",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "build": "tsc",
@@ -8,28 +8,29 @@
8
8
  "test": "mocha --no-config --require ts-node/register src/index.test.ts"
9
9
  },
10
10
  "dependencies": {
11
- "@grpc/grpc-js": "^1.6.7",
12
- "@opentelemetry/api": "^1.1.0",
13
- "@opentelemetry/core": "^1.3.1",
11
+ "@grpc/grpc-js": "^1.7.1",
12
+ "@opentelemetry/api": "^1.2.0",
13
+ "@opentelemetry/core": "^1.6.0",
14
+ "@opentelemetry/exporter-jaeger": "^1.7.0",
14
15
  "@opentelemetry/exporter-otlp-grpc": "^0.26.0",
15
- "@opentelemetry/instrumentation-aws-sdk": "^0.8.0",
16
- "@opentelemetry/instrumentation-connect": "^0.29.0",
17
- "@opentelemetry/instrumentation-dns": "^0.29.0",
18
- "@opentelemetry/instrumentation-express": "^0.30.0",
19
- "@opentelemetry/instrumentation-http": "^0.29.2",
20
- "@opentelemetry/instrumentation-pg": "^0.30.0",
21
- "@opentelemetry/instrumentation-redis": "^0.32.0",
22
- "@opentelemetry/resource-detector-aws": "^1.1.1",
23
- "@opentelemetry/resources": "^1.3.1",
24
- "@opentelemetry/sdk-node": "^0.29.2",
25
- "@opentelemetry/sdk-trace-base": "^1.3.1",
26
- "@opentelemetry/sdk-trace-node": "^1.3.1",
27
- "@opentelemetry/semantic-conventions": "^1.3.1"
16
+ "@opentelemetry/instrumentation-aws-sdk": "^0.9.2",
17
+ "@opentelemetry/instrumentation-connect": "^0.30.0",
18
+ "@opentelemetry/instrumentation-dns": "^0.30.0",
19
+ "@opentelemetry/instrumentation-express": "^0.31.2",
20
+ "@opentelemetry/instrumentation-http": "^0.33.0",
21
+ "@opentelemetry/instrumentation-pg": "^0.31.1",
22
+ "@opentelemetry/instrumentation-redis": "^0.33.0",
23
+ "@opentelemetry/resource-detector-aws": "^1.1.2",
24
+ "@opentelemetry/resources": "^1.6.0",
25
+ "@opentelemetry/sdk-node": "^0.33.0",
26
+ "@opentelemetry/sdk-trace-base": "^1.6.0",
27
+ "@opentelemetry/sdk-trace-node": "^1.6.0",
28
+ "@opentelemetry/semantic-conventions": "^1.6.0"
28
29
  },
29
30
  "devDependencies": {
30
31
  "@prairielearn/tsconfig": "*",
31
32
  "mocha": "^10.0.0",
32
- "ts-node": "^10.8.0",
33
- "typescript": "^4.7.2"
33
+ "ts-node": "^10.9.1",
34
+ "typescript": "^4.8.4"
34
35
  }
35
36
  }
package/src/index.ts CHANGED
@@ -7,20 +7,22 @@ import {
7
7
  ReadableSpan,
8
8
  SpanProcessor,
9
9
  SimpleSpanProcessor,
10
+ ParentBasedSampler,
11
+ TraceIdRatioBasedSampler,
12
+ AlwaysOnSampler,
13
+ AlwaysOffSampler,
14
+ Sampler,
10
15
  } from '@opentelemetry/sdk-trace-base';
11
16
  import { detectResources, Resource } from '@opentelemetry/resources';
12
17
  import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';
13
- import { OTLPTraceExporter } from '@opentelemetry/exporter-otlp-grpc';
14
18
  import { ExpressLayerType } from '@opentelemetry/instrumentation-express';
15
19
  import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';
16
- import { Sampler, Span, SpanStatusCode, context, trace } from '@opentelemetry/api';
17
- import {
18
- ParentBasedSampler,
19
- TraceIdRatioBasedSampler,
20
- AlwaysOnSampler,
21
- AlwaysOffSampler,
22
- hrTimeToMilliseconds,
23
- } from '@opentelemetry/core';
20
+ import { Span, SpanStatusCode, context, trace } from '@opentelemetry/api';
21
+ import { hrTimeToMilliseconds } from '@opentelemetry/core';
22
+
23
+ // Exporters go here.
24
+ import { OTLPTraceExporter } from '@opentelemetry/exporter-otlp-grpc';
25
+ import { JaegerExporter } from '@opentelemetry/exporter-jaeger';
24
26
 
25
27
  // Instrumentations go here.
26
28
  import { AwsInstrumentation } from '@opentelemetry/instrumentation-aws-sdk';
@@ -34,11 +36,10 @@ import { RedisInstrumentation } from '@opentelemetry/instrumentation-redis';
34
36
  // Resource detectors go here.
35
37
  import { awsEc2Detector } from '@opentelemetry/resource-detector-aws';
36
38
  import { processDetector, envDetector } from '@opentelemetry/resources';
37
- import { createBaggage } from '@opentelemetry/api/build/src/baggage/utils';
38
39
 
39
40
  /**
40
41
  * Extends `BatchSpanProcessor` to give it the ability to filter out spans
41
- * before they're queued up to send. This enhances our samping process so
42
+ * before they're queued up to send. This enhances our sampling process so
42
43
  * that we can filter spans _after_ they've been emitted.
43
44
  */
44
45
  class FilterBatchSpanProcessor extends BatchSpanProcessor {
@@ -87,7 +88,7 @@ const instrumentations = [
87
88
  new DnsInstrumentation(),
88
89
  new ExpressInstrumentation({
89
90
  // We use a lot of middleware; it makes the traces way too noisy. If we
90
- // want telementry on a particular middleware, we should instrument it
91
+ // want telemetry on a particular middleware, we should instrument it
91
92
  // manually.
92
93
  ignoreLayersType: [ExpressLayerType.MIDDLEWARE],
93
94
  ignoreLayers: [
@@ -120,7 +121,7 @@ let tracerProvider: NodeTracerProvider;
120
121
 
121
122
  export interface OpenTelemetryConfig {
122
123
  openTelemetryEnabled: boolean;
123
- openTelemetryExporter: 'console' | 'honeycomb' | SpanExporter;
124
+ openTelemetryExporter: 'console' | 'honeycomb' | 'jaeger' | SpanExporter;
124
125
  openTelemetrySamplerType: 'always-on' | 'always-off' | 'trace-id-ratio';
125
126
  openTelemetrySampleRate?: number;
126
127
  openTelemetrySpanProcessor?: 'batch' | 'simple';
@@ -171,6 +172,18 @@ export async function init(config: OpenTelemetryConfig) {
171
172
  });
172
173
  break;
173
174
  }
175
+ case 'jaeger': {
176
+ exporter = new JaegerExporter({
177
+ // By default, the UDP sender will be used, but that causes issues
178
+ // with packet sizes when Jaeger is running in Docker. We'll instead
179
+ // configure it to use the HTTP sender, which shouldn't face those
180
+ // same issues. We'll still allow the endpoint to be overridden via
181
+ // environment variable if needed.
182
+ endpoint:
183
+ process.env.OTEL_EXPORTER_JAEGER_ENDPOINT ?? 'http://localhost:14268/api/traces',
184
+ });
185
+ break;
186
+ }
174
187
  default:
175
188
  throw new Error(`Unknown OpenTelemetry exporter: ${config.openTelemetryExporter}`);
176
189
  }
package/tsconfig.json CHANGED
@@ -3,5 +3,6 @@
3
3
  "compilerOptions": {
4
4
  "outDir": "./dist",
5
5
  "rootDir": "./src",
6
+ "types": ["mocha", "node"],
6
7
  }
7
8
  }