@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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +12 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +20 -7
- package/dist/index.js.map +1 -1
- package/package.json +20 -19
- package/src/index.ts +26 -13
- package/tsconfig.json +1 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
@prairielearn/opentelemetry:build: cache hit, replaying output
|
|
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
|
|
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
|
|
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
|
|
159
|
+
sampler = new sdk_trace_base_1.AlwaysOnSampler();
|
|
147
160
|
break;
|
|
148
161
|
}
|
|
149
162
|
case 'always-off': {
|
|
150
|
-
sampler = new
|
|
163
|
+
sampler = new sdk_trace_base_1.AlwaysOffSampler();
|
|
151
164
|
break;
|
|
152
165
|
}
|
|
153
166
|
case 'trace-id-ratio': {
|
|
154
|
-
sampler = new
|
|
155
|
-
root: new
|
|
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":";;;AAAA,2CAAsD;AAEtD,sDAAkD;AAClD,kEAAmE;AACnE,
|
|
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.
|
|
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.
|
|
12
|
-
"@opentelemetry/api": "^1.
|
|
13
|
-
"@opentelemetry/core": "^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.
|
|
16
|
-
"@opentelemetry/instrumentation-connect": "^0.
|
|
17
|
-
"@opentelemetry/instrumentation-dns": "^0.
|
|
18
|
-
"@opentelemetry/instrumentation-express": "^0.
|
|
19
|
-
"@opentelemetry/instrumentation-http": "^0.
|
|
20
|
-
"@opentelemetry/instrumentation-pg": "^0.
|
|
21
|
-
"@opentelemetry/instrumentation-redis": "^0.
|
|
22
|
-
"@opentelemetry/resource-detector-aws": "^1.1.
|
|
23
|
-
"@opentelemetry/resources": "^1.
|
|
24
|
-
"@opentelemetry/sdk-node": "^0.
|
|
25
|
-
"@opentelemetry/sdk-trace-base": "^1.
|
|
26
|
-
"@opentelemetry/sdk-trace-node": "^1.
|
|
27
|
-
"@opentelemetry/semantic-conventions": "^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.
|
|
33
|
-
"typescript": "^4.
|
|
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 {
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
|
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
|
|
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
|
}
|