Skip to content

Commit fb06b5b

Browse files
authored
Collector split (#1446)
* chore: removing submodule protos from exporter-collector * chore: adding submodule opentelemetry-proto to exporter collector * chore: fixing submodule path * chore: updating proto to version v0.4.0 * chore: splitting exporter collector into 3 packages - depending on transport layer, updated examples, fixed the metrics collector for proto, fixed bug for label * chore: fixing bug with controller when shutting down * chore: ignored files * chore: fixing submodule links * chore: lint fixes - seems like some latest updates forcing extend to be in new line * chore: lint space * chore: fixing test when waiting to load proto files
1 parent 2a8555f commit fb06b5b

File tree

101 files changed

+4172
-1789
lines changed

Some content is hidden

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

101 files changed

+4172
-1789
lines changed

.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,7 @@ package.json.lerna_backup
7878

7979
# VsCode configs
8080
.vscode/
81+
82+
#IDEA
83+
.idea
84+
*.iml

.gitmodules

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1-
[submodule "packages/opentelemetry-exporter-collector/src/platform/node/protos"]
2-
path = packages/opentelemetry-exporter-collector/src/platform/node/protos
1+
[submodule "packages/opentelemetry-exporter-collector-grpc/protos"]
2+
path = packages/opentelemetry-exporter-collector-grpc/protos
3+
url = https://github.com/open-telemetry/opentelemetry-proto.git
4+
[submodule "packages/opentelemetry-exporter-collector-proto/protos"]
5+
path = packages/opentelemetry-exporter-collector-proto/protos
36
url = https://github.com/open-telemetry/opentelemetry-proto.git

examples/collector-exporter-node/metrics.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
'use strict';
22

3+
const { ConsoleLogger, LogLevel } = require('@opentelemetry/core');
34
const { CollectorMetricExporter } = require('@opentelemetry/exporter-collector');
5+
// const { CollectorMetricExporter } = require('@opentelemetry/exporter-collector-grpc');
6+
// const { CollectorMetricExporter } = require('@opentelemetry/exporter-collector-proto');
47
const { MeterProvider } = require('@opentelemetry/metrics');
58

69
const metricExporter = new CollectorMetricExporter({
710
serviceName: 'basic-metric-service',
8-
// logger: new ConsoleLogger(LogLevel.DEBUG),
11+
// url: 'http://localhost:55681/v1/metrics',
12+
logger: new ConsoleLogger(LogLevel.DEBUG),
913
});
1014

1115
const meter = new MeterProvider({
1216
exporter: metricExporter,
1317
interval: 1000,
14-
}).getMeter('example-prometheus');
18+
}).getMeter('example-exporter-collector');
1519

