whatap 0.5.0 → 0.5.2

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.
@@ -4,27 +4,24 @@
4
4
  * can be found in the LICENSE file.
5
5
  */
6
6
 
7
- var MeterSocketio = require('../counter/meter/meter-socket.io'),
8
- TraceContextManager = require('../trace/trace-context-manager'),
7
+ var TraceContextManager = require('../trace/trace-context-manager'),
9
8
  SocketStep = require('../step/socket-step'),
10
9
  conf = require('../conf/configure'),
11
10
  IPUtil = require('../util/iputil'),
12
11
  Logger = require('../logger');
13
- const {Detector: URLPatternDetector} = require("whatap/lib/trace/serviceurl-pattern-detector");
14
- const HashUtil = require("whatap/lib/util/hashutil");
15
- const DataTextAgent = require("whatap/lib/data/datatext-agent");
16
- const ResourceProfile = require("whatap/lib/util/resourceprofile");
12
+ const {Detector: URLPatternDetector} = require("../trace/serviceurl-pattern-detector");
13
+ const DataTextAgent = require("../data/datatext-agent");
14
+ const ResourceProfile = require("../util/resourceprofile");
17
15
  const ProfilePack = require('../pack/profile-pack');
18
16
  const TxRecord = require('../service/tx-record');
19
17
  const DateUtil = require('../util/dateutil');
20
18
  const SecurityMaster = require('../net/security-master');
21
19
  const DataProfileAgent = require('../data/dataprofile-agent');
22
- const MessageStep = require("whatap/lib/step/message-step");
23
- const MeterUsers = require("whatap/lib/counter/meter/meter-users");
24
- const DataPackSender = require("whatap/lib/data/datapack-sender");
20
+ const MeterUsers = require("../counter/meter/meter-users");
25
21
  const MeterService = require('../counter/meter/meter-service').MeterService;
22
+ const shimmer = require('../core/shimmer');
26
23
 
27
- var trace_background_socket_enabled = conf.getProperty('trace_background_socket_enabled', false);
24
+ var trace_background_socket_enabled = conf.getProperty('trace_background_socket_enabled', true);
28
25
  conf.on('trace_background_socket_enabled', function (newProps) {
29
26
  trace_background_socket_enabled = newProps;
30
27
  })
