whatap 0.4.42 → 0.4.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -58,6 +58,7 @@ var ConfigDefault = {
|
|
|
58
58
|
"profile_http_querystring_enabled": false,
|
|
59
59
|
"profile_http_header_enabled": bool('profile_http_header_enabled',false),
|
|
60
60
|
"profile_http_parameter_enabled": bool('profile_http_parameter_enabled',false),
|
|
61
|
+
"profile_httpc_parameter_enabled": bool('profile_httpc_parameter_enabled',false),
|
|
61
62
|
"profile_http_parameter_url_prefix": "/",
|
|
62
63
|
"profile_http_header_url_prefix": "/",
|
|
63
64
|
"profile_connection_open_enabled": true,
|
|
@@ -80,7 +81,7 @@ var ConfigDefault = {
|
|
|
80
81
|
"profile_step_max_count": 1024,
|
|
81
82
|
"profile_fullstack_max_lines": 0,
|
|
82
83
|
"profile_basetime": num('profile_basetime',500),
|
|
83
|
-
"trace_http_client_ip_header_key": "",
|
|
84
|
+
"trace_http_client_ip_header_key": "x-forwarded-for",
|
|
84
85
|
"trace_user_agent_header_key": "",
|
|
85
86
|
"trace_referer_header_key": "",
|
|
86
87
|
|
|
@@ -17,6 +17,7 @@ var CounterPack = require('../pack/counter-pack'),
|
|
|
17
17
|
GCStat = require('./task/gcstat'),
|
|
18
18
|
Sql = require('./task/sql'),
|
|
19
19
|
HttpC = require('./task/httpc'),
|
|
20
|
+
StatError = require('../stat/stat-error'),
|
|
20
21
|
TagCounterPack = require('../pack/tagcount-pack'),
|
|
21
22
|
TraceContextManager = require('../trace/trace-context-manager'),
|
|
22
23
|
secuMaster = require('../net/security-master'),
|
|
@@ -88,8 +89,12 @@ CounterManager.prototype.process = function (tasks) {
|
|
|
88
89
|
while (enumer.hasMoreElements()) {
|
|
89
90
|
var ctx = enumer.nextElement();
|
|
90
91
|
if (ctx.getElapsedTime() > conf.profile_max_time) {
|
|
91
|
-
|
|
92
|
-
TraceContextManager.
|
|
92
|
+
//TraceContextManager.end(ctx._id);
|
|
93
|
+
var obj = TraceContextManager.resume(ctx._id);
|
|
94
|
+
TraceContextManager.addStep("Lost Connection","");
|
|
95
|
+
//ctx.status = 5;
|
|
96
|
+
//ctx.error = StatError.addError(500, "Lost Connection", ctx.service_hash);
|
|
97
|
+
TraceContextManager.endTrace(ctx);
|
|
93
98
|
}
|
|
94
99
|
}
|
|
95
100
|
|
package/lib/counter/task/sql.js
CHANGED
|
@@ -62,12 +62,12 @@ function sql_meter(p){
|
|
|
62
62
|
var key = en.nextElement();
|
|
63
63
|
var b = MeterSql.stat.get(key);
|
|
64
64
|
p.sql_meter.put(key, {
|
|
65
|
-
time: b.
|
|
66
|
-
count: b.
|
|
67
|
-
error: b.
|
|
65
|
+
time: b.sql_time,
|
|
66
|
+
count: b.sql_count,
|
|
67
|
+
error: b.sql_error,
|
|
68
68
|
actx : 0,
|
|
69
|
-
fetch_count: b.
|
|
70
|
-
fetch_time: b.
|
|
69
|
+
fetch_count: b.sql_fetch_count,
|
|
70
|
+
fetch_time: b.sql_fetch_time
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
73
|
MeterSql.resetStat();
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* can be found in the LICENSE file.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
const controlHandler = require('../control/control-handler');
|
|
7
8
|
var TraceContextManager = require('../trace/trace-context-manager'),
|
|
8
9
|
URLPatternDetector = require('../trace/serviceurl-pattern-detector').Detector,
|
|
9
10
|
DataTextAgent = require('../data/datatext-agent'),
|
|
@@ -36,7 +37,7 @@ var TraceContextManager = require('../trace/trace-context-manager'),
|
|
|
36
37
|
|
|
37
38
|
var _exts=new Set([".css",".js",".png"]);
|
|
38
39
|
|
|
39
|
-
var configIpHeaderKey =
|
|
40
|
+
var configIpHeaderKey = conf.trace_http_client_ip_header_key;
|
|
40
41
|
var configUserAgentKey = undefined;
|
|
41
42
|
var configRefererKey = undefined;
|
|
42
43
|
var trace_origin_url = false;
|
|
@@ -235,6 +236,26 @@ function initCtx(req, res) {
|
|
|
235
236
|
} catch (e) {
|
|
236
237
|
}
|
|
237
238
|
/************************************/
|
|
239
|
+
/* Header / param Trace */
|
|
240
|
+
/************************************/
|
|
241
|
+
var header_enabled = false;
|
|
242
|
+
if(conf.profile_http_header_enabled === true && req.headers) {
|
|
243
|
+
header_enabled = true;
|
|
244
|
+
var prefix = conf.profile_header_url_prefix;
|
|
245
|
+
if(prefix && ctx.service_name.indexOf(prefix) < 0) {
|
|
246
|
+
header_enabled = false;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
if(header_enabled) {
|
|
251
|
+
var step = new MessageStep();
|
|
252
|
+
step.hash = HashUtil.hashFromString("HTTP-HEADERS");
|
|
253
|
+
step.start_time = ctx.getElapsedTime();
|
|
254
|
+
step.desc = JSON.stringify(req.headers);
|
|
255
|
+
DataTextAgent.MESSAGE.add(step.hash, "HTTP-HEADERS");
|
|
256
|
+
ctx.profile.push(step);
|
|
257
|
+
}
|
|
258
|
+
/************************************/
|
|
238
259
|
/* Multi Server Transaction Trace */
|
|
239
260
|
/************************************/
|
|
240
261
|
if(conf.mtrace_enabled) {
|
|
@@ -280,7 +301,32 @@ function initCtx(req, res) {
|
|
|
280
301
|
};
|
|
281
302
|
|
|
282
303
|
HttpObserver.prototype.__endTransaction = function(error, ctx, req, res) {
|
|
304
|
+
var param_enabled = false;
|
|
305
|
+
if(conf.profile_http_parameter_enabled === true) {
|
|
306
|
+
param_enabled = true;
|
|
307
|
+
var prefix = conf.profile_http_parameter_url_prefix;
|
|
308
|
+
if(prefix && ctx.service_name.indexOf(prefix) < 0) {
|
|
309
|
+
param_enabled = false;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
283
312
|
|
|
313
|
+
if(param_enabled) {
|
|
314
|
+
var query = JSON.stringify(req.query || '');
|
|
315
|
+
var body = JSON.stringify(req.body || '');
|
|
316
|
+
//var param = JSON.stringify(req.params || '');
|
|
317
|
+
//console.log(query.length + " // " + body.length);
|
|
318
|
+
var step = new MessageStep();
|
|
319
|
+
step.hash = HashUtil.hashFromString("HTTP-PARAMETERS");
|
|
320
|
+
step.start_time = ctx.getElapsedTime();
|
|
321
|
+
if(query.length > 2) {
|
|
322
|
+
step.desc = '[GET] ' + query;
|
|
323
|
+
} else {
|
|
324
|
+
step.desc = '[POST] ' + body;
|
|
325
|
+
}
|
|
326
|
+
DataTextAgent.MESSAGE.add(step.hash, "HTTP-PARAMETERS");
|
|
327
|
+
ctx.profile.push(step);
|
|
328
|
+
}
|
|
329
|
+
|
|
284
330
|
if(error) {
|
|
285
331
|
TraceContextManager.end(ctx != null ? ctx._id : null);
|
|
286
332
|
ctx = null;
|
|
@@ -289,15 +335,6 @@ HttpObserver.prototype.__endTransaction = function(error, ctx, req, res) {
|
|
|
289
335
|
|
|
290
336
|
if(ctx == null || TraceContextManager.isExist(ctx._id) === false) { return; }
|
|
291
337
|
|
|
292
|
-
var header_enabled = false;
|
|
293
|
-
if(conf.profile_http_header_enabled === true && req.headers) {
|
|
294
|
-
header_enabled = true;
|
|
295
|
-
var prefix = conf.profile_header_url_prefix;
|
|
296
|
-
if(prefix && ctx.service_name.indexOf(prefix) < 0) {
|
|
297
|
-
header_enabled = false;
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
|
|
301
338
|
if(ctx.isStaticContents !== true && conf._trace_ignore_url_set[ctx.service_hash]){
|
|
302
339
|
ctx.isStaticContents = true;
|
|
303
340
|
}
|
|
@@ -312,37 +349,6 @@ HttpObserver.prototype.__endTransaction = function(error, ctx, req, res) {
|
|
|
312
349
|
return;
|
|
313
350
|
}
|
|
314
351
|
|
|
315
|
-
if(header_enabled) {
|
|
316
|
-
var step = new MessageStep();
|
|
317
|
-
step.hash = HashUtil.hashFromString("HTTP-HEADERS");
|
|
318
|
-
step.start_time = ctx.getElapsedTime();
|
|
319
|
-
step.desc = JSON.stringify(req.headers);
|
|
320
|
-
DataTextAgent.MESSAGE.add(step.hash, "HTTP-HEADERS");
|
|
321
|
-
ctx.profile.push(step);
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
var param_enabled = false;
|
|
325
|
-
if(conf.profile_http_parameter_enabled === true) {
|
|
326
|
-
param_enabled = true;
|
|
327
|
-
var prefix = conf.profile_http_parameter_url_prefix;
|
|
328
|
-
if(prefix && ctx.service_name.indexOf(prefix) < 0) {
|
|
329
|
-
param_enabled = false;
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
if(param_enabled) {
|
|
334
|
-
// var query = JSON.stringify(req.query || '');
|
|
335
|
-
// var body = JSON.stringify(req.body || '');
|
|
336
|
-
var param = JSON.stringify(req.params || '');
|
|
337
|
-
|
|
338
|
-
var step = new MessageStep();
|
|
339
|
-
step.hash = HashUtil.hashFromString("HTTP-PARAMETERS");
|
|
340
|
-
step.start_time = ctx.getElapsedTime();
|
|
341
|
-
step.desc = param;
|
|
342
|
-
DataTextAgent.MESSAGE.add(step.hash, "HTTP-PARAMETERS");
|
|
343
|
-
ctx.profile.push(step);
|
|
344
|
-
}
|
|
345
|
-
|
|
346
352
|
try {
|
|
347
353
|
var profile = new ProfilePack();
|
|
348
354
|
var wtx = new TxRecord();
|
|
@@ -526,6 +532,7 @@ HttpObserver.prototype.inject = function( mod, moduleName ) {
|
|
|
526
532
|
if(args[0].method === 'OPTION') {
|
|
527
533
|
return;
|
|
528
534
|
}
|
|
535
|
+
|
|
529
536
|
var dataConsumption = false;
|
|
530
537
|
|
|
531
538
|
if(args.length > 0) {
|
|
@@ -620,6 +627,19 @@ HttpObserver.prototype.inject = function( mod, moduleName ) {
|
|
|
620
627
|
DataTextAgent.HTTPC_HOST.add(step.host, ctx.httpc_host);
|
|
621
628
|
step.port = ctx.httpc_port;
|
|
622
629
|
|
|
630
|
+
aop.before(ret, 'write', function (obj, args) {
|
|
631
|
+
if(conf.profile_httpc_parameter_enabled == true) {
|
|
632
|
+
if(args.length == 1) {
|
|
633
|
+
var step = new MessageStep();
|
|
634
|
+
step.hash = HashUtil.hashFromString("HTTPC-REQUEST-BODY");
|
|
635
|
+
step.start_time = ctx.getElapsedTime();
|
|
636
|
+
step.desc = args[0];
|
|
637
|
+
DataTextAgent.MESSAGE.add(step.hash, "HTTPC-REQUEST-BODY");
|
|
638
|
+
ctx.profile.push(step);
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
});
|
|
642
|
+
|
|
623
643
|
aop.before(ret, 'end', function (obj, args) {
|
|
624
644
|
ctx.active_httpc_hash = step.url;
|
|
625
645
|
ctx.profile.push(step);
|
package/package.json
CHANGED