whatap 0.4.79 → 0.4.80
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/.vscode/keep-context.json +3 -3
- package/README.md +51 -51
- package/bindings/darwin/x64/whatap.node +0 -0
- package/bindings/linux/ia32/whatap.node +0 -0
- package/bindings/linux/x64/whatap.node +0 -0
- package/help.txt +10 -10
- package/index.js +8 -8
- package/lib/conf/conf-sys-mon.js +100 -100
- package/lib/conf/config-default.js +238 -238
- package/lib/conf/configure.js +423 -423
- package/lib/conf/license.js +41 -41
- package/lib/control/cmd-config.js +23 -23
- package/lib/control/control-handler.js +344 -344
- package/lib/control/packagectr-helper.js +149 -149
- package/lib/core/agent.js +329 -328
- package/lib/core/interceptor.js +142 -142
- package/lib/core/request-agent.js +26 -26
- package/lib/counter/counter-manager.js +127 -127
- package/lib/counter/meter/meter-activex.js +66 -66
- package/lib/counter/meter/meter-httpc.js +57 -57
- package/lib/counter/meter/meter-resource.js +9 -9
- package/lib/counter/meter/meter-service.js +167 -167
- package/lib/counter/meter/meter-socket.io.js +50 -50
- package/lib/counter/meter/meter-sql.js +70 -70
- package/lib/counter/meter/meter-users.js +57 -57
- package/lib/counter/meter.js +183 -183
- package/lib/counter/task/activetransaction.js +93 -93
- package/lib/counter/task/agentinfo.js +105 -105
- package/lib/counter/task/counter-task.js +9 -9
- package/lib/counter/task/gcstat.js +34 -34
- package/lib/counter/task/heapmem.js +24 -24
- package/lib/counter/task/httpc.js +75 -75
- package/lib/counter/task/proc-cpu.js +28 -28
- package/lib/counter/task/realtimeuser.js +30 -30
- package/lib/counter/task/res/systemECSTask.js +54 -54
- package/lib/counter/task/res/systemKubeTask.js +52 -52
- package/lib/counter/task/res/util/awsEcsClientThread.js +166 -166
- package/lib/counter/task/res/util/linuxProcStatUtil.js +13 -13
- package/lib/counter/task/res-sys-cpu.js +61 -61
- package/lib/counter/task/service.js +201 -201
- package/lib/counter/task/socketio.js +29 -29
- package/lib/counter/task/sql.js +104 -104
- package/lib/counter/task/systemperf.js +42 -42
- package/lib/data/datapack-sender.js +256 -256
- package/lib/data/dataprofile-agent.js +136 -136
- package/lib/data/datatext-agent.js +135 -135
- package/lib/data/event-level.js +15 -15
- package/lib/data/test.js +48 -48
- package/lib/env/constants.js +20 -20
- package/lib/kube/kube-client.js +143 -143
- package/lib/lang/text-types.js +58 -58
- package/lib/logger.js +319 -319
- package/lib/net/netflag.js +54 -54
- package/lib/net/paramdef.js +40 -40
- package/lib/net/receiver.js +65 -65
- package/lib/net/security-master.js +182 -173
- package/lib/net/sender.js +140 -140
- package/lib/net/tcp-return.js +17 -17
- package/lib/net/tcp-session.js +285 -285
- package/lib/net/tcpreq-client-proxy.js +69 -69
- package/lib/net/tcprequest-mgr.js +57 -57
- package/lib/observers/cluster-observer.js +21 -21
- package/lib/observers/express-observer.js +214 -214
- package/lib/observers/file-observer.js +184 -184
- package/lib/observers/global-observer.js +30 -30
- package/lib/observers/http-observer.js +704 -704
- package/lib/observers/maria-observer.js +382 -382
- package/lib/observers/memcached-observer.js +55 -55
- package/lib/observers/mongo-observer.js +262 -265
- package/lib/observers/mongodb-observer.js +197 -197
- package/lib/observers/mongoose-observer.js +83 -83
- package/lib/observers/mssql-observer.js +205 -205
- package/lib/observers/mysql-observer.js +436 -394
- package/lib/observers/net-observer.js +72 -72
- package/lib/observers/pgsql-observer.js +295 -295
- package/lib/observers/process-observer.js +25 -25
- package/lib/observers/promise-observer.js +31 -31
- package/lib/observers/redis-observer.js +156 -109
- package/lib/observers/schedule-observer.js +66 -66
- package/lib/observers/socket.io-observer.js +54 -54
- package/lib/observers/stream-observer.js +19 -19
- package/lib/observers/thrift-observer.js +196 -196
- package/lib/pack/activestack-pack.js +54 -54
- package/lib/pack/counter-pack.js +649 -649
- package/lib/pack/errorsnap-pack.js +68 -68
- package/lib/pack/event-pack.js +53 -53
- package/lib/pack/hitmap-pack.js +62 -62
- package/lib/pack/hitmap-pack1.js +146 -146
- package/lib/pack/netstat.js +14 -14
- package/lib/pack/pack.js +49 -49
- package/lib/pack/packenum.js +60 -60
- package/lib/pack/param-pack.js +213 -213
- package/lib/pack/profile-pack.js +48 -48
- package/lib/pack/realtimeuser-pack.js +40 -40
- package/lib/pack/stat-general-pack.js +95 -95
- package/lib/pack/staterror-pack.js +119 -119
- package/lib/pack/stathttpc-pack.js +66 -66
- package/lib/pack/stathttpc-rec.js +78 -78
- package/lib/pack/statremote-pack.js +45 -45
- package/lib/pack/statservice-pack.js +62 -62
- package/lib/pack/statservice-pack1.js +87 -87
- package/lib/pack/statservice-rec.js +292 -292
- package/lib/pack/statservice-rec_dep.js +151 -151
- package/lib/pack/statsql-pack.js +69 -69
- package/lib/pack/statsql-rec.js +100 -100
- package/lib/pack/statuseragent-pack.js +43 -43
- package/lib/pack/tagcount-pack.js +398 -398
- package/lib/pack/tagctr.js +14 -14
- package/lib/pack/text-pack.js +49 -49
- package/lib/pack/time-count.js +25 -25
- package/lib/pack/websocket.js +14 -14
- package/lib/plugin/plugin-loadermanager.js +56 -56
- package/lib/plugin/plugin.js +75 -75
- package/lib/requestlog.js +326 -326
- package/lib/service/tx-record.js +288 -288
- package/lib/stat/stat-error.js +116 -116
- package/lib/stat/stat-httpc.js +97 -97
- package/lib/stat/stat-remoteip.js +46 -46
- package/lib/stat/stat-sql.js +112 -112
- package/lib/stat/stat-tranx.js +57 -57
- package/lib/stat/stat-tx-caller.js +159 -159
- package/lib/stat/stat-tx-domain.js +110 -110
- package/lib/stat/stat-tx-referer.js +111 -111
- package/lib/stat/stat-useragent.js +48 -48
- package/lib/stat/timingsender.js +72 -72
- package/lib/step/activestack-step.js +37 -37
- package/lib/step/dbc-step.js +35 -35
- package/lib/step/http-stepx.js +66 -66
- package/lib/step/message-step.js +39 -39
- package/lib/step/method-stepx.js +46 -46
- package/lib/step/resultset-step.js +39 -39
- package/lib/step/securemsg-step.js +43 -43
- package/lib/step/socket-step.js +46 -46
- package/lib/step/sql-stepx.js +67 -67
- package/lib/step/sqlxtype.js +15 -15
- package/lib/step/step.js +65 -65
- package/lib/step/stepenum.js +53 -53
- package/lib/trace/local-context.js +13 -13
- package/lib/trace/parsed-sql.js +13 -13
- package/lib/trace/profile-collector.js +70 -70
- package/lib/trace/serviceurl-pattern-detector.js +117 -117
- package/lib/trace/trace-context-manager.js +195 -195
- package/lib/trace/trace-context.js +134 -134
- package/lib/util/anylist.js +102 -102
- package/lib/util/array-util.js +100 -100
- package/lib/util/bitutil.js +27 -27
- package/lib/util/cardinality/hyperloglog.js +105 -105
- package/lib/util/cardinality/murmurhash.js +31 -31
- package/lib/util/cardinality/registerset.js +74 -74
- package/lib/util/config-util.js +17 -17
- package/lib/util/cypher.js +89 -89
- package/lib/util/datetimehelper.js +237 -229
- package/lib/util/dateutil.js +110 -106
- package/lib/util/errordata.js +20 -20
- package/lib/util/escape-literal-sql.js +342 -342
- package/lib/util/hashutil2.js +126 -126
- package/lib/util/hexa32.js +57 -57
- package/lib/util/index.js +78 -78
- package/lib/util/intint-map.js +47 -47
- package/lib/util/intkey-linkedmap.js +26 -26
- package/lib/util/intkey-map.js +25 -25
- package/lib/util/intset.js +82 -82
- package/lib/util/iputil.js +119 -119
- package/lib/util/iputil_x.js +526 -526
- package/lib/util/keygen.js +17 -17
- package/lib/util/kube-util.js +72 -72
- package/lib/util/longint-linkedmap.js +35 -35
- package/lib/util/longkey-linkedmap.js +25 -25
- package/lib/util/longlong-linkedmap.js +37 -37
- package/lib/util/nodeutil.js +67 -67
- package/lib/util/oidutil.js +96 -93
- package/lib/util/paramsecurity.js +78 -78
- package/lib/util/pathtree.js +172 -172
- package/lib/util/pre-process.js +13 -13
- package/lib/util/process-seq.js +165 -165
- package/lib/util/property-util.js +35 -35
- package/lib/util/request-queue.js +42 -42
- package/lib/util/requestdouble-queue.js +72 -72
- package/lib/util/resourceprofile.js +156 -156
- package/lib/util/seedrandom.js +242 -242
- package/lib/util/stop-watch.js +29 -29
- package/lib/util/string-util.js +9 -9
- package/lib/util/stringkey-linkedmap.js +28 -28
- package/lib/util/stringnum-linkedmap.js +31 -31
- package/lib/util/stringset.js +65 -65
- package/lib/util/system-util.js +9 -9
- package/lib/util/userid-util.js +57 -57
- package/lib/util/utils.js +67 -67
- package/lib/value/blob-value.js +61 -61
- package/lib/value/boolean-value.js +51 -51
- package/lib/value/decimal-value.js +71 -71
- package/lib/value/double-summary.js +105 -105
- package/lib/value/double-value.js +50 -50
- package/lib/value/float-array.js +59 -59
- package/lib/value/float-value.js +64 -64
- package/lib/value/int-array.js +59 -59
- package/lib/value/int-map-value.js +151 -151
- package/lib/value/int-value.js +64 -64
- package/lib/value/ip4-value.js +83 -83
- package/lib/value/list-value.js +136 -136
- package/lib/value/long-array.js +59 -59
- package/lib/value/long-summary.js +105 -105
- package/lib/value/map-value.js +175 -175
- package/lib/value/metric-value.js +157 -157
- package/lib/value/null-value.js +42 -42
- package/lib/value/number-value.js +34 -34
- package/lib/value/summary-value.js +29 -29
- package/lib/value/text-array.js +117 -117
- package/lib/value/text-value.js +59 -59
- package/lib/value/texthash-value.js +49 -49
- package/lib/value/value.js +14 -14
- package/lib/value/valueenum.js +99 -99
- package/logs/whatap-20230906.log +54 -0
- package/package.json +28 -28
- package/whatap.conf +1 -1
- package/logs/whatap-20230616.log +0 -13
package/lib/core/interceptor.js
CHANGED
|
@@ -1,143 +1,143 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
-
* Use of this source code is governed by a license that
|
|
4
|
-
* can be found in the LICENSE file.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
var LocalContext = require('../trace/local-context'),
|
|
8
|
-
TraceContextManager = require('../trace/trace-context-manager'),
|
|
9
|
-
Logger = require('../logger');
|
|
10
|
-
|
|
11
|
-
var Interceptor = function(agent){
|
|
12
|
-
this.agent = agent;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
Interceptor.prototype.init = function() {
|
|
16
|
-
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
Interceptor.prototype.before = function(obj, funcs, advice, isCallback) {
|
|
20
|
-
if(obj == null) return false;
|
|
21
|
-
|
|
22
|
-
if(!Array.isArray(funcs)) funcs = [funcs];
|
|
23
|
-
|
|
24
|
-
funcs.forEach(function(func) {
|
|
25
|
-
var orig = obj[func];
|
|
26
|
-
if(!orig) return;
|
|
27
|
-
|
|
28
|
-
obj[func] = function proxy() {
|
|
29
|
-
if(isCallback) {
|
|
30
|
-
var selfFunc = this;
|
|
31
|
-
advice(this, arguments, function() {
|
|
32
|
-
return orig.apply(selfFunc, arguments);
|
|
33
|
-
});
|
|
34
|
-
} else {
|
|
35
|
-
try {
|
|
36
|
-
advice(this, arguments);
|
|
37
|
-
} catch (e) {
|
|
38
|
-
Logger.printError("WHATAP-500", "Interceptor error", e);
|
|
39
|
-
}
|
|
40
|
-
return orig.apply(this, arguments);
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
Interceptor.prototype.after = function(obj, funcs, advice) {
|
|
47
|
-
if(!obj) return false;
|
|
48
|
-
|
|
49
|
-
if(!Array.isArray(funcs)) funcs = [funcs];
|
|
50
|
-
|
|
51
|
-
funcs.forEach(function(func) {
|
|
52
|
-
var orig = obj[func];
|
|
53
|
-
if(!orig) return;
|
|
54
|
-
|
|
55
|
-
obj[func] = function() {
|
|
56
|
-
|
|
57
|
-
var ret = orig.apply(this, arguments);
|
|
58
|
-
|
|
59
|
-
var funcRet;
|
|
60
|
-
try {
|
|
61
|
-
funcRet = advice(this, arguments, ret);
|
|
62
|
-
} catch(e) {
|
|
63
|
-
Logger.printError('WHATAP-177', 'Interceptor after error', e);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return funcRet || ret;
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
obj[func].__whatapAOPInfo__ = {
|
|
70
|
-
obj: obj,
|
|
71
|
-
func: func,
|
|
72
|
-
orig: orig
|
|
73
|
-
};
|
|
74
|
-
});
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
Interceptor.prototype.both = function(obj, funcs, beforeFunc, afterFunc) {
|
|
78
|
-
if(!obj) return false;
|
|
79
|
-
|
|
80
|
-
if(!Array.isArray(funcs)) funcs = [funcs];
|
|
81
|
-
|
|
82
|
-
funcs.forEach(function(func) {
|
|
83
|
-
var orig = obj[func];
|
|
84
|
-
if(!orig) return;
|
|
85
|
-
|
|
86
|
-
obj[func] = function() {
|
|
87
|
-
var ctx = TraceContextManager.getCurrentContext();
|
|
88
|
-
var local_ctx = new LocalContext(ctx, null, null);
|
|
89
|
-
|
|
90
|
-
try {
|
|
91
|
-
beforeFunc(this, arguments, local_ctx);
|
|
92
|
-
} catch(e) {
|
|
93
|
-
Logger.printError('WHATAP-178', 'Interceptor both before error', e);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
var ret = orig.apply(this, arguments);
|
|
97
|
-
var funcRet;
|
|
98
|
-
try {
|
|
99
|
-
if(afterFunc){
|
|
100
|
-
funcRet = afterFunc(this, arguments, ret, local_ctx);
|
|
101
|
-
}
|
|
102
|
-
} catch(e) {
|
|
103
|
-
Logger.printError("WHATAP-501", "Interceptor both after error", e);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
return funcRet || ret;
|
|
107
|
-
};
|
|
108
|
-
});
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
Interceptor.prototype.functionHook = function(args, pos, beforeFunc, afterFunc) {
|
|
112
|
-
if(!args) return false;
|
|
113
|
-
|
|
114
|
-
if(args.length <= pos) return false;
|
|
115
|
-
if(pos === -1) pos = args.length - 1;
|
|
116
|
-
|
|
117
|
-
var orig = (typeof args[pos] === 'function') ? args[pos] : undefined;
|
|
118
|
-
if(!orig) return false;
|
|
119
|
-
|
|
120
|
-
args[pos] = function wrapper() {
|
|
121
|
-
if(beforeFunc) {
|
|
122
|
-
try {
|
|
123
|
-
beforeFunc(this, arguments);
|
|
124
|
-
} catch(e) {
|
|
125
|
-
Logger.printError("WHATAP-179", 'Interceptor functionhook before error', e);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
var result = orig.apply(this, arguments);
|
|
130
|
-
|
|
131
|
-
if(afterFunc) {
|
|
132
|
-
try {
|
|
133
|
-
afterFunc(this, arguments, result);
|
|
134
|
-
} catch(e) {
|
|
135
|
-
Logger.printError("WHATAP-180", 'Interceptor functionhook after error', e);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
return result;
|
|
139
|
-
};
|
|
140
|
-
return true;
|
|
141
|
-
};
|
|
142
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
+
* Use of this source code is governed by a license that
|
|
4
|
+
* can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
var LocalContext = require('../trace/local-context'),
|
|
8
|
+
TraceContextManager = require('../trace/trace-context-manager'),
|
|
9
|
+
Logger = require('../logger');
|
|
10
|
+
|
|
11
|
+
var Interceptor = function(agent){
|
|
12
|
+
this.agent = agent;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
Interceptor.prototype.init = function() {
|
|
16
|
+
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
Interceptor.prototype.before = function(obj, funcs, advice, isCallback) {
|
|
20
|
+
if(obj == null) return false;
|
|
21
|
+
|
|
22
|
+
if(!Array.isArray(funcs)) funcs = [funcs];
|
|
23
|
+
|
|
24
|
+
funcs.forEach(function(func) {
|
|
25
|
+
var orig = obj[func];
|
|
26
|
+
if(!orig) return;
|
|
27
|
+
|
|
28
|
+
obj[func] = function proxy() {
|
|
29
|
+
if(isCallback) {
|
|
30
|
+
var selfFunc = this;
|
|
31
|
+
advice(this, arguments, function() {
|
|
32
|
+
return orig.apply(selfFunc, arguments);
|
|
33
|
+
});
|
|
34
|
+
} else {
|
|
35
|
+
try {
|
|
36
|
+
advice(this, arguments);
|
|
37
|
+
} catch (e) {
|
|
38
|
+
Logger.printError("WHATAP-500", "Interceptor error", e);
|
|
39
|
+
}
|
|
40
|
+
return orig.apply(this, arguments);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
Interceptor.prototype.after = function(obj, funcs, advice) {
|
|
47
|
+
if(!obj) return false;
|
|
48
|
+
|
|
49
|
+
if(!Array.isArray(funcs)) funcs = [funcs];
|
|
50
|
+
|
|
51
|
+
funcs.forEach(function(func) {
|
|
52
|
+
var orig = obj[func];
|
|
53
|
+
if(!orig) return;
|
|
54
|
+
|
|
55
|
+
obj[func] = function() {
|
|
56
|
+
|
|
57
|
+
var ret = orig.apply(this, arguments);
|
|
58
|
+
|
|
59
|
+
var funcRet;
|
|
60
|
+
try {
|
|
61
|
+
funcRet = advice(this, arguments, ret);
|
|
62
|
+
} catch(e) {
|
|
63
|
+
Logger.printError('WHATAP-177', 'Interceptor after error', e);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return funcRet || ret;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
obj[func].__whatapAOPInfo__ = {
|
|
70
|
+
obj: obj,
|
|
71
|
+
func: func,
|
|
72
|
+
orig: orig
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
Interceptor.prototype.both = function(obj, funcs, beforeFunc, afterFunc) {
|
|
78
|
+
if(!obj) return false;
|
|
79
|
+
|
|
80
|
+
if(!Array.isArray(funcs)) funcs = [funcs];
|
|
81
|
+
|
|
82
|
+
funcs.forEach(function(func) {
|
|
83
|
+
var orig = obj[func];
|
|
84
|
+
if(!orig) return;
|
|
85
|
+
|
|
86
|
+
obj[func] = function() {
|
|
87
|
+
var ctx = TraceContextManager.getCurrentContext();
|
|
88
|
+
var local_ctx = new LocalContext(ctx, null, null);
|
|
89
|
+
|
|
90
|
+
try {
|
|
91
|
+
beforeFunc(this, arguments, local_ctx);
|
|
92
|
+
} catch(e) {
|
|
93
|
+
Logger.printError('WHATAP-178', 'Interceptor both before error', e);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
var ret = orig.apply(this, arguments);
|
|
97
|
+
var funcRet;
|
|
98
|
+
try {
|
|
99
|
+
if(afterFunc){
|
|
100
|
+
funcRet = afterFunc(this, arguments, ret, local_ctx);
|
|
101
|
+
}
|
|
102
|
+
} catch(e) {
|
|
103
|
+
Logger.printError("WHATAP-501", "Interceptor both after error", e);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return funcRet || ret;
|
|
107
|
+
};
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
Interceptor.prototype.functionHook = function(args, pos, beforeFunc, afterFunc) {
|
|
112
|
+
if(!args) return false;
|
|
113
|
+
|
|
114
|
+
if(args.length <= pos) return false;
|
|
115
|
+
if(pos === -1) pos = args.length - 1;
|
|
116
|
+
|
|
117
|
+
var orig = (typeof args[pos] === 'function') ? args[pos] : undefined;
|
|
118
|
+
if(!orig) return false;
|
|
119
|
+
|
|
120
|
+
args[pos] = function wrapper() {
|
|
121
|
+
if(beforeFunc) {
|
|
122
|
+
try {
|
|
123
|
+
beforeFunc(this, arguments);
|
|
124
|
+
} catch(e) {
|
|
125
|
+
Logger.printError("WHATAP-179", 'Interceptor functionhook before error', e);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
var result = orig.apply(this, arguments);
|
|
130
|
+
|
|
131
|
+
if(afterFunc) {
|
|
132
|
+
try {
|
|
133
|
+
afterFunc(this, arguments, result);
|
|
134
|
+
} catch(e) {
|
|
135
|
+
Logger.printError("WHATAP-180", 'Interceptor functionhook after error', e);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return result;
|
|
139
|
+
};
|
|
140
|
+
return true;
|
|
141
|
+
};
|
|
142
|
+
|
|
143
143
|
exports.Interceptor = Interceptor;
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
-
* Use of this source code is governed by a license that
|
|
4
|
-
* can be found in the LICENSE file.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const http = require('http');
|
|
9
|
-
var keepAliveAgent = new http.Agent({ keepAlive: true });
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var baseConfig = {
|
|
13
|
-
keepAlive: true,
|
|
14
|
-
keepAliveTimeoutMsecs: 500,
|
|
15
|
-
maxSockets: 1 // requests are serialized
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
baseConfig.agent = keepAliveAgent;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
http.request(baseConfig, onResponseCallback);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
var RequestAgent = function(){
|
|
26
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
+
* Use of this source code is governed by a license that
|
|
4
|
+
* can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
const http = require('http');
|
|
9
|
+
var keepAliveAgent = new http.Agent({ keepAlive: true });
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var baseConfig = {
|
|
13
|
+
keepAlive: true,
|
|
14
|
+
keepAliveTimeoutMsecs: 500,
|
|
15
|
+
maxSockets: 1 // requests are serialized
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
baseConfig.agent = keepAliveAgent;
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
http.request(baseConfig, onResponseCallback);
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
var RequestAgent = function(){
|
|
26
|
+
|
|
27
27
|
}
|
|
@@ -1,128 +1,128 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
-
* Use of this source code is governed by a license that
|
|
4
|
-
* can be found in the LICENSE file.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
var CounterPack = require('../pack/counter-pack'),
|
|
8
|
-
Service = require('./task/service'),
|
|
9
|
-
AgentInfo = require('./task/agentinfo'),
|
|
10
|
-
ActiveTransaction = require('./task/activetransaction'),
|
|
11
|
-
ProcCpu = require('./task/proc-cpu'),
|
|
12
|
-
ResSysCpu = require('./task/res-sys-cpu'),
|
|
13
|
-
HeapMem = require('./task/heapmem'),
|
|
14
|
-
SystemPerf = require('./task/systemperf'),
|
|
15
|
-
RealtimeUser = require('./task/realtimeuser'),
|
|
16
|
-
Socketio = require('./task/socketio'),
|
|
17
|
-
GCStat = require('./task/gcstat'),
|
|
18
|
-
Sql = require('./task/sql'),
|
|
19
|
-
HttpC = require('./task/httpc'),
|
|
20
|
-
StatError = require('../stat/stat-error'),
|
|
21
|
-
TagCounterPack = require('../pack/tagcount-pack'),
|
|
22
|
-
TraceContextManager = require('../trace/trace-context-manager'),
|
|
23
|
-
secuMaster = require('../net/security-master'),
|
|
24
|
-
DataPackSender = require('../data/datapack-sender'),
|
|
25
|
-
conf = require('../conf/configure'),
|
|
26
|
-
DateUtil = require('./../util/dateutil'),
|
|
27
|
-
KubeClient = require('../kube/kube-client'),
|
|
28
|
-
KubeUtil = require('../util/kube-util'),
|
|
29
|
-
Logger = require('../logger'),
|
|
30
|
-
Long = require('long');
|
|
31
|
-
|
|
32
|
-
function CounterManager(agent) {
|
|
33
|
-
this.agent = agent;
|
|
34
|
-
this.time = Date.now();
|
|
35
|
-
|
|
36
|
-
this.intervalIndex = undefined;
|
|
37
|
-
};
|
|
38
|
-
CounterManager.plugin={}
|
|
39
|
-
CounterManager.prototype.run = function () {
|
|
40
|
-
var self = this;
|
|
41
|
-
|
|
42
|
-
process.nextTick(function () {
|
|
43
|
-
var tasks = [];
|
|
44
|
-
tasks.push(new Service());
|
|
45
|
-
tasks.push(new AgentInfo());
|
|
46
|
-
tasks.push(new ActiveTransaction());
|
|
47
|
-
tasks.push(new RealtimeUser());
|
|
48
|
-
tasks.push(new HeapMem());
|
|
49
|
-
tasks.push(new ProcCpu());
|
|
50
|
-
tasks.push(new ResSysCpu());
|
|
51
|
-
tasks.push(new SystemPerf());
|
|
52
|
-
tasks.push(new Socketio());
|
|
53
|
-
tasks.push(new GCStat());
|
|
54
|
-
tasks.push(new Sql());
|
|
55
|
-
tasks.push(new HttpC());
|
|
56
|
-
self.intervalIndex = setInterval(function(){
|
|
57
|
-
self.process(tasks);
|
|
58
|
-
},5000);
|
|
59
|
-
self.process(tasks);
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
if(conf.whatap_micro_enabled){
|
|
63
|
-
KubeUtil.loadContainerId();
|
|
64
|
-
if (conf.enabled_master_agent_call) KubeClient.run();
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
CounterManager.prototype.stop = function(){
|
|
68
|
-
if(this.intervalIndex){
|
|
69
|
-
clearInterval(this.intervalIndex);
|
|
70
|
-
this.intervalIndex = undefined;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
CounterManager.prototype.process = function (tasks) {
|
|
75
|
-
var interval = conf.counter_interval || 5000,
|
|
76
|
-
len = tasks.length, self = this, task;
|
|
77
|
-
|
|
78
|
-
var now = parseInt(Date.now() / 1000),
|
|
79
|
-
interval_sec = interval / 1000;
|
|
80
|
-
|
|
81
|
-
if (now != parseInt(now / interval_sec) * interval_sec) {
|
|
82
|
-
setTimeout(function () {
|
|
83
|
-
self.process(tasks);
|
|
84
|
-
}, 1000, 'whatap');
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
var enumer = TraceContextManager.getContextEnumeration();
|
|
89
|
-
while (enumer.hasMoreElements()) {
|
|
90
|
-
var ctx = enumer.nextElement();
|
|
91
|
-
if (ctx.getElapsedTime() > conf.profile_max_time) {
|
|
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);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
if (conf.counter_enabled) {
|
|
102
|
-
var pack = new CounterPack();
|
|
103
|
-
pack.pcode = secuMaster.PCODE;
|
|
104
|
-
pack.oid = secuMaster.OID;
|
|
105
|
-
pack.time = Math.floor(DateUtil.currentTime() / 5000) * 5000;
|
|
106
|
-
pack.duration = Math.floor(interval / 1000);
|
|
107
|
-
for (var i = 0; i < len; i++) {
|
|
108
|
-
task = tasks[i];
|
|
109
|
-
try{
|
|
110
|
-
task.process(pack);
|
|
111
|
-
} catch (e) {
|
|
112
|
-
Logger.printError('WHATAP-070', 'Counter Manager process ', e, true);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
pack.starttime = this.agent.starttime;
|
|
116
|
-
|
|
117
|
-
try {
|
|
118
|
-
if (CounterManager.plugin["extra"]) {
|
|
119
|
-
CounterManager.plugin["extra"](pack);
|
|
120
|
-
}
|
|
121
|
-
} catch (e) {
|
|
122
|
-
Logger.printError('WHATAP-071', 'Counter Manager Plugin ', e, true);
|
|
123
|
-
}
|
|
124
|
-
DataPackSender.sendCounterPack(pack);
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
+
* Use of this source code is governed by a license that
|
|
4
|
+
* can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
var CounterPack = require('../pack/counter-pack'),
|
|
8
|
+
Service = require('./task/service'),
|
|
9
|
+
AgentInfo = require('./task/agentinfo'),
|
|
10
|
+
ActiveTransaction = require('./task/activetransaction'),
|
|
11
|
+
ProcCpu = require('./task/proc-cpu'),
|
|
12
|
+
ResSysCpu = require('./task/res-sys-cpu'),
|
|
13
|
+
HeapMem = require('./task/heapmem'),
|
|
14
|
+
SystemPerf = require('./task/systemperf'),
|
|
15
|
+
RealtimeUser = require('./task/realtimeuser'),
|
|
16
|
+
Socketio = require('./task/socketio'),
|
|
17
|
+
GCStat = require('./task/gcstat'),
|
|
18
|
+
Sql = require('./task/sql'),
|
|
19
|
+
HttpC = require('./task/httpc'),
|
|
20
|
+
StatError = require('../stat/stat-error'),
|
|
21
|
+
TagCounterPack = require('../pack/tagcount-pack'),
|
|
22
|
+
TraceContextManager = require('../trace/trace-context-manager'),
|
|
23
|
+
secuMaster = require('../net/security-master'),
|
|
24
|
+
DataPackSender = require('../data/datapack-sender'),
|
|
25
|
+
conf = require('../conf/configure'),
|
|
26
|
+
DateUtil = require('./../util/dateutil'),
|
|
27
|
+
KubeClient = require('../kube/kube-client'),
|
|
28
|
+
KubeUtil = require('../util/kube-util'),
|
|
29
|
+
Logger = require('../logger'),
|
|
30
|
+
Long = require('long');
|
|
31
|
+
|
|
32
|
+
function CounterManager(agent) {
|
|
33
|
+
this.agent = agent;
|
|
34
|
+
this.time = Date.now();
|
|
35
|
+
|
|
36
|
+
this.intervalIndex = undefined;
|
|
37
|
+
};
|
|
38
|
+
CounterManager.plugin={}
|
|
39
|
+
CounterManager.prototype.run = function () {
|
|
40
|
+
var self = this;
|
|
41
|
+
|
|
42
|
+
process.nextTick(function () {
|
|
43
|
+
var tasks = [];
|
|
44
|
+
tasks.push(new Service());
|
|
45
|
+
tasks.push(new AgentInfo());
|
|
46
|
+
tasks.push(new ActiveTransaction());
|
|
47
|
+
tasks.push(new RealtimeUser());
|
|
48
|
+
tasks.push(new HeapMem());
|
|
49
|
+
tasks.push(new ProcCpu());
|
|
50
|
+
tasks.push(new ResSysCpu());
|
|
51
|
+
tasks.push(new SystemPerf());
|
|
52
|
+
tasks.push(new Socketio());
|
|
53
|
+
tasks.push(new GCStat());
|
|
54
|
+
tasks.push(new Sql());
|
|
55
|
+
tasks.push(new HttpC());
|
|
56
|
+
self.intervalIndex = setInterval(function(){
|
|
57
|
+
self.process(tasks);
|
|
58
|
+
},5000);
|
|
59
|
+
self.process(tasks);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
if(conf.whatap_micro_enabled){
|
|
63
|
+
KubeUtil.loadContainerId();
|
|
64
|
+
if (conf.enabled_master_agent_call) KubeClient.run();
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
CounterManager.prototype.stop = function(){
|
|
68
|
+
if(this.intervalIndex){
|
|
69
|
+
clearInterval(this.intervalIndex);
|
|
70
|
+
this.intervalIndex = undefined;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
CounterManager.prototype.process = function (tasks) {
|
|
75
|
+
var interval = conf.counter_interval || 5000,
|
|
76
|
+
len = tasks.length, self = this, task;
|
|
77
|
+
|
|
78
|
+
var now = parseInt(Date.now() / 1000),
|
|
79
|
+
interval_sec = interval / 1000;
|
|
80
|
+
|
|
81
|
+
if (now != parseInt(now / interval_sec) * interval_sec) {
|
|
82
|
+
setTimeout(function () {
|
|
83
|
+
self.process(tasks);
|
|
84
|
+
}, 1000, 'whatap');
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
var enumer = TraceContextManager.getContextEnumeration();
|
|
89
|
+
while (enumer.hasMoreElements()) {
|
|
90
|
+
var ctx = enumer.nextElement();
|
|
91
|
+
if (ctx.getElapsedTime() > conf.profile_max_time) {
|
|
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);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (conf.counter_enabled) {
|
|
102
|
+
var pack = new CounterPack();
|
|
103
|
+
pack.pcode = secuMaster.PCODE;
|
|
104
|
+
pack.oid = secuMaster.OID;
|
|
105
|
+
pack.time = Math.floor(DateUtil.currentTime() / 5000) * 5000;
|
|
106
|
+
pack.duration = Math.floor(interval / 1000);
|
|
107
|
+
for (var i = 0; i < len; i++) {
|
|
108
|
+
task = tasks[i];
|
|
109
|
+
try{
|
|
110
|
+
task.process(pack);
|
|
111
|
+
} catch (e) {
|
|
112
|
+
Logger.printError('WHATAP-070', 'Counter Manager process ', e, true);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
pack.starttime = this.agent.starttime;
|
|
116
|
+
|
|
117
|
+
try {
|
|
118
|
+
if (CounterManager.plugin["extra"]) {
|
|
119
|
+
CounterManager.plugin["extra"](pack);
|
|
120
|
+
}
|
|
121
|
+
} catch (e) {
|
|
122
|
+
Logger.printError('WHATAP-071', 'Counter Manager Plugin ', e, true);
|
|
123
|
+
}
|
|
124
|
+
DataPackSender.sendCounterPack(pack);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
|
|
128
128
|
module.exports = CounterManager;
|