Zack
10/14/2024, 1:24 AMconst traceExporter = new OTLPTraceExporter({
`url: ${config.exportUrl}/v1/traces
,`
headers: { "signoz-access-token": process.env.SIGNOZ_INGESTION_KEY },
});
const metricExporter = new OTLPMetricExporter({
`url: ${config.exportUrl}/v1/metrics
,`
headers: { "signoz-access-token": process.env.SIGNOZ_INGESTION_KEY },
});
const logExporter = new OTLPLogExporter({
`url: ${config.exportUrl}
,`
headers: { "signoz-access-token": process.env.SIGNOZ_INGESTION_KEY },
});
other details:
const logRecordProcessor = new logs.BatchLogRecordProcessor(logExporter);
export const sdk = new NodeSDK({
resource: resource,
traceExporter: traceExporter,
metricReader: metricReader,
logRecordProcessors: [logRecordProcessor],
instrumentations: [getNodeAutoInstrumentations()],
serviceName: config.serviceName,
});
Srikanth Chekuri
10/14/2024, 7:17 AMZack
10/14/2024, 3:47 PMZack
10/14/2024, 3:49 PM// logger.js
import pino from "pino";
import { trace } from "@opentelemetry/api";
export const logger = pino({
transport: {
targets: [
{
target: "pino-opentelemetry-transport",
options: {
resourceAttributes: {
"service.name": "loan-monitor",
},
},
},
{
target: "pino-pretty",
level: "info",
options: {
colorize: true,
ignore: "traceId,spanId,traceFlags",
},
},
],
},
formatters: {
*log*: (_log_) => {
const currentSpan = trace.getActiveSpan();
if (currentSpan) {
const { traceId, spanId, traceFlags } = currentSpan.spanContext();
_log_.traceId = traceId;
_log_.spanId = spanId;
_log_.traceFlags = traceFlags;
}
return _log_;
},
},
});
Ankit Nayan
Zack
10/18/2024, 1:41 PMZack
10/18/2024, 1:42 PMSrikanth Chekuri
10/18/2024, 2:35 PMOTEL_EXPORTER_OTLP_LOGS_ENDPOINT=<> OTEL_RESOURCE_ATTRIBUTES="service.name=my-service,service.version=v0.0.1"
and try againAnkit Nayan
Also I have a product improvement recommendation, perhaps worthy of discussing in a separate thread that would increase adoption dramatically.Feel free to mention me in a separate thread/write-up