whatap 0.4.78 → 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 -284
- 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/stat/stat-error.js
CHANGED
|
@@ -1,116 +1,116 @@
|
|
|
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
|
-
var ErrorData = require('../util/errordata'),
|
|
9
|
-
BitUtil = require('../util/bitutil'),
|
|
10
|
-
ErrorSnapPack1 = require('../pack/errorsnap-pack'),
|
|
11
|
-
StatErrorPack = require('../pack/staterror-pack').StatErrorPack,
|
|
12
|
-
ErrorRec = require('../pack/staterror-pack').ErrorRec,
|
|
13
|
-
hashUtil = require('../util/hashutil'),
|
|
14
|
-
LinkedMap = require('../util/linkedmap'),
|
|
15
|
-
DataTextAgent = require('../data/datatext-agent'),
|
|
16
|
-
Logger = require('../logger'),
|
|
17
|
-
Long = require('long');
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
var DataPackSender = require('../data/datapack-sender');
|
|
21
|
-
|
|
22
|
-
var ERROR_SNAP_SEQ = Long.fromNumber(Date.now());
|
|
23
|
-
var TABLE_MAX_SIZE = 1000;
|
|
24
|
-
|
|
25
|
-
function StatError() {
|
|
26
|
-
this.conf = require('../conf/configure');
|
|
27
|
-
this.table = new LinkedMap(TABLE_MAX_SIZE + 1, 1).setMax(TABLE_MAX_SIZE);
|
|
28
|
-
this.table.hash = function (k) {
|
|
29
|
-
if(k._hash_){
|
|
30
|
-
return k._hash_;
|
|
31
|
-
}
|
|
32
|
-
var result = 1;
|
|
33
|
-
result = 31 * result + k.class;
|
|
34
|
-
result = 31 * result + k.service;
|
|
35
|
-
|
|
36
|
-
k._hash_=result;
|
|
37
|
-
return result;
|
|
38
|
-
}
|
|
39
|
-
this.table.equals = function (k1,k2) {
|
|
40
|
-
return k1.class === k2.class && k1.service === k2.service;
|
|
41
|
-
}
|
|
42
|
-
this.table.create=function(key){
|
|
43
|
-
if(this.isFull()) {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
rec = new ErrorRec();
|
|
47
|
-
rec.classHash = key.class;
|
|
48
|
-
rec.service = key.service;
|
|
49
|
-
return rec;
|
|
50
|
-
}
|
|
51
|
-
this.error = {};
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function nextErrorSnapSeq(){
|
|
55
|
-
ERROR_SNAP_SEQ = ERROR_SNAP_SEQ.add(1);
|
|
56
|
-
return ERROR_SNAP_SEQ;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// StatError.prototype.addErrorForStep = function(thr, dbc, service, steps, stackTrace) {
|
|
60
|
-
// var error_data = new ErrorData(thr, 0, txUrlHash, profile, true); // notdol: error데이터 객체를 만드는 의미가 없음
|
|
61
|
-
// var error_snap_pack = new ErrorSnapPack1(); // notdol: errorSnappack을 만드는 의미가 없음
|
|
62
|
-
// error_snap_pack.setProfile(error_data.profile);
|
|
63
|
-
|
|
64
|
-
// var rec = this.table.get({class: dbc, service : service});
|
|
65
|
-
// if(rec){
|
|
66
|
-
// rec.count++;
|
|
67
|
-
// }
|
|
68
|
-
// };
|
|
69
|
-
StatError.prototype.addError = function(class1, msg, txUrlHash, appendTextType, appendTextHash) {
|
|
70
|
-
try {
|
|
71
|
-
if(typeof class1 ==='number'){
|
|
72
|
-
class1 = class1.toString();
|
|
73
|
-
}
|
|
74
|
-
var classHash = hashUtil.hashFromString(class1);
|
|
75
|
-
DataTextAgent.ERROR.add(classHash, class1);
|
|
76
|
-
|
|
77
|
-
var msgHash = hashUtil.hashFromString(msg);
|
|
78
|
-
DataTextAgent.ERROR.add(msgHash, msg);
|
|
79
|
-
|
|
80
|
-
var key = {class: classHash, service : txUrlHash};
|
|
81
|
-
var rec = this.table.intern(key);
|
|
82
|
-
if (rec) {
|
|
83
|
-
rec.msg = msgHash;
|
|
84
|
-
rec.count++;
|
|
85
|
-
if (appendTextType && rec.snapSeq == 0 && this.conf.error_snap_enabled===true) {
|
|
86
|
-
var p = new ErrorSnapPack1();
|
|
87
|
-
p.seq = nextErrorSnapSeq();
|
|
88
|
-
rec.snapSeq = p.seq;
|
|
89
|
-
rec.msg = msgHash;
|
|
90
|
-
|
|
91
|
-
p.append_type = appendTextType;
|
|
92
|
-
p.append_hash = appendTextHash;
|
|
93
|
-
DataPackSender.sendErrorSnapPack(p);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return BitUtil.composite(classHash,msgHash);
|
|
97
|
-
} catch(e) {
|
|
98
|
-
Logger.printError('WHATAP-996', 'StatError (addError)', e, false);
|
|
99
|
-
}
|
|
100
|
-
return Long.ZERO;
|
|
101
|
-
};
|
|
102
|
-
StatError.prototype.send = function(now) {
|
|
103
|
-
if (this.table.size() === 0)
|
|
104
|
-
return;
|
|
105
|
-
|
|
106
|
-
var statError = new StatErrorPack().setRecords(this.table.size(), this.table.values());
|
|
107
|
-
statError.time = now;
|
|
108
|
-
this.table.clear();
|
|
109
|
-
|
|
110
|
-
DataPackSender.sendStatErrorPack(statError);
|
|
111
|
-
};
|
|
112
|
-
StatError.prototype.clear = function () {
|
|
113
|
-
this.table.clear();
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
module.exports = new StatError();
|
|
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
|
+
var ErrorData = require('../util/errordata'),
|
|
9
|
+
BitUtil = require('../util/bitutil'),
|
|
10
|
+
ErrorSnapPack1 = require('../pack/errorsnap-pack'),
|
|
11
|
+
StatErrorPack = require('../pack/staterror-pack').StatErrorPack,
|
|
12
|
+
ErrorRec = require('../pack/staterror-pack').ErrorRec,
|
|
13
|
+
hashUtil = require('../util/hashutil'),
|
|
14
|
+
LinkedMap = require('../util/linkedmap'),
|
|
15
|
+
DataTextAgent = require('../data/datatext-agent'),
|
|
16
|
+
Logger = require('../logger'),
|
|
17
|
+
Long = require('long');
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
var DataPackSender = require('../data/datapack-sender');
|
|
21
|
+
|
|
22
|
+
var ERROR_SNAP_SEQ = Long.fromNumber(Date.now());
|
|
23
|
+
var TABLE_MAX_SIZE = 1000;
|
|
24
|
+
|
|
25
|
+
function StatError() {
|
|
26
|
+
this.conf = require('../conf/configure');
|
|
27
|
+
this.table = new LinkedMap(TABLE_MAX_SIZE + 1, 1).setMax(TABLE_MAX_SIZE);
|
|
28
|
+
this.table.hash = function (k) {
|
|
29
|
+
if(k._hash_){
|
|
30
|
+
return k._hash_;
|
|
31
|
+
}
|
|
32
|
+
var result = 1;
|
|
33
|
+
result = 31 * result + k.class;
|
|
34
|
+
result = 31 * result + k.service;
|
|
35
|
+
|
|
36
|
+
k._hash_=result;
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
this.table.equals = function (k1,k2) {
|
|
40
|
+
return k1.class === k2.class && k1.service === k2.service;
|
|
41
|
+
}
|
|
42
|
+
this.table.create=function(key){
|
|
43
|
+
if(this.isFull()) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
rec = new ErrorRec();
|
|
47
|
+
rec.classHash = key.class;
|
|
48
|
+
rec.service = key.service;
|
|
49
|
+
return rec;
|
|
50
|
+
}
|
|
51
|
+
this.error = {};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function nextErrorSnapSeq(){
|
|
55
|
+
ERROR_SNAP_SEQ = ERROR_SNAP_SEQ.add(1);
|
|
56
|
+
return ERROR_SNAP_SEQ;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// StatError.prototype.addErrorForStep = function(thr, dbc, service, steps, stackTrace) {
|
|
60
|
+
// var error_data = new ErrorData(thr, 0, txUrlHash, profile, true); // notdol: error데이터 객체를 만드는 의미가 없음
|
|
61
|
+
// var error_snap_pack = new ErrorSnapPack1(); // notdol: errorSnappack을 만드는 의미가 없음
|
|
62
|
+
// error_snap_pack.setProfile(error_data.profile);
|
|
63
|
+
|
|
64
|
+
// var rec = this.table.get({class: dbc, service : service});
|
|
65
|
+
// if(rec){
|
|
66
|
+
// rec.count++;
|
|
67
|
+
// }
|
|
68
|
+
// };
|
|
69
|
+
StatError.prototype.addError = function(class1, msg, txUrlHash, appendTextType, appendTextHash) {
|
|
70
|
+
try {
|
|
71
|
+
if(typeof class1 ==='number'){
|
|
72
|
+
class1 = class1.toString();
|
|
73
|
+
}
|
|
74
|
+
var classHash = hashUtil.hashFromString(class1);
|
|
75
|
+
DataTextAgent.ERROR.add(classHash, class1);
|
|
76
|
+
|
|
77
|
+
var msgHash = hashUtil.hashFromString(msg);
|
|
78
|
+
DataTextAgent.ERROR.add(msgHash, msg);
|
|
79
|
+
|
|
80
|
+
var key = {class: classHash, service : txUrlHash};
|
|
81
|
+
var rec = this.table.intern(key);
|
|
82
|
+
if (rec) {
|
|
83
|
+
rec.msg = msgHash;
|
|
84
|
+
rec.count++;
|
|
85
|
+
if (appendTextType && rec.snapSeq == 0 && this.conf.error_snap_enabled===true) {
|
|
86
|
+
var p = new ErrorSnapPack1();
|
|
87
|
+
p.seq = nextErrorSnapSeq();
|
|
88
|
+
rec.snapSeq = p.seq;
|
|
89
|
+
rec.msg = msgHash;
|
|
90
|
+
|
|
91
|
+
p.append_type = appendTextType;
|
|
92
|
+
p.append_hash = appendTextHash;
|
|
93
|
+
DataPackSender.sendErrorSnapPack(p);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return BitUtil.composite(classHash,msgHash);
|
|
97
|
+
} catch(e) {
|
|
98
|
+
Logger.printError('WHATAP-996', 'StatError (addError)', e, false);
|
|
99
|
+
}
|
|
100
|
+
return Long.ZERO;
|
|
101
|
+
};
|
|
102
|
+
StatError.prototype.send = function(now) {
|
|
103
|
+
if (this.table.size() === 0)
|
|
104
|
+
return;
|
|
105
|
+
|
|
106
|
+
var statError = new StatErrorPack().setRecords(this.table.size(), this.table.values());
|
|
107
|
+
statError.time = now;
|
|
108
|
+
this.table.clear();
|
|
109
|
+
|
|
110
|
+
DataPackSender.sendStatErrorPack(statError);
|
|
111
|
+
};
|
|
112
|
+
StatError.prototype.clear = function () {
|
|
113
|
+
this.table.clear();
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
module.exports = new StatError();
|
package/lib/stat/stat-httpc.js
CHANGED
|
@@ -1,98 +1,98 @@
|
|
|
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 LinkedMap = require('../util/linkedmap'),
|
|
8
|
-
StatHttpcPack = require('../pack/stathttpc-pack'),
|
|
9
|
-
HttpcRec = require('../pack/stathttpc-rec'),
|
|
10
|
-
DataPackSender = require('../data/datapack-sender'),
|
|
11
|
-
Logger = require('../logger');
|
|
12
|
-
|
|
13
|
-
const TABLE_MAX_SIZE = 5000;
|
|
14
|
-
|
|
15
|
-
function HTTPC(url, host, port) {
|
|
16
|
-
this.url = url || 0;
|
|
17
|
-
this.host = host || 0;
|
|
18
|
-
this.port = port || 0;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
HTTPC.prototype.hashCode = function () {
|
|
22
|
-
var prime = 31;
|
|
23
|
-
var result = 1;
|
|
24
|
-
result = prime * result + this.host;
|
|
25
|
-
result = prime * result + this.port;
|
|
26
|
-
result = prime * result + this.url;
|
|
27
|
-
return result;
|
|
28
|
-
};
|
|
29
|
-
HTTPC.prototype.equals = function (other) {
|
|
30
|
-
if(this === other) {
|
|
31
|
-
return true;
|
|
32
|
-
}
|
|
33
|
-
if(other == null) {
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
return this.host === other.host && this.url === other.url && this.port === other.port;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
function StatHttpc() {
|
|
40
|
-
if(typeof StatHttpc.instance === 'object') {
|
|
41
|
-
return StatHttpc.instance;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
this.table = new LinkedMap(TABLE_MAX_SIZE + 1 , 1).setMax(TABLE_MAX_SIZE);
|
|
45
|
-
this.table.create = function (key) {
|
|
46
|
-
if(this.size() >= TABLE_MAX_SIZE) {
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
var rec = new HttpcRec();
|
|
50
|
-
rec.url = key.url;
|
|
51
|
-
rec.host = key.host;
|
|
52
|
-
rec.port = key.port;
|
|
53
|
-
rec.time_min = Number.MAX_SAFE_INTEGER;
|
|
54
|
-
return rec;
|
|
55
|
-
};
|
|
56
|
-
StatHttpc.instance = this;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
StatHttpc.prototype.getHttpc = function (url, host, port) {
|
|
60
|
-
return this.table.intern(new HTTPC(url, host, port));
|
|
61
|
-
};
|
|
62
|
-
StatHttpc.prototype.addHttpcTime = function (service_hash, httpc_url_hash, httpc_host, httpc_port, time, isErr) {
|
|
63
|
-
|
|
64
|
-
try {
|
|
65
|
-
if(httpc_url_hash === 0) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
var httpcRec = this.getHttpc(httpc_url_hash, httpc_host, httpc_port);
|
|
70
|
-
if(httpcRec != null) {
|
|
71
|
-
httpcRec.count_total++;
|
|
72
|
-
httpcRec.time_sum +=time;
|
|
73
|
-
httpcRec.time_std +=time * time;
|
|
74
|
-
httpcRec.time_max = Math.max(httpcRec.time_max, time);
|
|
75
|
-
httpcRec.time_min = Math.min(httpcRec.time_min, time);
|
|
76
|
-
if (isErr) {
|
|
77
|
-
httpcRec.count_error++;
|
|
78
|
-
}
|
|
79
|
-
httpcRec.service = service_hash;
|
|
80
|
-
}
|
|
81
|
-
} catch(e) {
|
|
82
|
-
Logger.printError("WHATAP-610", "StatHttpC addHttpcTime error", e, false);
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
StatHttpc.prototype.send = function (now) {
|
|
86
|
-
if(this.table.size() === 0) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
var p = new StatHttpcPack().setRecords(this.table.size(), this.table.values());
|
|
90
|
-
p.time = now;
|
|
91
|
-
this.table.clear();
|
|
92
|
-
DataPackSender.sendStatHttpcPack(p);
|
|
93
|
-
};
|
|
94
|
-
StatHttpc.prototype.clear = function () {
|
|
95
|
-
this.table.clear();
|
|
96
|
-
};
|
|
97
|
-
|
|
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 LinkedMap = require('../util/linkedmap'),
|
|
8
|
+
StatHttpcPack = require('../pack/stathttpc-pack'),
|
|
9
|
+
HttpcRec = require('../pack/stathttpc-rec'),
|
|
10
|
+
DataPackSender = require('../data/datapack-sender'),
|
|
11
|
+
Logger = require('../logger');
|
|
12
|
+
|
|
13
|
+
const TABLE_MAX_SIZE = 5000;
|
|
14
|
+
|
|
15
|
+
function HTTPC(url, host, port) {
|
|
16
|
+
this.url = url || 0;
|
|
17
|
+
this.host = host || 0;
|
|
18
|
+
this.port = port || 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
HTTPC.prototype.hashCode = function () {
|
|
22
|
+
var prime = 31;
|
|
23
|
+
var result = 1;
|
|
24
|
+
result = prime * result + this.host;
|
|
25
|
+
result = prime * result + this.port;
|
|
26
|
+
result = prime * result + this.url;
|
|
27
|
+
return result;
|
|
28
|
+
};
|
|
29
|
+
HTTPC.prototype.equals = function (other) {
|
|
30
|
+
if(this === other) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
if(other == null) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
return this.host === other.host && this.url === other.url && this.port === other.port;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
function StatHttpc() {
|
|
40
|
+
if(typeof StatHttpc.instance === 'object') {
|
|
41
|
+
return StatHttpc.instance;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
this.table = new LinkedMap(TABLE_MAX_SIZE + 1 , 1).setMax(TABLE_MAX_SIZE);
|
|
45
|
+
this.table.create = function (key) {
|
|
46
|
+
if(this.size() >= TABLE_MAX_SIZE) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
var rec = new HttpcRec();
|
|
50
|
+
rec.url = key.url;
|
|
51
|
+
rec.host = key.host;
|
|
52
|
+
rec.port = key.port;
|
|
53
|
+
rec.time_min = Number.MAX_SAFE_INTEGER;
|
|
54
|
+
return rec;
|
|
55
|
+
};
|
|
56
|
+
StatHttpc.instance = this;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
StatHttpc.prototype.getHttpc = function (url, host, port) {
|
|
60
|
+
return this.table.intern(new HTTPC(url, host, port));
|
|
61
|
+
};
|
|
62
|
+
StatHttpc.prototype.addHttpcTime = function (service_hash, httpc_url_hash, httpc_host, httpc_port, time, isErr) {
|
|
63
|
+
|
|
64
|
+
try {
|
|
65
|
+
if(httpc_url_hash === 0) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
var httpcRec = this.getHttpc(httpc_url_hash, httpc_host, httpc_port);
|
|
70
|
+
if(httpcRec != null) {
|
|
71
|
+
httpcRec.count_total++;
|
|
72
|
+
httpcRec.time_sum +=time;
|
|
73
|
+
httpcRec.time_std +=time * time;
|
|
74
|
+
httpcRec.time_max = Math.max(httpcRec.time_max, time);
|
|
75
|
+
httpcRec.time_min = Math.min(httpcRec.time_min, time);
|
|
76
|
+
if (isErr) {
|
|
77
|
+
httpcRec.count_error++;
|
|
78
|
+
}
|
|
79
|
+
httpcRec.service = service_hash;
|
|
80
|
+
}
|
|
81
|
+
} catch(e) {
|
|
82
|
+
Logger.printError("WHATAP-610", "StatHttpC addHttpcTime error", e, false);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
StatHttpc.prototype.send = function (now) {
|
|
86
|
+
if(this.table.size() === 0) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
var p = new StatHttpcPack().setRecords(this.table.size(), this.table.values());
|
|
90
|
+
p.time = now;
|
|
91
|
+
this.table.clear();
|
|
92
|
+
DataPackSender.sendStatHttpcPack(p);
|
|
93
|
+
};
|
|
94
|
+
StatHttpc.prototype.clear = function () {
|
|
95
|
+
this.table.clear();
|
|
96
|
+
};
|
|
97
|
+
|
|
98
98
|
module.exports = new StatHttpc();
|
|
@@ -1,46 +1,46 @@
|
|
|
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 StatRemoteIpPack = require('../pack/statremote-pack'),
|
|
8
|
-
DataPackSender = require('../data/datapack-sender');
|
|
9
|
-
|
|
10
|
-
var TABLE_MAX_SIZE = 70000;
|
|
11
|
-
|
|
12
|
-
function StatRemoteIP() {
|
|
13
|
-
if(typeof StatRemoteIP.instance === 'object') {
|
|
14
|
-
return StatRemoteIP.instance;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
this.table = new StatRemoteIpPack();
|
|
18
|
-
this.table.iptable.setMax(TABLE_MAX_SIZE);
|
|
19
|
-
|
|
20
|
-
StatRemoteIP.instance = this;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
StatRemoteIP.prototype.incRemoteIp = function (ip) {
|
|
24
|
-
if(ip) {
|
|
25
|
-
this.table.iptable.addNoOver(ip,1);
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
StatRemoteIP.prototype.send = function (now) {
|
|
29
|
-
if(this.table.iptable.size() === 0) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
var p = this.table;
|
|
34
|
-
p.time = now;
|
|
35
|
-
DataPackSender.sendStatRemoteIpPack(p);
|
|
36
|
-
|
|
37
|
-
this.table = new StatRemoteIpPack();
|
|
38
|
-
this.table.iptable.setMax(TABLE_MAX_SIZE);
|
|
39
|
-
};
|
|
40
|
-
StatRemoteIP.prototype.clear = function () {
|
|
41
|
-
this.table.iptable.clear();
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
module.exports = new StatRemoteIP();
|
|
45
|
-
|
|
46
|
-
|
|
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 StatRemoteIpPack = require('../pack/statremote-pack'),
|
|
8
|
+
DataPackSender = require('../data/datapack-sender');
|
|
9
|
+
|
|
10
|
+
var TABLE_MAX_SIZE = 70000;
|
|
11
|
+
|
|
12
|
+
function StatRemoteIP() {
|
|
13
|
+
if(typeof StatRemoteIP.instance === 'object') {
|
|
14
|
+
return StatRemoteIP.instance;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
this.table = new StatRemoteIpPack();
|
|
18
|
+
this.table.iptable.setMax(TABLE_MAX_SIZE);
|
|
19
|
+
|
|
20
|
+
StatRemoteIP.instance = this;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
StatRemoteIP.prototype.incRemoteIp = function (ip) {
|
|
24
|
+
if(ip) {
|
|
25
|
+
this.table.iptable.addNoOver(ip,1);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
StatRemoteIP.prototype.send = function (now) {
|
|
29
|
+
if(this.table.iptable.size() === 0) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
var p = this.table;
|
|
34
|
+
p.time = now;
|
|
35
|
+
DataPackSender.sendStatRemoteIpPack(p);
|
|
36
|
+
|
|
37
|
+
this.table = new StatRemoteIpPack();
|
|
38
|
+
this.table.iptable.setMax(TABLE_MAX_SIZE);
|
|
39
|
+
};
|
|
40
|
+
StatRemoteIP.prototype.clear = function () {
|
|
41
|
+
this.table.iptable.clear();
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
module.exports = new StatRemoteIP();
|
|
45
|
+
|
|
46
|
+
|