Skip to content

Commit 2faaf13

Browse files
committed
feat(exporters): introduce modular OTLP exporters for better testability
1 parent ae0a3c5 commit 2faaf13

File tree

136 files changed

+26731
-12955
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

136 files changed

+26731
-12955
lines changed

examples/opentelemetry-web/docker/collector-config.yaml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,18 @@ receivers:
77
allowed_origins:
88
- http://*
99
- https://*
10+
allowed_headers: ["*"]
1011

1112
exporters:
1213
zipkin:
1314
endpoint: "http://zipkin-all-in-one:9411/api/v2/spans"
1415
prometheus:
1516
endpoint: "0.0.0.0:9464"
17+
debug:
18+
verbosity: detailed
19+
sampling_initial: 1
20+
sampling_thereafter: 1
21+
1622

1723
processors:
1824
batch:
@@ -28,5 +34,5 @@ service:
2834
processors: [batch]
2935
metrics:
3036
receivers: [otlp]
31-
exporters: [prometheus]
37+
exporters: [prometheus, debug]
3238
processors: [batch]

examples/opentelemetry-web/docker/docker-compose.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ version: "3"
22
services:
33
# Collector
44
collector:
5-
image: otel/opentelemetry-collector-contrib:0.53.0
5+
image: otel/opentelemetry-collector:0.91.0
66
# image: otel/opentelemetry-collector-contrib:latest
77
command: ["--config=/conf/collector-config.yaml"]
88
volumes:
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="utf-8">
6+
<title>Metrics Example</title>
7+
<base href="/">
8+
<meta name="viewport" content="width=device-width, initial-scale=1">
9+
</head>
10+
11+
<body>
12+
Example of using metrics with Collector Exporter
13+
<script type="text/javascript" src="metrics-proto.js"></script>
14+
<br/>
15+
<button id="startBtn">Start metrics</button>
16+
<button id="stopBtn">Stop metrics</button>
17+
<br/>
18+
19+
If you run the collector from this example, you should see metrics at: <br/>
20+
<a href="http://localhost:9090/graph?g0.range_input=1m&g0.expr=requests&g0.tab=0/" target="_blank">http://localhost:9090/</a>
21+
22+
</body>
23+
24+
</html>
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
const { DiagConsoleLogger, DiagLogLevel, diag, metrics } = require('@opentelemetry/api');
2+
const { createMetricsExporter } = require('@opentelemetry/exporter-metrics-otlp-proto');
3+
const { MeterProvider, PeriodicExportingMetricReader } = require('@opentelemetry/sdk-metrics');
4+
5+
// Optional and only needed to see the internal diagnostic logging (during development)
6+
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG);
7+
8+
let interval;
9+
let meter;
10+
11+
function stopMetrics() {
12+
console.log('STOPPING METRICS proto');
13+
clearInterval(interval);
14+
metrics.getMeterProvider().shutdown()
15+
.then(() => metrics.disable());
16+
}
17+
18+
function startMetrics() {
19+
console.log('STARTING METRICS');
20+
21+
const meterProvider = new MeterProvider();
22+
23+
meterProvider.addMetricReader(new PeriodicExportingMetricReader({
24+
exporter: createMetricsExporter({}),
25+
exportIntervalMillis: 1000
26+
}));
27+
28+
metrics.setGlobalMeterProvider(meterProvider);
29+
30+
meter = metrics.getMeter('example-exporter-collector')
31+
32+
const requestCounter = meter.createCounter('requests', {
33+
description: 'Example of a Counter',
34+
});
35+
36+
const upDownCounter = meter.createUpDownCounter('test_up_down_counter', {
37+
description: 'Example of a UpDownCounter',
38+
});
39+
40+
const attributes = { environment: 'staging' };
41+
42+
interval = setInterval(() => {
43+
requestCounter.add(1, attributes);
44+
upDownCounter.add(Math.random() > 0.5 ? 1 : -1, attributes);
45+
}, 1000);
46+
}
47+
48+
const addClickEvents = () => {
49+
const startBtn = document.getElementById('startBtn');
50+
51+
const stopBtn = document.getElementById('stopBtn');
52+
startBtn.addEventListener('click', startMetrics);
53+
stopBtn.addEventListener('click', stopMetrics);
54+
};
55+
56+
window.addEventListener('load', addClickEvents);