1620
const requestCounter = meter.createCounter('requests', {
1721
description: 'Example of a Counter',

examples/collector-exporter-node/package.json

+2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
"@opentelemetry/api": "^0.10.2",
3232
"@opentelemetry/core": "^0.10.2",
3333
"@opentelemetry/exporter-collector": "^0.10.2",
34+
"@opentelemetry/exporter-collector-grpc": "^0.10.2",
35+
"@opentelemetry/exporter-collector-proto": "^0.10.2",
3436
"@opentelemetry/metrics": "^0.10.2",
3537
"@opentelemetry/tracing": "^0.10.2"
3638
},

examples/collector-exporter-node/tracing.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@
33
const opentelemetry = require('@opentelemetry/api');
44
// const { ConsoleLogger, LogLevel} = require('@opentelemetry/core');
55
const { BasicTracerProvider, ConsoleSpanExporter, SimpleSpanProcessor } = require('@opentelemetry/tracing');
6-
const { CollectorTraceExporter, CollectorProtocolNode } = require('@opentelemetry/exporter-collector');
6+
const { CollectorTraceExporter } = require('@opentelemetry/exporter-collector');
7+
// const { CollectorTraceExporter } = require('@opentelemetry/exporter-collector-grpc');
8+
// const { CollectorTraceExporter } = require('@opentelemetry/exporter-collector-proto');
79

810
const exporter = new CollectorTraceExporter({
911
serviceName: 'basic-service',
1012
// logger: new ConsoleLogger(LogLevel.DEBUG),
1113
// headers: {
1214
// foo: 'bar'
1315
// },
14-
protocolNode: CollectorProtocolNode.HTTP_PROTO,
15-
// protocolNode: CollectorProtocolNode.HTTP_JSON,
1616
});
1717

1818
const provider = new BasicTracerProvider();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="utf-8">
6+
<title>Metrics Example</title>
7+
<base href="/">
8+
9+
<!--
10+
https://www.w3.org/TR/trace-context/
11+
Set the `traceparent` in the server's HTML template code. It should be
12+
dynamically generated server side to have the server's request trace Id,
13+
a parent span Id that was set on the server's request span, and the trace
14+
flags to indicate the server's sampling decision
15+
(01 = sampled, 00 = notsampled).
16+
'{version}-{traceId}-{spanId}-{sampleDecision}'
17+
-->
18+
<!-- <meta name="traceparent" content="00-ab42124a3c573678d4d8b21ba52df3bf-d21f7bc17caa5aba-01">-->
19+
20+
<meta name="viewport" content="width=device-width, initial-scale=1">
21+
</head>
22+
23+
<body>
24+
Example of using metrics with Collector Exporter
25+
<script type="text/javascript" src="metrics.js"></script>
26+
<br/>
27+
<button id="startBtn">Start metrics</button>
28+
<button id="stopBtn">Stop metrics</button>
29+
<br/>
30+
31+
If you run the collector from example "opentelemetry-exporter-collector" you should see traces at: <br/>
32+
<a href="http://localhost:9090/graph?g0.range_input=1m&g0.expr=requests&g0.tab=0/" target="_blank">http://localhost:9090/</a>
33+
34+
</body>
35+
36+
</html>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
'use strict';
2+
3+
const { ConsoleLogger, LogLevel } = require('@opentelemetry/core');
4+
const { CollectorMetricExporter } = require('@opentelemetry/exporter-collector');
5+
const { MeterProvider } = require('@opentelemetry/metrics');
6+
7+
const metricExporter = new CollectorMetricExporter({
8+
serviceName: 'basic-metric-service',
9+
logger: new ConsoleLogger(LogLevel.DEBUG),
10+
});
11+
12+
let interval;
13+
let meter;
14+
15+
function stopMetrics() {
16+
console.log('STOPPING METRICS');
17+
clearInterval(interval);
18+
meter.shutdown();
19+
}
20+
21+
function startMetrics() {
22+
console.log('STARTING METRICS');
23+
meter = new MeterProvider({
24+
exporter: metricExporter,
25+
interval: 1000,
26+
}).getMeter('example-exporter-collector');
27+
28+
const requestCounter = meter.createCounter('requests', {
29+
description: 'Example of a Counter',
30+
});
31+
32+
const upDownCounter = meter.createUpDownCounter('test_up_down_counter', {
33+
description: 'Example of a UpDownCounter',
34+
});
35+
36+
const labels = { pid: process.pid, environment: 'staging' };
37+
38+
interval = setInterval(() => {
39+
requestCounter.bind(labels).add(1);
40+
upDownCounter.bind(labels).add(Math.random() > 0.5 ? 1 : -1);
41+
}, 1000);
42+
}
43+
44+
const addClickEvents = () => {
45+
const startBtn = document.getElementById('startBtn');
46+
const stopBtn = document.getElementById('stopBtn');
47+
startBtn.addEventListener('click', startMetrics);
48+
stopBtn.addEventListener('click', stopMetrics);
49+
};
50+
51+
window.addEventListener('load', addClickEvents);

examples/tracer-web/package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,10 @@
3737
"@opentelemetry/context-zone": "^0.10.2",
3838
"@opentelemetry/core": "^0.10.2",
3939
"@opentelemetry/exporter-collector": "^0.10.2",
40-
"@opentelemetry/plugin-document-load": "^0.6.1",
40+
"@opentelemetry/metrics": "^0.10.2",
41+
"@opentelemetry/plugin-document-load": "^0.9.0",
4142
"@opentelemetry/plugin-fetch": "^0.10.2",
42-
"@opentelemetry/plugin-user-interaction": "^0.6.1",
43+
"@opentelemetry/plugin-user-interaction": "^0.9.0",
4344
"@opentelemetry/plugin-xml-http-request": "^0.10.2",
4445
"@opentelemetry/tracing": "^0.10.2",
4546
"@opentelemetry/web": "^0.10.2"

examples/tracer-web/webpack.config.js

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const common = {
88
mode: 'development',
99
entry: {
1010
'document-load': 'examples/document-load/index.js',
11+
metrics: 'examples/metrics/index.js',
1112
fetch: 'examples/fetch/index.js',
1213
'xml-http-request': 'examples/xml-http-request/index.js',
1314
'user-interaction': 'examples/user-interaction/index.js',

packages/opentelemetry-api/src/metrics/NoopMeter.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -131,14 +131,16 @@ export class NoopMetric<T> implements UnboundMetric<T> {
131131
}
132132
}
133133

134-
export class NoopCounterMetric extends NoopMetric<BoundCounter>
134+
export class NoopCounterMetric
135+
extends NoopMetric<BoundCounter>
135136
implements Counter {
136137
add(value: number, labels: Labels) {
137138
this.bind(labels).add(value);
138139
}
139140
}
140141

141-
export class NoopValueRecorderMetric extends NoopMetric<BoundValueRecorder>
142+
export class NoopValueRecorderMetric
143+
extends NoopMetric<BoundValueRecorder>
142144
implements ValueRecorder {
143145
record(
144146
value: number,
@@ -156,7 +158,8 @@ export class NoopValueRecorderMetric extends NoopMetric<BoundValueRecorder>
156158
}
157159
}
158160

159-
export class NoopBaseObserverMetric extends NoopMetric<BoundBaseObserver>
161+
export class NoopBaseObserverMetric
162+
extends NoopMetric<BoundBaseObserver>
160163
implements BaseObserver {
161164
observation() {
162165
return {
@@ -166,7 +169,8 @@ export class NoopBaseObserverMetric extends NoopMetric<BoundBaseObserver>
166169
}
167170
}
168171

169-
export class NoopBatchObserverMetric extends NoopMetric<void>
172+
export class NoopBatchObserverMetric
173+
extends NoopMetric<void>
170174
implements BatchObserver {}
171175

172176
export class NoopBoundCounter implements BoundCounter {

packages/opentelemetry-core/src/platform/browser/BasePlugin.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ import {
2323
import { BaseAbstractPlugin } from '../BaseAbstractPlugin';
2424

2525
/** This class represent the base to patch plugin. */
26-
export abstract class BasePlugin<T> extends BaseAbstractPlugin<T>
26+
export abstract class BasePlugin<T>
27+
extends BaseAbstractPlugin<T>
2728
implements Plugin<T> {
2829
enable(
2930
moduleExports: T,

packages/opentelemetry-core/src/platform/node/BasePlugin.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ import * as path from 'path';
2727
import { BaseAbstractPlugin } from '../BaseAbstractPlugin';
2828

2929
/** This class represent the base to patch plugin. */
30-
export abstract class BasePlugin<T> extends BaseAbstractPlugin<T>
30+
export abstract class BasePlugin<T>
31+
extends BaseAbstractPlugin<T>
3132
implements Plugin<T> {
3233
enable(
3334
moduleExports: T,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
build
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module.exports = {
2+
"env": {
3+
"mocha": true,
4+
"commonjs": true,
5+
"node": true,
6+
},
7+
...require('../../eslint.config.js')
8+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/bin
2+
/coverage
3+
/doc
4+
/test

0 commit comments

Comments
 (0)