Javascript 节点/快捷服务,span在日志中生成,但在Jaeger UI中看不到我的服务
我正在尝试为使用Express.js在Node.js中编写的微服务设置Jaeger跟踪 我在我的express应用程序中添加了一个简单的get请求处理程序,当我通过curl访问端点时,我可以看到日志中生成了一个范围,但在Jaeger UI中看不到我的服务名称Javascript 节点/快捷服务,span在日志中生成,但在Jaeger UI中看不到我的服务,javascript,node.js,express,jaeger,Javascript,Node.js,Express,Jaeger,我正在尝试为使用Express.js在Node.js中编写的微服务设置Jaeger跟踪 我在我的express应用程序中添加了一个简单的get请求处理程序,当我通过curl访问端点时,我可以看到日志中生成了一个范围,但在Jaeger UI中看不到我的服务名称 function initTracer(serviceName, options) { var config = { 'serviceName': serviceName, 'sampler': { 'typ
function initTracer(serviceName, options) {
var config = {
'serviceName': serviceName,
'sampler': {
'type': 'const',
'param': 1
},
'reporter': {
'logSpans': true,
'agentHost': '192.168.99.100',
'agentPort': 6832
}
}
var options = {
'logger': {
'info': function logInfo(msg) {
console.log('INFO ', msg)
},
'error': function logError(msg) {
console.log('ERROR', msg)
}
}
}
const tracer = initJaegerTracer(config, options)
//hook up nodejs process exit event
process.on('exit', () => {
console.log('flush out remaining span')
tracer.close()
})
//handle ctrl+c
process.on('SIGINT', () => {
process.exit()
})
return tracer
}
exports.initTracer = initTracer
//server.js
const initTracer = require('./tracing').initTracer;
const {Tags, FORMAT_HTTP_HEADERS} = require('opentracing')
const tracer = initTracer('demo-service')
app.get('/service/model/jaeger', function(req, res) {
var requestEndpoint = req.originalUrl
console.log('[services.server.js] GET received on:', requestEndpoint)
const parentSpanContext = tracer.extract(FORMAT_HTTP_HEADERS, req.headers)
const span = tracer.startSpan('http_get_' + requestEndpoint, {
childOf : parentSpanContext,
tags : {[Tags.SPAN_KIND]: Tags.SPAN_KIND_RPC_SERVER}
});
span.log({'event': `http_get_${requestEndpoint}_end`, 'value' : 'some_value_here'});
span.finish()
res.send('Hello Jaeger bro!')
})
//tracing.js
'use strict'
var initJaegerTracer = require('jaeger-client').initTracer
function initTracer(serviceName) {
var config = {
'serviceName': serviceName,
'sampler': {
'type': 'const',
'param': 1
},
'reporter': {
'logSpans': true,
}
}
var options = {
'logger': {
'info': function logInfo(msg) {
console.log('INFO ', msg)
},
'error': function logError(msg) {
console.log('ERROR', msg)
}
}
}
const tracer = initJaegerTracer(config, options)
//hook up nodejs process exit event
process.on('exit', () => {
console.log('flush out remaining span')
tracer.close()
})
//handle ctrl+c
process.on('SIGINT', () => {
process.exit()
})
return tracer
}
exports.initTracer = initTracer
我在日志中看到:
2018-03-08T01:03:34.519134479Z信息报告范围9b88812951bcd52f:9b88812951bcd52f:0:1
在尝试了不同的组合后,我终于明白了这一点。这是因为Jaeger代理没有从我的应用程序接收任何UDP数据包
您需要告诉跟踪器在哪里发送UDP数据包,在本例中是docker机器ip
我补充说:
'agentHost': '192.168.99.100',
'agentPort': 6832
然后我可以在Jaeger UI中看到我的服务
function initTracer(serviceName, options) {
var config = {
'serviceName': serviceName,
'sampler': {
'type': 'const',
'param': 1
},
'reporter': {
'logSpans': true,
'agentHost': '192.168.99.100',
'agentPort': 6832
}
}
var options = {
'logger': {
'info': function logInfo(msg) {
console.log('INFO ', msg)
},
'error': function logError(msg) {
console.log('ERROR', msg)
}
}
}
const tracer = initJaegerTracer(config, options)
//hook up nodejs process exit event
process.on('exit', () => {
console.log('flush out remaining span')
tracer.close()
})
//handle ctrl+c
process.on('SIGINT', () => {
process.exit()
})
return tracer
}
exports.initTracer = initTracer