From 750ff08fedcf50827b59af3905df3e1a8b244d42 Mon Sep 17 00:00:00 2001
From: 861763765 <40586841+861763765@users.noreply.github.com>
Date: Fri, 3 Apr 2020 13:36:48 +0800
Subject: [PATCH 1/5] add parameter "agent_name_space" for skywalking java
agent config "agent.namespace" in agent.config
---
lib/skywalking/span.lua | 18 ++++++++++++++----
lib/skywalking/tracer.lua | 13 +++++++++----
lib/skywalking/tracing_context.lua | 8 ++++----
3 files changed, 27 insertions(+), 12 deletions(-)
diff --git a/lib/skywalking/span.lua b/lib/skywalking/span.lua
index 6dd30ec..b6a6a46 100644
--- a/lib/skywalking/span.lua
+++ b/lib/skywalking/span.lua
@@ -65,12 +65,17 @@ local _M = {}
-- Create an entry span. Represent the HTTP incoming request.
-- @param contextCarrier, HTTP request header, which could carry the `sw6` context
-function _M.createEntrySpan(operationName, context, parent, contextCarrier)
+function _M.createEntrySpan(operationName, context, parent, contextCarrier, agent_name_space)
+ local nameSpace = ""
+ if agent_name_space ~= nil then
+ nameSpace = agent_name_space .. "-"
+ end
+
local span = _M.new(operationName, context, parent)
span.is_entry = true
if contextCarrier ~= nil then
- local propagatedContext = contextCarrier[CONTEXT_CARRIER_KEY]
+ local propagatedContext = contextCarrier[nameSpace .. CONTEXT_CARRIER_KEY]
if propagatedContext ~= nil then
local ref = SegmentRef.fromSW6Value(propagatedContext)
if ref ~= nil then
@@ -86,7 +91,12 @@ function _M.createEntrySpan(operationName, context, parent, contextCarrier)
end
-- Create an exit span. Represent the HTTP outgoing request.
-function _M.createExitSpan(operationName, context, parent, peer, contextCarrier)
+function _M.createExitSpan(operationName, context, parent, peer, contextCarrier, agent_name_space)
+ local nameSpace = ""
+ if agent_name_space ~= nil then
+ nameSpace = agent_name_space .. "-"
+ end
+
local span = _M.new(operationName, context, parent)
span.is_exit = true
span.peer = peer
@@ -137,7 +147,7 @@ function _M.createExitSpan(operationName, context, parent, peer, contextCarrier)
injectableRef.parent_endpoint_name = parentEndpointName
injectableRef.parent_endpoint_id = parentEndpointId
- contextCarrier[CONTEXT_CARRIER_KEY] = SegmentRef.serialize(injectableRef)
+ contextCarrier[nameSpace .. CONTEXT_CARRIER_KEY] = SegmentRef.serialize(injectableRef)
end
return span
diff --git a/lib/skywalking/tracer.lua b/lib/skywalking/tracer.lua
index f0a1a1e..bee2990 100644
--- a/lib/skywalking/tracer.lua
+++ b/lib/skywalking/tracer.lua
@@ -18,11 +18,16 @@ local Span = require('span')
local Tracer = {}
-function Tracer:start(upstream_name)
+function Tracer:start(upstream_name, agent_name_space)
local metadata_buffer = ngx.shared.tracing_buffer
local TC = require('tracing_context')
local Layer = require('span_layer')
+ local nameSpace = ""
+ if agent_name_space ~= nil then
+ nameSpace = agent_name_space .. "-"
+ end
+
local tracingContext
local serviceName = metadata_buffer:get("serviceName")
local serviceInstId = metadata_buffer:get("serviceInstId")
@@ -38,8 +43,8 @@ function Tracer:start(upstream_name)
local nginxComponentId = 6000
local contextCarrier = {}
- contextCarrier["sw6"] = ngx.req.get_headers()["sw6"]
- local entrySpan = TC.createEntrySpan(tracingContext, ngx.var.uri, nil, contextCarrier)
+ contextCarrier[nameSpace .. "sw6"] = ngx.req.get_headers()[nameSpace .. "sw6"]
+ local entrySpan = TC.createEntrySpan(tracingContext, ngx.var.uri, nil, contextCarrier, agent_name_space)
Span.start(entrySpan, ngx.now() * 1000)
Span.setComponentId(entrySpan, nginxComponentId)
Span.setLayer(entrySpan, Layer.HTTP)
@@ -54,7 +59,7 @@ function Tracer:start(upstream_name)
local upstreamServerName = upstream_name
------------------------------------------------------
- local exitSpan = TC.createExitSpan(tracingContext, upstreamUri, entrySpan, upstreamServerName, contextCarrier)
+ local exitSpan = TC.createExitSpan(tracingContext, upstreamUri, entrySpan, upstreamServerName, contextCarrier, agent_name_space)
Span.start(exitSpan, ngx.now() * 1000)
Span.setComponentId(exitSpan, nginxComponentId)
Span.setLayer(exitSpan, Layer.HTTP)
diff --git a/lib/skywalking/tracing_context.lua b/lib/skywalking/tracing_context.lua
index 23ecfb0..5b7c48e 100644
--- a/lib/skywalking/tracing_context.lua
+++ b/lib/skywalking/tracing_context.lua
@@ -124,22 +124,22 @@ end
-- Delegate to Span.createEntrySpan
-- @param contextCarrier could be nil if there is no downstream propagated context
-function _M.createEntrySpan(tracingContext, operationName, parent, contextCarrier)
+function _M.createEntrySpan(tracingContext, operationName, parent, contextCarrier, agent_name_space)
if tracingContext.is_noop then
return Span.newNoOP()
end
- return Span.createEntrySpan(operationName, tracingContext, parent, contextCarrier)
+ return Span.createEntrySpan(operationName, tracingContext, parent, contextCarrier, agent_name_space)
end
-- Delegate to Span.createExitSpan
-- @param contextCarrier could be nil if don't need to inject any context to propagate
-function _M.createExitSpan(tracingContext, operationName, parent, peer, contextCarrier)
+function _M.createExitSpan(tracingContext, operationName, parent, peer, contextCarrier, agent_name_space)
if tracingContext.is_noop then
return Span.newNoOP()
end
- return Span.createExitSpan(operationName, tracingContext, parent, peer, contextCarrier)
+ return Span.createExitSpan(operationName, tracingContext, parent, peer, contextCarrier, agent_name_space)
end
-- After all active spans finished, this segment will be treated as finished status.
From 32cfe183c7a0fee27bb73fb3ba796dd03e636e39 Mon Sep 17 00:00:00 2001
From: 861763765 <40586841+861763765@users.noreply.github.com>
Date: Fri, 3 Apr 2020 13:43:16 +0800
Subject: [PATCH 2/5] Update README.md
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index b7dec3d..8049ba8 100644
--- a/README.md
+++ b/README.md
@@ -113,8 +113,8 @@ If you just use this in the Ngnix, [Setup Doc](#setup-doc) should be good enough
The following APIs are for developers or using this lib out of the Nginx case.
## Nginx APIs
-- **startTimer**, `require("client"):startBackendTimer("http://127.0.0.1:8080")`. Start the backend timer. This timer register the metadata and report traces to the backend.
-- **start**, `require("tracer"):start("upstream service")`. Begin the tracing before the upstream begin.
+- **startTimer**, `require("client"):startBackendTimer("http://127.0.0.1:12800")`. Start the skywalking backend timer. This timer register the metadata and report traces to the backend.
+- **start**, `require("tracer"):start("upstream service", "agent_name_space")`. Begin the tracing before the upstream begin, use the name_space with java agent config "agent.namespace" .
- **finish**, `require("tracer"):finish()`. Finish the tracing for this HTTP request.
- **prepareForReport**, `require("tracer"):prepareForReport()`. Prepare the finished segment for further report.
From 8b32d815bd651c666b936454c0822d2abeff640f Mon Sep 17 00:00:00 2001
From: 861763765 <40586841+861763765@users.noreply.github.com>
Date: Fri, 3 Apr 2020 13:49:25 +0800
Subject: [PATCH 3/5] Update README.md
---
README.md | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 8049ba8..5b1124d 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-Apache SkyWalking Nginx Agent
+Apache SkyWalking Nginx Agent With Customer Namespace
==========
@@ -31,7 +31,7 @@ http {
-- Instance means the number of Nginx deployment, does not mean the worker instances
metadata_buffer:set('serviceInstanceName', 'User Service Instance Name')
- require("client"):startBackendTimer("http://127.0.0.1:8080")
+ require("client"):startBackendTimer("http://127.0.0.1:12800")
}
server {
@@ -47,8 +47,9 @@ http {
-- Please set them as service logic name or DNS name
--
-- Currently, we can not have the upstream real network address
+ -- The parameter "customer_namespace" for java agent config "agent.namespace"
------------------------------------------------------
- require("tracer"):start("upstream service")
+ require("tracer"):start("upstream service", "customer_namespace")
}
-- Target upstream service
From 5fbaaa79f924e5af08ddcd950f8a74a48c75fb1d Mon Sep 17 00:00:00 2001
From: 861763765 <40586841+861763765@users.noreply.github.com>
Date: Fri, 3 Apr 2020 13:56:22 +0800
Subject: [PATCH 4/5] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 5b1124d..4b2c8bb 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-Apache SkyWalking Nginx Agent With Customer Namespace
+Apache SkyWalking Nginx Agent
==========
From 9b7055c347cbd7d2477e1ddf24f4e17f6c0b7207 Mon Sep 17 00:00:00 2001
From: 861763765 <40586841+861763765@users.noreply.github.com>
Date: Mon, 6 Apr 2020 19:28:53 +0800
Subject: [PATCH 5/5] fix the bug, the method registerServiceInstance() not use
the serviceInstanceName
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The Collector use the check for serviceInstanceName startwith "NAME" is upper case。
---
lib/skywalking/client.lua | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/skywalking/client.lua b/lib/skywalking/client.lua
index 0f0a292..a8e5369 100644
--- a/lib/skywalking/client.lua
+++ b/lib/skywalking/client.lua
@@ -119,7 +119,7 @@ function Client:registerServiceInstance(metadata_buffer, backend_http_uri)
local DEBUG = ngx.DEBUG
local ERR = ngx.ERR
- local serviceInstName = 'name:' .. metadata_buffer:get('serviceInstanceName')
+ local serviceInstName = 'NAME:' .. metadata_buffer:get('serviceInstanceName')
metadata_buffer:set('serviceInstanceUUID', serviceInstName)
local cjson = require('cjson')