mirror of
https://github.com/OneUptime/oneuptime
synced 2024-11-21 22:59:07 +00:00
Add OpenTelemetry HTTP and Express instrumentations
This commit is contained in:
parent
b12582ab67
commit
5dc625c34b
@ -7,7 +7,8 @@ import {
|
|||||||
} from '@opentelemetry/sdk-metrics';
|
} from '@opentelemetry/sdk-metrics';
|
||||||
import Dictionary from 'Common/Types/Dictionary';
|
import Dictionary from 'Common/Types/Dictionary';
|
||||||
import { AWSXRayIdGenerator } from '@opentelemetry/id-generator-aws-xray';
|
import { AWSXRayIdGenerator } from '@opentelemetry/id-generator-aws-xray';
|
||||||
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
|
import { HttpInstrumentation } from '@opentelemetry/instrumentation-http';
|
||||||
|
import { ExpressInstrumentation } from '@opentelemetry/instrumentation-express';
|
||||||
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
|
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
|
||||||
import {
|
import {
|
||||||
BatchLogRecordProcessor,
|
BatchLogRecordProcessor,
|
||||||
@ -23,6 +24,7 @@ import {
|
|||||||
import { Resource } from '@opentelemetry/resources';
|
import { Resource } from '@opentelemetry/resources';
|
||||||
import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';
|
import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';
|
||||||
import { Logger, logs } from '@opentelemetry/api-logs';
|
import { Logger, logs } from '@opentelemetry/api-logs';
|
||||||
|
import { CompressionAlgorithm } from '@opentelemetry/otlp-exporter-base';
|
||||||
|
|
||||||
export default class OneUptimeTelemetry {
|
export default class OneUptimeTelemetry {
|
||||||
public static sdk: opentelemetry.NodeSDK | null = null;
|
public static sdk: opentelemetry.NodeSDK | null = null;
|
||||||
@ -93,7 +95,13 @@ export default class OneUptimeTelemetry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static init(data: { serviceName: string }): opentelemetry.NodeSDK {
|
public static init(data: { serviceName: string }): opentelemetry.NodeSDK {
|
||||||
|
|
||||||
if (!this.sdk) {
|
if (!this.sdk) {
|
||||||
|
|
||||||
|
const headers: Dictionary<string> = this.getHeaders();
|
||||||
|
|
||||||
|
console.log(headers);
|
||||||
|
|
||||||
let traceExporter: SpanExporter = new ConsoleSpanExporter();
|
let traceExporter: SpanExporter = new ConsoleSpanExporter();
|
||||||
|
|
||||||
let metricReader: PeriodicExportingMetricReader =
|
let metricReader: PeriodicExportingMetricReader =
|
||||||
@ -104,7 +112,7 @@ export default class OneUptimeTelemetry {
|
|||||||
if (this.getOltpTracesEndpoint()) {
|
if (this.getOltpTracesEndpoint()) {
|
||||||
traceExporter = new OTLPTraceExporter({
|
traceExporter = new OTLPTraceExporter({
|
||||||
url: this.getOltpTracesEndpoint()!.toString(),
|
url: this.getOltpTracesEndpoint()!.toString(),
|
||||||
headers: this.getHeaders(),
|
headers: headers,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +120,7 @@ export default class OneUptimeTelemetry {
|
|||||||
metricReader = new PeriodicExportingMetricReader({
|
metricReader = new PeriodicExportingMetricReader({
|
||||||
exporter: new OTLPMetricExporter({
|
exporter: new OTLPMetricExporter({
|
||||||
url: this.getOltpMetricsEndpoint()!.toString(),
|
url: this.getOltpMetricsEndpoint()!.toString(),
|
||||||
headers: this.getHeaders(),
|
headers: headers,
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -122,7 +130,8 @@ export default class OneUptimeTelemetry {
|
|||||||
if (this.getOltpLogsEndpoint()) {
|
if (this.getOltpLogsEndpoint()) {
|
||||||
const logExporter: OTLPLogExporter = new OTLPLogExporter({
|
const logExporter: OTLPLogExporter = new OTLPLogExporter({
|
||||||
url: this.getOltpLogsEndpoint()!.toString(),
|
url: this.getOltpLogsEndpoint()!.toString(),
|
||||||
headers: this.getHeaders(),
|
headers: headers,
|
||||||
|
compression: CompressionAlgorithm.GZIP,
|
||||||
});
|
});
|
||||||
|
|
||||||
loggerProvider.addLogRecordProcessor(
|
loggerProvider.addLogRecordProcessor(
|
||||||
@ -143,7 +152,10 @@ export default class OneUptimeTelemetry {
|
|||||||
traceExporter: traceExporter,
|
traceExporter: traceExporter,
|
||||||
metricReader: metricReader as any,
|
metricReader: metricReader as any,
|
||||||
logRecordProcessor: loggerProvider as any,
|
logRecordProcessor: loggerProvider as any,
|
||||||
instrumentations: [getNodeAutoInstrumentations()],
|
instrumentations: [
|
||||||
|
new HttpInstrumentation(),
|
||||||
|
new ExpressInstrumentation()
|
||||||
|
],
|
||||||
resource: this.getResource({
|
resource: this.getResource({
|
||||||
serviceName: data.serviceName,
|
serviceName: data.serviceName,
|
||||||
}),
|
}),
|
||||||
|
@ -63,6 +63,8 @@ class OpenTelemetryRequestMiddleware {
|
|||||||
try {
|
try {
|
||||||
let productType: ProductType;
|
let productType: ProductType;
|
||||||
|
|
||||||
|
debugger;
|
||||||
|
|
||||||
const isProtobuf: boolean = req.body instanceof Uint8Array;
|
const isProtobuf: boolean = req.body instanceof Uint8Array;
|
||||||
|
|
||||||
if (req.url.includes('/otlp/v1/traces')) {
|
if (req.url.includes('/otlp/v1/traces')) {
|
||||||
|
@ -170,7 +170,7 @@ BILLING_PRIVATE_KEY=
|
|||||||
# Use this when you want to disable incident creation.
|
# Use this when you want to disable incident creation.
|
||||||
DISABLE_AUTOMATIC_INCIDENT_CREATION=false
|
DISABLE_AUTOMATIC_INCIDENT_CREATION=false
|
||||||
|
|
||||||
# You can set the env var to http://otel-collector:4317 if you want instrumentation to be sent to otel collector.
|
# You can set the env var to http://otel-collector:4318 if you want instrumentation to be sent to otel collector.
|
||||||
OTEL_EXPORTER_OTLP_ENDPOINT=
|
OTEL_EXPORTER_OTLP_ENDPOINT=
|
||||||
|
|
||||||
# You can set the env var to "x-oneuptime-service-token=<YOUR_ONEUPTIME_SERVICE_TOKEN>"
|
# You can set the env var to "x-oneuptime-service-token=<YOUR_ONEUPTIME_SERVICE_TOKEN>"
|
||||||
|
Loading…
Reference in New Issue
Block a user