Skip to content

Instantly share code, notes, and snippets.

@hongbo-miao
Last active October 30, 2020 00:11
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hongbo-miao/549dcc7f187310562449b80a312c9d11 to your computer and use it in GitHub Desktop.
Save hongbo-miao/549dcc7f187310562449b80a312c9d11 to your computer and use it in GitHub Desktop.
OpenTelemetry
/* Front End */
import { CollectorTraceExporter } from '@opentelemetry/exporter-collector';
import { DocumentLoad } from '@opentelemetry/plugin-document-load';
import { XMLHttpRequestPlugin } from '@opentelemetry/plugin-xml-http-request';
import { BatchSpanProcessor, ConsoleSpanExporter } from '@opentelemetry/tracing';
import { WebTracerProvider } from '@opentelemetry/web';
const tracerProvider = new WebTracerProvider({
plugins: [new DocumentLoad(), new XMLHttpRequestPlugin()],
});
tracerProvider.addSpanProcessor(
new BatchSpanProcessor(
new CollectorTraceExporter({
serviceName: 'my-trace-service',
})
)
);
tracerProvider.register();
/* Back End */
import { CollectorTraceExporter } from '@opentelemetry/exporter-collector';
import { NodeTracerProvider } from '@opentelemetry/node';
import { BatchSpanProcessor, ConsoleSpanExporter } from '@opentelemetry/tracing';
const tracerProvider = new NodeTracerProvider({
plugins: {
dns: {
enabled: true,
path: '@opentelemetry/plugin-dns',
},
express: {
enabled: true,
path: '@opentelemetry/plugin-express',
},
http: {
enabled: true,
path: '@opentelemetry/plugin-http',
},
ioredis: {
enabled: true,
path: '@opentelemetry/plugin-ioredis',
},
pg: {
enabled: true,
path: '@opentelemetry/plugin-pg',
},
},
});
tracerProvider.addSpanProcessor(
new BatchSpanProcessor(
new CollectorTraceExporter({
serviceName: 'my-trace-service',
})
)
);
tracerProvider.register();
/* New Trace */
import opentelemetry from '@opentelemetry/api';
const tracer = opentelemetry.trace.getTracer('my-tracer');
const span = tracer.startSpan('my-span');
span.setAttribute(key, val);
span.addEvent('foo');
span.end();
/* New Metric */
import { CollectorMetricExporter } from '@opentelemetry/exporter-collector';
import { MeterProvider } from '@opentelemetry/metrics';
const metricExporter = new CollectorMetricExporter({
serviceName: 'my-metric-service',
});
const metricProvider = new MeterProvider({
exporter: metricExporter,
interval: 1000, // ms
});
const meter = metricProvider.getMeter('my-meter');
const counter = meter.createCounter('my-counter');
const labels = { foo: 'bar' }
counter.bind(labels).add(1);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment