Skip to content

Commit c6aca51

Browse files
wu-shengdmsolr
andauthored
used the nginx lua code style. (#10)
* used the nginx lua code style for tracing context. * fixed test cases. * fixed * fixed test cases * fixed * fixed code style of register. * code style of segment. * add test cases for segment ref. * fixed * fixed bug in TracingContext:drainAfterFinished Co-authored-by: 吴晟 Wu Sheng <[email protected]> Co-authored-by: Daming <[email protected]>
1 parent 6f8e8ad commit c6aca51

14 files changed

+636
-550
lines changed

.gitignore

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ packages/
1313
/dist/
1414
/docker/snapshot/*.gz
1515
.mvn/wrapper/*.jar
16-
.factorypath
17-
.vscode
16+
.factorypath
17+
.vscode
1818
.checkstyle
1919
.externalToolBuilders
2020
/test/plugin/dist
2121
/test/plugin/workspace
22+
/t/servroot/

README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@ Apache SkyWalking Nginx Agent
88
![CI](https://github.com/apache/skywalking-nginx-lua/workflows/CI/badge.svg?branch=master)
99

1010

11-
[**SkyWalking**](https://github.com/apache/skywalking) Nginx Agent provides the native tracing capability for Nginx powered by Nginx LUA module.
11+
[**SkyWalking**](https://github.com/apache/skywalking) Nginx Agent provides the native tracing capability for Nginx powered by Nginx LUA module.
1212

13-
This agent follows the SkyWalking tracing and header protocol. It reports tracing data to SkyWalking APM through HTTP protocol.
13+
This agent follows the SkyWalking tracing and header protocol. It reports tracing data to SkyWalking APM through HTTP protocol.
1414
All HTTP 1.1 requests go through Nginx could be collected by this agent.
1515

1616
# Setup Doc
1717
```
1818
http {
1919
lua_package_path "/Path/to/.../skywalking-nginx-lua/lib/skywalking/?.lua;;";
2020
21-
# Buffer represents the register inform and the queue of the finished segment
21+
# Buffer represents the register inform and the queue of the finished segment
2222
lua_shared_dict tracing_buffer 100m;
23-
23+
2424
# Init is the timer setter and keeper
2525
# Setup an infinite loop timer to do register and trace report.
2626
init_worker_by_lua_block {
@@ -112,13 +112,13 @@ The following APIs are for developers or using this lib out of the Nginx case.
112112

113113
## Tracing APIs at LUA level
114114
**TracingContext** is the entrance API for lua level tracing.
115-
- `TracingContext:new(serviceId, serviceInstID)`, create an active tracing context.
116-
- `TracingContext:newNoOP()`, create a no OP tracing context.
117-
- `TracingContext:drainAfterFinished()`, fetch the segment includes all finished spans.
115+
- `TracingContext.new(serviceId, serviceInstID)`, create an active tracing context.
116+
- `TracingContext.newNoOP()`, create a no OP tracing context.
117+
- `TracingContext.drainAfterFinished()`, fetch the segment includes all finished spans.
118118

119119
Create 2 kinds of span
120-
- `TracingContext:createEntrySpan(operationName, parent, contextCarrier)`
121-
- `TracingContext:createExitSpan(operationName, parent, peer, contextCarrier)`
120+
- `TracingContext.createEntrySpan(operationName, parent, contextCarrier)`
121+
- `TracingContext.createExitSpan(operationName, parent, peer, contextCarrier)`
122122

123123

124124
# Download
@@ -131,4 +131,4 @@ Have no release yet.
131131
* QQ Group: 392443393(2000/2000, not available), 901167865(available)
132132

133133
# License
134-
Apache 2.0
134+
Apache 2.0

lib/skywalking/client.lua

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
--
1+
--
22
-- Licensed to the Apache Software Foundation (ASF) under one or more
33
-- contributor license agreements. See the NOTICE file distributed with
44
-- this work for additional information regarding copyright ownership.
55
-- The ASF licenses this file to You under the Apache License, Version 2.0
66
-- (the "License"); you may not use this file except in compliance with
77
-- the License. You may obtain a copy of the License at
8-
--
8+
--
99
-- http://www.apache.org/licenses/LICENSE-2.0
10-
--
10+
--
1111
-- Unless required by applicable law or agreed to in writing, software
1212
-- distributed under the License is distributed on an "AS IS" BASIS,
1313
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1414
-- See the License for the specific language governing permissions and
1515
-- limitations under the License.
16-
--
16+
--
1717

1818
local Client = {}
1919

@@ -78,9 +78,9 @@ function Client:registerService(metadata_buffer, backend_http_uri)
7878
local ERR = ngx.ERR
7979

8080
local serviceName = metadata_buffer:get('serviceName')
81-
81+
8282
local cjson = require('cjson')
83-
local serviceRegister = require("register"):newServiceRegister(serviceName)
83+
local serviceRegister = require("register").newServiceRegister(serviceName)
8484
local serviceRegisterParam = cjson.encode(serviceRegister)
8585

8686
local http = require('resty.http')
@@ -102,7 +102,7 @@ function Client:registerService(metadata_buffer, backend_http_uri)
102102
for i, result in ipairs(registerResults)
103103
do
104104
if result.key == serviceName then
105-
local serviceId = result.value
105+
local serviceId = result.value
106106
log(DEBUG, "Service registered, service id = " .. serviceId)
107107
metadata_buffer:set('serviceId', serviceId)
108108
end
@@ -122,9 +122,9 @@ function Client:registerServiceInstance(metadata_buffer, backend_http_uri)
122122
metadata_buffer:set('serviceInstanceUUID', serviceInstName)
123123

124124
local cjson = require('cjson')
125-
local serviceInstanceRegister = require("register"):newServiceInstanceRegister(
126-
metadata_buffer:get('serviceId'),
127-
serviceInstName,
125+
local serviceInstanceRegister = require("register").newServiceInstanceRegister(
126+
metadata_buffer:get('serviceId'),
127+
serviceInstName,
128128
ngx.now() * 1000)
129129
local serviceInstanceRegisterParam = cjson.encode(serviceInstanceRegister)
130130

@@ -146,7 +146,7 @@ function Client:registerServiceInstance(metadata_buffer, backend_http_uri)
146146
for i, result in ipairs(registerResults)
147147
do
148148
if result.key == serviceInstName then
149-
local serviceId = result.value
149+
local serviceId = result.value
150150
log(DEBUG, "Service Instance registered, service instance id = " .. serviceId)
151151
metadata_buffer:set('serviceInstId', serviceId)
152152
end
@@ -166,9 +166,9 @@ function Client:ping(metadata_buffer, backend_http_uri)
166166
local ERR = ngx.ERR
167167

168168
local cjson = require('cjson')
169-
local pingPkg = require("register"):newServiceInstancePingPkg(
170-
metadata_buffer:get('serviceInstId'),
171-
metadata_buffer:get('serviceInstanceUUID'),
169+
local pingPkg = require("register").newServiceInstancePingPkg(
170+
metadata_buffer:get('serviceInstId'),
171+
metadata_buffer:get('serviceInstanceUUID'),
172172
ngx.now() * 1000)
173173
local pingPkgParam = cjson.encode(pingPkg)
174174

@@ -214,7 +214,7 @@ function Client:reportTraces(metadata_buffer, backend_http_uri)
214214
["Content-Type"] = "application/json",
215215
},
216216
})
217-
217+
218218
if err == nil then
219219
if res.status ~= 200 then
220220
log(ERR, "Segment report fails, response code " .. res.status)
@@ -235,4 +235,4 @@ function Client:reportTraces(metadata_buffer, backend_http_uri)
235235
end
236236
end
237237

238-
return Client
238+
return Client

lib/skywalking/register.lua

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
1-
--
1+
--
22
-- Licensed to the Apache Software Foundation (ASF) under one or more
33
-- contributor license agreements. See the NOTICE file distributed with
44
-- this work for additional information regarding copyright ownership.
55
-- The ASF licenses this file to You under the Apache License, Version 2.0
66
-- (the "License"); you may not use this file except in compliance with
77
-- the License. You may obtain a copy of the License at
8-
--
8+
--
99
-- http://www.apache.org/licenses/LICENSE-2.0
10-
--
10+
--
1111
-- Unless required by applicable law or agreed to in writing, software
1212
-- distributed under the License is distributed on an "AS IS" BASIS,
1313
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1414
-- See the License for the specific language governing permissions and
1515
-- limitations under the License.
16-
--
16+
--
1717

18-
local Register = {}
18+
local _M = {}
1919

2020
-- Return Services as service register parameter
21-
function Register:newServiceRegister(unRegisterServiceName)
21+
function _M.newServiceRegister(unRegisterServiceName)
2222
local serv = {
2323
services = {}
2424
}
25-
25+
2626
local service = {
2727
serviceName = unRegisterServiceName,
2828
-- Field type is optional, default value is `normal`
@@ -34,11 +34,11 @@ function Register:newServiceRegister(unRegisterServiceName)
3434
return serv
3535
end
3636

37-
function Register:newServiceInstanceRegister(registeredServiceId, serviceInstUUID, registerTime)
37+
function _M.newServiceInstanceRegister(registeredServiceId, serviceInstUUID, registerTime)
3838
local serviceInstances = {
3939
instances = {}
4040
}
41-
41+
4242
local serviceInstance = {
4343
serviceId = registeredServiceId,
4444
instanceUUID = serviceInstUUID,
@@ -53,7 +53,7 @@ function Register:newServiceInstanceRegister(registeredServiceId, serviceInstUUI
5353
return serviceInstances
5454
end
5555

56-
function Register:newServiceInstancePingPkg(registeredServiceInstId, serviceInstUUID, updateTime)
56+
function _M.newServiceInstancePingPkg(registeredServiceInstId, serviceInstUUID, updateTime)
5757
local serviceInstancePingPkg = {
5858
serviceInstanceId = registeredServiceInstId,
5959
time = updateTime,
@@ -63,4 +63,4 @@ function Register:newServiceInstancePingPkg(registeredServiceInstId, serviceInst
6363
return serviceInstancePingPkg
6464
end
6565

66-
return Register
66+
return _M

lib/skywalking/segment.lua

Lines changed: 29 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -17,65 +17,49 @@
1717

1818
-- Segment represents a finished tracing context
1919
-- Including all information to send to the SkyWalking OAP server.
20-
local Util = require('util')
20+
local Span = require('span')
2121

22-
local Segment = {
23-
trace_id,
24-
segment_id,
25-
service_id,
26-
service_inst_id,
27-
spans,
28-
}
22+
local _M = {}
23+
-- local Segment = {
24+
-- trace_id,
25+
-- segment_id,
26+
-- service_id,
27+
-- service_inst_id,
28+
-- spans,
29+
-- }
2930

3031
-- Due to nesting relationship inside Segment/Span/TracingContext at the runtime,
3132
-- SegmentProtocol is created to prepare JSON format serialization.
3233
-- Following SkyWalking official trace protocol v2
3334
-- https://github.com/apache/skywalking-data-collect-protocol/blob/master/language-agent-v2/trace.proto
34-
local SegmentProtocol = {
35-
globalTraceIds,
36-
traceSegmentId,
37-
serviceId,
38-
serviceInstanceId,
39-
spans,
40-
}
41-
42-
function Segment:new()
43-
local o = {}
44-
setmetatable(o, self)
45-
self.__index = self
46-
47-
return o
48-
end
49-
50-
function SegmentProtocol:new()
51-
local o = {}
52-
setmetatable(o, self)
53-
self.__index = self
54-
55-
o.globalTraceIds = {}
56-
57-
return o
58-
end
35+
-- local SegmentProtocol = {
36+
-- globalTraceIds,
37+
-- traceSegmentId,
38+
-- serviceId,
39+
-- serviceInstanceId,
40+
-- spans,
41+
-- }
5942

6043
-- Return SegmentProtocol
61-
function Segment:transform()
62-
local segmentBuilder = SegmentProtocol:new()
63-
segmentBuilder.serviceId = self.service_id
64-
segmentBuilder.globalTraceIds[1] = { idParts = self.trace_id}
65-
segmentBuilder.traceSegmentId = { idParts = self.segment_id}
66-
segmentBuilder.serviceId = self.service_id
67-
segmentBuilder.serviceInstanceId = self.service_inst_id
44+
function _M.transform(segment)
45+
local segmentBuilder = {}
46+
segmentBuilder.serviceId = segment.service_id
47+
segmentBuilder.globalTraceIds = {}
48+
segmentBuilder.globalTraceIds[1] = {idParts = segment.trace_id}
49+
segmentBuilder.traceSegmentId = {idParts = segment.segment_id}
50+
segmentBuilder.serviceId = segment.service_id
51+
segmentBuilder.serviceInstanceId = segment.service_inst_id
6852

6953
segmentBuilder.spans = {}
7054

71-
if self.spans ~= nil and #self.spans > 0 then
72-
for i, span in ipairs(self.spans)
73-
do
74-
segmentBuilder.spans[#segmentBuilder.spans + 1] = span:transform()
55+
if segment.spans ~= nil and #segment.spans > 0 then
56+
for i, span in ipairs(segment.spans)
57+
do
58+
segmentBuilder.spans[#segmentBuilder.spans + 1] = Span.transform(span)
7559
end
7660
end
7761

7862
return segmentBuilder
7963
end
8064

81-
return Segment
65+
return _M

0 commit comments

Comments
 (0)