examples/opentelemetry-web/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
"start-nc": "webpack serve --progress --color --port 8090 --config webpack.dev.config.js --hot --host 0.0.0.0 --no-compress",
1010
"start-prod": "webpack serve --progress --color --port 8090 --config webpack.prod.config.js --hot --host 0.0.0.0 --compress",
1111
"start-prodnc": "webpack serve --progress --color --port 8090 --config webpack.prod.config.js --hot --host 0.0.0.0 --no-compress",
12-
"docker:start": "cd ./docker && docker-compose down && docker-compose up",
13-
"docker:startd": "cd ./docker && docker-compose down && docker-compose up -d",
14-
"docker:stop": "cd ./docker && docker-compose down"
12+
"docker:start": "cd ./docker && docker compose down && docker compose up",
13+
"docker:startd": "cd ./docker && docker compose down && docker compose up -d",
14+
"docker:stop": "cd ./docker && docker compose down"
1515
},
1616
"repository": {
1717
"type": "git",
@@ -46,6 +46,7 @@
4646
"@opentelemetry/context-zone": "1.19.0",
4747
"@opentelemetry/core": "1.19.0",
4848
"@opentelemetry/exporter-metrics-otlp-http": "0.46.0",
49+
"@opentelemetry/exporter-metrics-otlp-proto": "0.46.0",
4950
"@opentelemetry/exporter-trace-otlp-http": "0.46.0",
5051
"@opentelemetry/exporter-trace-otlp-proto": "0.46.0",
5152
"@opentelemetry/exporter-zipkin": "1.19.0",

examples/opentelemetry-web/webpack.dev.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const common = {
88
mode: 'development',
99
entry: {
1010
metrics: 'examples/metrics/index.js',
11+
'metrics-proto': 'examples/metrics-proto/index.js',
1112
fetch: 'examples/fetch/index.js',
1213
'xml-http-request': 'examples/xml-http-request/index.js',
1314
fetchXhr: 'examples/fetchXhr/index.js',

examples/opentelemetry-web/webpack.prod.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const common = {
88
mode: 'production',
99
entry: {
1010
metrics: 'examples/metrics/index.js',
11+
'metrics-proto': 'examples/metrics-proto/index.js',
1112
fetch: 'examples/fetch/index.js',
1213
'xml-http-request': 'examples/xml-http-request/index.js',
1314
fetchXhr: 'examples/fetchXhr/index.js',

examples/otlp-exporter-node/metrics.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
'use strict';
22

33
const { DiagConsoleLogger, DiagLogLevel, diag } = require('@opentelemetry/api');
4-
const { OTLPMetricExporter } = require('@opentelemetry/exporter-metrics-otlp-http');
4+
//const { OTLPMetricExporter } = require('@opentelemetry/exporter-metrics-otlp-http');
55
// const { OTLPMetricExporter } = require('@opentelemetry/exporter-metrics-otlp-grpc');
6-
// const { OTLPMetricExporter } = require('@opentelemetry/exporter-metrics-otlp-proto');
6+
const { OTLPMetricExporter } = require('@opentelemetry/exporter-metrics-otlp-proto');
77
// const { ConsoleMetricExporter } = require('@opentelemetry/sdk-metrics');
88
const {
99
ExponentialHistogramAggregation,

experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@
77
"esnext": "build/esnext/index.js",
88
"types": "build/src/index.d.ts",
99
"repository": "open-telemetry/opentelemetry-js",
10+
"browser": {
11+
"./src/platform/index.ts": "./src/platform/browser/index.ts",
12+
"./build/esm/platform/index.js": "./build/esm/platform/browser/index.js",
13+
"./build/esnext/platform/index.js": "./build/esnext/platform/browser/index.js",
14+
"./build/src/platform/index.js": "./build/src/platform/browser/index.js"
15+
},
1016
"scripts": {
1117
"prepublishOnly": "npm run compile",
1218
"compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
@@ -55,9 +61,9 @@
5561
"access": "public"
5662
},
5763
"devDependencies": {
58-
"@babel/core": "7.23.6",
64+
"@babel/core": "7.23.3",
5965
"@opentelemetry/api": "1.7.0",
60-
"@types/mocha": "10.0.6",
66+
"@types/mocha": "10.0.4",
6167
"@types/node": "18.6.5",
6268
"@types/sinon": "10.0.20",
6369
"codecov": "3.8.3",
@@ -78,10 +84,15 @@
7884
"@opentelemetry/core": "1.19.0",
7985
"@opentelemetry/exporter-metrics-otlp-http": "0.46.0",
8086
"@opentelemetry/otlp-exporter-base": "0.46.0",
87+
"@opentelemetry/otlp-metrics-exporter-base": "0.46.0",
88+
"@opentelemetry/otlp-http-exporter-base": "0.46.0",
89+
"@opentelemetry/otlp-http-exporter-node-base": "0.46.0",
90+
"@opentelemetry/otlp-http-exporter-browser-base": "0.46.0",
8191
"@opentelemetry/otlp-proto-exporter-base": "0.46.0",
8292
"@opentelemetry/otlp-transformer": "0.46.0",
8393
"@opentelemetry/resources": "1.19.0",
84-
"@opentelemetry/sdk-metrics": "1.19.0"
94+
"@opentelemetry/sdk-metrics": "1.19.0",
95+
"@opentelemetry/otlp-exporter": "0.46.0"
8596
},
8697
"homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-proto",
8798
"sideEffects": false

experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/OTLPMetricExporter.ts

Lines changed: 0 additions & 86 deletions
This file was deleted.

0 commit comments

Comments
 (0)