45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
import { registerInstrumentations } from '@opentelemetry/instrumentation';
|
|
import { trace, DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';
|
|
import { HttpInstrumentation } from '@opentelemetry/instrumentation-http';
|
|
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
|
|
import {
|
|
ConsoleSpanExporter,
|
|
SimpleSpanProcessor,
|
|
} from '@opentelemetry/sdk-trace-base';
|
|
import { resourceFromAttributes } from '@opentelemetry/resources';
|
|
import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';
|
|
import http from 'http';
|
|
|
|
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG);
|
|
const exporter = new ConsoleSpanExporter();
|
|
const processor = new SimpleSpanProcessor(exporter);
|
|
|
|
const tracerProvider = new NodeTracerProvider({
|
|
resource: resourceFromAttributes({
|
|
[ATTR_SERVICE_NAME]: 'esm-http-ts-example',
|
|
}),
|
|
spanProcessors: [processor],
|
|
});
|
|
tracerProvider.register();
|
|
|
|
registerInstrumentations({
|
|
instrumentations: [new HttpInstrumentation()],
|
|
});
|
|
|
|
const hostname = '0.0.0.0';
|
|
const port = 3000;
|
|
|
|
const server = http.createServer((req, res) => {
|
|
res.statusCode = 200;
|
|
res.setHeader('Content-Type', 'text/plain');
|
|
const tracer = trace.getTracer('esm-tracer');
|
|
tracer.startActiveSpan('manual', span => {
|
|
span.end();
|
|
});
|
|
res.end('Hello, World!\n');
|
|
});
|
|
|
|
server.listen(port, hostname, () => {
|
|
console.log(`Server running at http://${hostname}:${port}/`);
|
|
});
|