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.
- package/lib/conf/config-default.js +2 -0
- package/lib/net/security-master.js +1 -1
- package/lib/observers/global-observer.js +98 -38
- package/lib/observers/grpc-observer.js +0 -3
- package/lib/observers/http-observer.js +13 -8
- package/lib/observers/maria-observer.js +163 -271
- package/lib/observers/mssql-observer.js +5 -10
- package/lib/observers/mysql-observer.js +6 -12
- package/lib/observers/pgsql-observer.js +192 -212
- package/lib/observers/process-observer.js +0 -2
- package/lib/observers/redis-observer.js +10 -5
- package/lib/observers/socket.io-observer.js +76 -67
- package/lib/util/oidutil.js +4 -1
- package/package.json +2 -2
|
@@ -4,27 +4,24 @@
|
|
|
4
4
|
* can be found in the LICENSE file.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
var
|
|
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("
|
|
14
|
-
const
|
|
15
|
-
const
|
|
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
|
|
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',
|
|
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
|
-
|
|
61
|
-
|
|
62
|
-
if(
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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.
|
|
175
|
+
const address = socket.conn.remoteAddress;
|
|
167
176
|
if(address && address.includes(':')){
|
|
168
177
|
remote_addr = address.substring(address.lastIndexOf(':')+1);
|
|
169
178
|
}
|
package/lib/util/oidutil.js
CHANGED
|
@@ -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