import * as NodeSdk from '@effect/opentelemetry/NodeSdk';
import { PrometheusExporter } from '@opentelemetry/exporter-prometheus';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';
import { Config, Effect, Layer } from 'effect';
import { Option } from '../std';
export const TracingLive = Layer.unwrapEffect(Effect.gen(function*() {
const spanProcessorUrl = yield* Config.option(Config.url('TRACING_SERVER'));
const spanProcessor = spanProcessorUrl
.pipe(
Option.map((url) => {
console.log({ url });
return new BatchSpanProcessor(new OTLPTraceExporter({
url: url.href,
}));
}),
Option.getOrUndefined,
);
console.warn({ spanProcessorUrl });
const { endpoint, port } = PrometheusExporter.DEFAULT_OPTIONS;
const exporter = new PrometheusExporter({}, () => {
console
.log(`prometheus scrape endpoint: http://localhost:${port}${endpoint}`);
});
return NodeSdk.layer(() => ({
resource: {
serviceName: 'whatsapp-danielo-bot',
},
spanProcessor,
metricReader: exporter,
}));
}));
import * as NodeSdk from '@effect/opentelemetry/NodeSdk';
import { PrometheusExporter } from '@opentelemetry/exporter-prometheus';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';
import { Config, Effect, Layer } from 'effect';
import { Option } from '../std';
export const TracingLive = Layer.unwrapEffect(Effect.gen(function*() {
const spanProcessorUrl = yield* Config.option(Config.url('TRACING_SERVER'));
const spanProcessor = spanProcessorUrl
.pipe(
Option.map((url) => {
console.log({ url });
return new BatchSpanProcessor(new OTLPTraceExporter({
url: url.href,
}));
}),
Option.getOrUndefined,
);
console.warn({ spanProcessorUrl });
const { endpoint, port } = PrometheusExporter.DEFAULT_OPTIONS;
const exporter = new PrometheusExporter({}, () => {
console
.log(`prometheus scrape endpoint: http://localhost:${port}${endpoint}`);
});
return NodeSdk.layer(() => ({
resource: {
serviceName: 'whatsapp-danielo-bot',
},
spanProcessor,
metricReader: exporter,
}));
}));