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.end(ctx._id);
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
 
@@ -24,7 +24,7 @@ function Bucket() {
24
24
 
25
25
  function MeterSql() {
26
26
  this.bucket = new Bucket();
27
- this.stat = new IntKeyLinkedMap(309, 1).setMax(307);
27
+ this.stat = new IntKeyLinkedMap(500, 1).setMax(500);
28
28
  this.stat.create = function (key) {
29
29
  return new Bucket();
30
30
  };
@@ -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.time,
66
- count: b.count,
67
- error: b.error,
65
+ time: b.sql_time,
66
+ count: b.sql_count,
67
+ error: b.sql_error,
68
68
  actx : 0,
69
- fetch_count: b.fetch_count,
70
- fetch_time: b.fetch_time
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 = undefined;
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
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "whatap",
3
3
  "homepage": "http://www.whatap.io",
4
- "version": "0.4.42",
5
- "releaseDate": "20210802",
4
+ "version": "0.4.45",
5
+ "releaseDate": "20220517",
6
6
  "description": "Monitoring and Profiling Service",
7
7
  "main": "index.js",
8
8
  "scripts": {},