in lib/skywalking/tracer.lua [31:88]
function Tracer:start(upstream_name, correlation)
local serviceName = metadata_shdict:get("serviceName")
local serviceInstanceName = metadata_shdict:get('serviceInstanceName')
local req_uri = ngx.var.uri
if (Util.checkIgnoreSuffix(req_uri)) then
local tracingContext = TC.newNoOP()
local ctx = ngx.ctx
ctx.tracingContext = tracingContext
ctx.entrySpan = Span.newNoOP()
ctx.exitSpan = Span.newNoOP()
ctx.is_finished = false
return
end
local includeHostInEntrySpan = metadata_shdict:get('includeHostInEntrySpan')
local tracingContext = TC.new(serviceName, serviceInstanceName, ngx.var.http_request_id)
local contextCarrier = Util.tablepool_fetch("sw_contextCarrier")
contextCarrier["sw8"] = ngx.var.http_sw8
contextCarrier["sw8-correlation"] = ngx.var.http_sw8_correlation
local time_now = ngx.now() * 1000
local entrySpan
if (includeHostInEntrySpan) then
entrySpan = TC.createEntrySpan(tracingContext, ngx.var.host .. req_uri, nil, contextCarrier)
else
entrySpan = TC.createEntrySpan(tracingContext, req_uri, nil, contextCarrier)
end
Span.start(entrySpan, time_now)
Span.setComponentId(entrySpan, nginxComponentId)
Span.setLayer(entrySpan, Layer.HTTP)
Span.tag(entrySpan, 'http.method', ngx.req.get_method())
Span.tag(entrySpan, 'http.params',
ngx.var.scheme .. '://' .. ngx.var.host .. ngx.var.request_uri )
contextCarrier = Util.tablepool_fetch("sw_contextCarrier")
local exitSpan = TC.createExitSpan(tracingContext, req_uri, entrySpan)
Span.start(exitSpan, time_now)
Span.setComponentId(exitSpan, nginxComponentId)
Span.setLayer(exitSpan, Layer.HTTP)
local upstreamServerName = upstream_name
if upstreamServerName then
TC.inject(tracingContext, exitSpan, upstreamServerName, correlation)
end
local ctx = ngx.ctx
ctx.tracingContext = tracingContext
ctx.entrySpan = entrySpan
ctx.exitSpan = exitSpan
ctx.is_finished = false
end