@@ -55,66 +52,78 @@ SocketIOObserver.prototype.inject = function (mod, moduleName) {
55
52
  Logger.initPrint("SocketIOObserver");
56
53
 
57
54
  var self = this;
58
- var aop = self.agent.aop;
59
55
 
60
- aop.after(mod.Server.prototype, 'on', function (obj, args, ret, lctx) {
61
- aop.after(mod.Socket.prototype, 'emit', function (_obj, _args, _ret, _lctx) {
62
- if(!trace_background_socket_enabled) {
63
- return;
56
+ shimmer.wrap(mod.prototype, 'on', function (original) {
57
+ return function (event, listener) {
58
+ if (event === 'connection') {
59
+ return original.call(this, event, function (socket) {
60
+ shimmer.wrap(socket, 'emit', function (origEmit) {
61
+ return function (emitEvent, ...args) {
62
+ if (trace_background_socket_enabled) {
63
+ self.__handleSocketEmitEvent(socket, emitEvent, args);
64
+ }
65
+
66
+ return origEmit.apply(this, [emitEvent, ...args]);
67
+ };
68
+ });
69
+
70
+ return listener.apply(this, [socket]);
71
+ });
64
72
  }
65
- if(trace_sampling_enabled){
66
- var now = Date.now();
67
- if(!socket_count.start_time) {
68
- socket_count.start_time = now;
69
- }
70
-
71
- if ((now - socket_count.start_time) > 5000) {
72
- socket_count.start_time = now;
73
- socket_count.count = 0;
74
- }
75
-
76
- socket_count.count++;
77
- if(socket_count.count > trace_sampling_tps) {
78
- MeterService.add(0, 1, 0, 0, 0, 0);
79
- return;
80
- }
73
+
74
+ return original.call(this, event, listener);
75
+ };
76
+ });
77
+ };
78
+
79
+ SocketIOObserver.prototype.__handleSocketEmitEvent = function(socket, event, args) {
80
+ if (trace_sampling_enabled) {
81
+ var now = Date.now();
82
+ if (!socket_count.start_time) {
83
+ socket_count.start_time = now;
84
+ }
85
+
86
+ if ((now - socket_count.start_time) > 5000) {
87
+ socket_count.start_time = now;
88
+ socket_count.count = 0;
89
+ }
90
+
91
+ socket_count.count++;
92
+ if (socket_count.count > trace_sampling_tps) {
93
+ MeterService.add(0, 1, 0, 0, 0, 0);
94
+ return;
95
+ }
96
+ }
97
+
98
+ TraceContextManager._asyncLocalStorage.run(initCtx(socket, args), () => {
99
+ try {
100
+ var ctx = TraceContextManager._asyncLocalStorage.getStore();
101
+ if (!ctx) return;
102
+
103
+ ctx.footprint('Socket Emit Event: ' + event);
104
+
105
+ var host;
106
+ if (socket.conn && socket.conn.remoteAddress && socket.conn.remoteAddress.includes(':')) {
107
+ host = socket.conn.remoteAddress.substring(socket.conn.remoteAddress.lastIndexOf(':') + 1);
81
108
  }
82
109
 
83
- TraceContextManager._asyncLocalStorage.run(initCtx(_obj, _args), () => {
84
- try{
85
- var ctx = TraceContextManager._asyncLocalStorage.getStore();
86
- if (!ctx) {
87
- return;
88
- }
89
-
90
- var socket = _obj;
91
- var host;
92
- if (socket.handshake && socket.handshake.address && socket.handshake.address.includes(':')) {
93
- host = socket.handshake.address.substring(socket.handshake.address.lastIndexOf(':') + 1);
94
- }
95
-
96
- ctx.socket_connecting = true;
97
- ctx.footprint('Socket Connecting: ' + host);
98
-
99
- var step = new SocketStep();
100
- step.start_time = ctx.getElapsedTime();
101
- step.ipaddr = Buffer.from(IPUtil.stringToBytes(host));
102
- // step.port = port;
103
-
104
- ctx.socket_connecting = false;
105
- step.elapsed = ctx.getElapsedTime() - step.start_time;
106
- ctx.profile.push(step);
107
-
108
- ctx.footprint('Socket Connecting Done');
109
-
110
- self.__endTransaction(null, ctx);
111
- return;
112
- }catch (e) {
113
- Logger.printError('WHATAP-616', 'socket.io transaction error..', e, false);
114
- return;
115
- }
116
- });
117
- });
110
+ ctx.socket_connecting = true;
111
+ ctx.footprint('Socket Connecting: ' + host);
112
+
113
+ var step = new SocketStep();
114
+ step.start_time = ctx.getElapsedTime();
115
+ step.ipaddr = Buffer.from(IPUtil.stringToBytes(host));
116
+ // step.port = port;
117
+
118
+ ctx.socket_connecting = false;
119
+ step.elapsed = ctx.getElapsedTime() - step.start_time;
120
+ ctx.profile.push(step)
121
+
122
+ this.__endTransaction(null, ctx);
123
+
124
+ } catch (e) {
125
+ Logger.printError('WHATAP-616', 'socket.io emit transaction error..', e, false);
126
+ }
118
127
  });
119
128
  };
120
129
 
@@ -163,7 +172,7 @@ function initCtx(socket, args) {
163
172
  if (!ctx) {return;}
164
173
 
165
174
  var remote_addr;
166
- const address = socket.handshake.address;
175
+ const address = socket.conn.remoteAddress;
167
176
  if(address && address.includes(':')){
168
177
  remote_addr = address.substring(address.lastIndexOf(':')+1);
169
178
  }
@@ -54,7 +54,7 @@ var OidUtil = {
54
54
  mkOid: function(oname){
55
55
  return HashUtil.hash(Buffer.from(oname));
56
56
  },
57
- mkOname: function(pattern){
57
+ mkOname: function(pattern, port){
58
58
  var conf = require('./../conf/configure');
59
59
  var startBrace = "{";
60
60
  var endBrace = "}";
@@ -83,6 +83,9 @@ var OidUtil = {
83
83
  pattern = pattern.replace(keyFull, key);
84
84
  }
85
85
  };
86
+ if(conf.getProperty('oname_port_postfix_enabled', false) && port){
87
+ pattern = pattern + '-' + port;
88
+ }
86
89
  return pattern;
87
90
  },
88
91
  toString: function(){
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "whatap",
3
3
  "homepage": "http://www.whatap.io",
4
- "version": "0.5.0",
5
- "releaseDate": "20240812",
4
+ "version": "0.5.2",
5
+ "releaseDate": "20241017",
6
6
  "description": "Monitoring and Profiling Service",
7
7
  "main": "index.js",
8
8
  "scripts": {},