Loading...
Loading...
Compare original and translation side by side
undefinedundefinedundefinedundefined// tracing.js
const initTracer = require('jaeger-client').initTracer;
const opentracing = require('opentracing');
const initJaegerTracer = (serviceName) => {
const config = {
serviceName: serviceName,
sampler: {
type: 'const',
param: 1
},
reporter: {
logSpans: true,
agentHost: process.env.JAEGER_AGENT_HOST || 'localhost',
agentPort: process.env.JAEGER_AGENT_PORT || 6831
}
};
return initTracer(config, {});
};
const tracer = initJaegerTracer('api-service');
module.exports = { tracer };// tracing.js
const initTracer = require('jaeger-client').initTracer;
const opentracing = require('opentracing');
const initJaegerTracer = (serviceName) => {
const config = {
serviceName: serviceName,
sampler: {
type: 'const',
param: 1
},
reporter: {
logSpans: true,
agentHost: process.env.JAEGER_AGENT_HOST || 'localhost',
agentPort: process.env.JAEGER_AGENT_PORT || 6831
}
};
return initTracer(config, {});
};
const tracer = initJaegerTracer('api-service');
module.exports = { tracer };// middleware.js
const { tracer } = require('./tracing');
const opentracing = require('opentracing');
const tracingMiddleware = (req, res, next) => {
const wireCtx = tracer.extract(
opentracing.FORMAT_HTTP_HEADERS,
req.headers
);
const span = tracer.startSpan(req.path, {
childOf: wireCtx,
tags: {
[opentracing.Tags.SPAN_KIND]: opentracing.Tags.SPAN_KIND_RPC_SERVER,
[opentracing.Tags.HTTP_METHOD]: req.method,
[opentracing.Tags.HTTP_URL]: req.url
}
});
req.span = span;
res.on('finish', () => {
span.setTag(opentracing.Tags.HTTP_STATUS_CODE, res.statusCode);
span.finish();
});
next();
};
module.exports = tracingMiddleware;// middleware.js
const { tracer } = require('./tracing');
const opentracing = require('opentracing');
const tracingMiddleware = (req, res, next) => {
const wireCtx = tracer.extract(
opentracing.FORMAT_HTTP_HEADERS,
req.headers
);
const span = tracer.startSpan(req.path, {
childOf: wireCtx,
tags: {
[opentracing.Tags.SPAN_KIND]: opentracing.Tags.SPAN_KIND_RPC_SERVER,
[opentracing.Tags.HTTP_METHOD]: req.method,
[opentracing.Tags.HTTP_URL]: req.url
}
});
req.span = span;
res.on('finish', () => {
span.setTag(opentracing.Tags.HTTP_STATUS_CODE, res.statusCode);
span.finish();
});
next();
};
module.exports = tracingMiddleware;undefinedundefinedundefinedundefined// propagation.js
const axios = require('axios');
const { tracer } = require('./tracing');
const opentracing = require('opentracing');
async function callDownstreamService(span, url, data) {
const headers = {};
// Inject trace context
tracer.inject(span, opentracing.FORMAT_HTTP_HEADERS, headers);
try {
const response = await axios.post(url, data, { headers });
span.setTag('downstream.success', true);
return response.data;
} catch (error) {
span.setTag(opentracing.Tags.ERROR, true);
span.log({
event: 'error',
message: error.message
});
throw error;
}
}
module.exports = { callDownstreamService };// propagation.js
const axios = require('axios');
const { tracer } = require('./tracing');
const opentracing = require('opentracing');
async function callDownstreamService(span, url, data) {
const headers = {};
// Inject trace context
tracer.inject(span, opentracing.FORMAT_HTTP_HEADERS, headers);
try {
const response = await axios.post(url, data, { headers });
span.setTag('downstream.success', true);
return response.data;
} catch (error) {
span.setTag(opentracing.Tags.ERROR, true);
span.log({
event: 'error',
message: error.message
});
throw error;
}
}
module.exports = { callDownstreamService };// zipkin-setup.js
const CLSContext = require('zipkin-context-cls');
const { Tracer, BatchRecorder, HttpLogger } = require('zipkin');
const zipkinMiddleware = require('zipkin-instrumentation-express').expressMiddleware;
const recorder = new BatchRecorder({
logger: new HttpLogger({
endpoint: 'http://localhost:9411/api/v2/spans',
headers: { 'Content-Type': 'application/json' }
})
});
const ctxImpl = new CLSContext('zipkin');
const tracer = new Tracer({ recorder, ctxImpl });
module.exports = {
tracer,
zipkinMiddleware: zipkinMiddleware({
tracer,
serviceName: 'api-service'
})
};// zipkin-setup.js
const CLSContext = require('zipkin-context-cls');
const { Tracer, BatchRecorder, HttpLogger } = require('zipkin');
const zipkinMiddleware = require('zipkin-instrumentation-express').expressMiddleware;
const recorder = new BatchRecorder({
logger: new HttpLogger({
endpoint: 'http://localhost:9411/api/v2/spans',
headers: { 'Content-Type': 'application/json' }
})
});
const ctxImpl = new CLSContext('zipkin');
const tracer = new Tracer({ recorder, ctxImpl });
module.exports = {
tracer,
zipkinMiddleware: zipkinMiddleware({
tracer,
serviceName: 'api-service'
})
};undefinedundefinedresponse = requests.get('http://localhost:16686/api/traces', params=params)
return response.json()['data']undefinedresponse = requests.get('http://localhost:16686/api/traces', params=params)
return response.json()['data']undefined