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
|
@@ -1,67 +1,67 @@
|
|
|
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 conf = require('../../conf/configure'),
|
|
8
|
-
IntIntMap = require('../../util/intint-map'),
|
|
9
|
-
secuMaster = require('../../net/security-master'),
|
|
10
|
-
LinkedMap = require('../../util/linkedmap');
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
function MeterActiveX() {
|
|
14
|
-
this.statByOid = new IntIntMap().setMax(2001);
|
|
15
|
-
this.statByGroup = createLinkedMap();
|
|
16
|
-
this.stat_sql = new IntIntMap().setMax(301);
|
|
17
|
-
this.stat_httpc = new IntIntMap().setMax(301);
|
|
18
|
-
this.unknown = 0;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
MeterActiveX.prototype.addTx = function (caller_pcode, caller_okind, caller_oid) {
|
|
22
|
-
if (caller_oid) {
|
|
23
|
-
this.statByGroup.add({pcode:caller_pcode, okind:caller_okind}, 1);
|
|
24
|
-
if (caller_pcode == secuMaster.PCODE) {
|
|
25
|
-
this.statByOid.add(caller_oid, 1);
|
|
26
|
-
}
|
|
27
|
-
} else {
|
|
28
|
-
this.unknown++;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
};
|
|
32
|
-
MeterActiveX.prototype.addSql = function (dbc) {
|
|
33
|
-
this.stat_sql.add(dbc, 1);
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
MeterActiveX.prototype.addHttpc = function (host) {
|
|
37
|
-
this.stat_httpc.add(host, 1);
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
MeterActiveX.prototype.reinit = function () {
|
|
41
|
-
this.statByOid = new IntIntMap().setMax(2001);
|
|
42
|
-
this.statByGroup = createLinkedMap();
|
|
43
|
-
this.stat_sql = new IntIntMap().setMax(301);
|
|
44
|
-
this.stat_httpc = new IntIntMap().setMax(301);
|
|
45
|
-
this.unknown = 0;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
function createLinkedMap() {
|
|
50
|
-
var m = new LinkedMap(1009, 1).setMax(307);
|
|
51
|
-
m.hash = function (k) {
|
|
52
|
-
if (k._hash_) {
|
|
53
|
-
return k._hash_;
|
|
54
|
-
}
|
|
55
|
-
var result = 1;
|
|
56
|
-
result = 31 * result + k.pcode;
|
|
57
|
-
result = 31 * result + k.okind;
|
|
58
|
-
|
|
59
|
-
k._hash_ = result;
|
|
60
|
-
return result;
|
|
61
|
-
};
|
|
62
|
-
m.equals = function (k1, k2) {
|
|
63
|
-
return k1.pcode === k2.pcode && k1.okind === k2.okind;
|
|
64
|
-
};
|
|
65
|
-
return m;
|
|
66
|
-
}
|
|
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 conf = require('../../conf/configure'),
|
|
8
|
+
IntIntMap = require('../../util/intint-map'),
|
|
9
|
+
secuMaster = require('../../net/security-master'),
|
|
10
|
+
LinkedMap = require('../../util/linkedmap');
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
function MeterActiveX() {
|
|
14
|
+
this.statByOid = new IntIntMap().setMax(2001);
|
|
15
|
+
this.statByGroup = createLinkedMap();
|
|
16
|
+
this.stat_sql = new IntIntMap().setMax(301);
|
|
17
|
+
this.stat_httpc = new IntIntMap().setMax(301);
|
|
18
|
+
this.unknown = 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
MeterActiveX.prototype.addTx = function (caller_pcode, caller_okind, caller_oid) {
|
|
22
|
+
if (caller_oid) {
|
|
23
|
+
this.statByGroup.add({pcode:caller_pcode, okind:caller_okind}, 1);
|
|
24
|
+
if (caller_pcode == secuMaster.PCODE) {
|
|
25
|
+
this.statByOid.add(caller_oid, 1);
|
|
26
|
+
}
|
|
27
|
+
} else {
|
|
28
|
+
this.unknown++;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
};
|
|
32
|
+
MeterActiveX.prototype.addSql = function (dbc) {
|
|
33
|
+
this.stat_sql.add(dbc, 1);
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
MeterActiveX.prototype.addHttpc = function (host) {
|
|
37
|
+
this.stat_httpc.add(host, 1);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
MeterActiveX.prototype.reinit = function () {
|
|
41
|
+
this.statByOid = new IntIntMap().setMax(2001);
|
|
42
|
+
this.statByGroup = createLinkedMap();
|
|
43
|
+
this.stat_sql = new IntIntMap().setMax(301);
|
|
44
|
+
this.stat_httpc = new IntIntMap().setMax(301);
|
|
45
|
+
this.unknown = 0;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
function createLinkedMap() {
|
|
50
|
+
var m = new LinkedMap(1009, 1).setMax(307);
|
|
51
|
+
m.hash = function (k) {
|
|
52
|
+
if (k._hash_) {
|
|
53
|
+
return k._hash_;
|
|
54
|
+
}
|
|
55
|
+
var result = 1;
|
|
56
|
+
result = 31 * result + k.pcode;
|
|
57
|
+
result = 31 * result + k.okind;
|
|
58
|
+
|
|
59
|
+
k._hash_ = result;
|
|
60
|
+
return result;
|
|
61
|
+
};
|
|
62
|
+
m.equals = function (k1, k2) {
|
|
63
|
+
return k1.pcode === k2.pcode && k1.okind === k2.okind;
|
|
64
|
+
};
|
|
65
|
+
return m;
|
|
66
|
+
}
|
|
67
67
|
module.exports = new MeterActiveX();
|
|
@@ -1,57 +1,57 @@
|
|
|
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 IntKeyLinkedMap = require('../../util/intkey-linkedmap');
|
|
8
|
-
var Long = require('long');
|
|
9
|
-
var Logger = require('../../logger');
|
|
10
|
-
var conf = require('../../conf/configure');
|
|
11
|
-
|
|
12
|
-
function Bucket() {
|
|
13
|
-
this.count = 0;
|
|
14
|
-
this.time =0;
|
|
15
|
-
this.error = 0;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function MeterHttpC() {
|
|
19
|
-
this.bucket = new Bucket();
|
|
20
|
-
this.stat = new IntKeyLinkedMap(309, 1).setMax(307);
|
|
21
|
-
this.stat.create = function (key) {
|
|
22
|
-
return new Bucket();
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
MeterHttpC.prototype.add = function (host,elapsed, err) {
|
|
27
|
-
try {
|
|
28
|
-
var b = this.bucket;
|
|
29
|
-
b.count++;
|
|
30
|
-
b.time += elapsed;
|
|
31
|
-
if(err) {
|
|
32
|
-
b.error++;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if (conf.httpc_host_meter_enabled && host != 0) {
|
|
36
|
-
b = this.stat.intern(host);
|
|
37
|
-
b.count++;
|
|
38
|
-
b.time += elapsed;
|
|
39
|
-
if (err) {
|
|
40
|
-
b.error++;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
} catch(e) {
|
|
44
|
-
Logger.printError("WHATAP-608", "MeterHttpC Error", e);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
MeterHttpC.prototype.getBucketReset = function () {
|
|
48
|
-
var b = this.bucket;
|
|
49
|
-
this.bucket = new Bucket();
|
|
50
|
-
return b;
|
|
51
|
-
};
|
|
52
|
-
MeterHttpC.prototype.resetStat = function () {
|
|
53
|
-
if(this.stat.size() > 0){
|
|
54
|
-
this.stat.clear();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
module.exports = new MeterHttpC();
|
|
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 IntKeyLinkedMap = require('../../util/intkey-linkedmap');
|
|
8
|
+
var Long = require('long');
|
|
9
|
+
var Logger = require('../../logger');
|
|
10
|
+
var conf = require('../../conf/configure');
|
|
11
|
+
|
|
12
|
+
function Bucket() {
|
|
13
|
+
this.count = 0;
|
|
14
|
+
this.time =0;
|
|
15
|
+
this.error = 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function MeterHttpC() {
|
|
19
|
+
this.bucket = new Bucket();
|
|
20
|
+
this.stat = new IntKeyLinkedMap(309, 1).setMax(307);
|
|
21
|
+
this.stat.create = function (key) {
|
|
22
|
+
return new Bucket();
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
MeterHttpC.prototype.add = function (host,elapsed, err) {
|
|
27
|
+
try {
|
|
28
|
+
var b = this.bucket;
|
|
29
|
+
b.count++;
|
|
30
|
+
b.time += elapsed;
|
|
31
|
+
if(err) {
|
|
32
|
+
b.error++;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (conf.httpc_host_meter_enabled && host != 0) {
|
|
36
|
+
b = this.stat.intern(host);
|
|
37
|
+
b.count++;
|
|
38
|
+
b.time += elapsed;
|
|
39
|
+
if (err) {
|
|
40
|
+
b.error++;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
} catch(e) {
|
|
44
|
+
Logger.printError("WHATAP-608", "MeterHttpC Error", e);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
MeterHttpC.prototype.getBucketReset = function () {
|
|
48
|
+
var b = this.bucket;
|
|
49
|
+
this.bucket = new Bucket();
|
|
50
|
+
return b;
|
|
51
|
+
};
|
|
52
|
+
MeterHttpC.prototype.resetStat = function () {
|
|
53
|
+
if(this.stat.size() > 0){
|
|
54
|
+
this.stat.clear();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
module.exports = new MeterHttpC();
|
|
@@ -1,9 +1,9 @@
|
|
|
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
|
-
function MeterResource() {
|
|
8
|
-
|
|
9
|
-
};
|
|
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
|
+
function MeterResource() {
|
|
8
|
+
|
|
9
|
+
};
|
|
@@ -1,168 +1,168 @@
|
|
|
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 HitMapPack1 = require('../../pack/hitmap-pack1'),
|
|
8
|
-
IntKeyMap = require('../../util/intkey-map'),
|
|
9
|
-
SecurityMaster = require('../../net/security-master'),
|
|
10
|
-
conf = require('../../conf/configure'),
|
|
11
|
-
secu = require('../../net/security-master'),
|
|
12
|
-
IntKeyLinkedMap = require('../../util/intkey-linkedmap'),
|
|
13
|
-
LinkedMap = require('../../util/linkedmap'),
|
|
14
|
-
Logger = require('../../logger'),
|
|
15
|
-
EventLevel = require('../../data/event-level');
|
|
16
|
-
Long = require('long');
|
|
17
|
-
|
|
18
|
-
function Bucket () {
|
|
19
|
-
this.hitmap = new HitMapPack1();
|
|
20
|
-
this.count = 0;
|
|
21
|
-
this.timesum = 0;
|
|
22
|
-
this.error = 0;
|
|
23
|
-
this.count_satisfied = 0;
|
|
24
|
-
this.count_tolerated = 0;
|
|
25
|
-
|
|
26
|
-
this.reset = function () {
|
|
27
|
-
this.count = 0;
|
|
28
|
-
this.timesum = 0;
|
|
29
|
-
this.error = 0;
|
|
30
|
-
this.count_satisfied = 0;
|
|
31
|
-
this.count_tolerated = 0;
|
|
32
|
-
this.hitmap = new HitMapPack1();
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
function BucketSimple () {
|
|
36
|
-
this.count = 0;
|
|
37
|
-
this.timesum = 0;
|
|
38
|
-
this.error = 0;
|
|
39
|
-
this.count_satisfied = 0;
|
|
40
|
-
this.count_tolerated = 0;
|
|
41
|
-
|
|
42
|
-
this.reset = function () {
|
|
43
|
-
this.count = 0;
|
|
44
|
-
this.timesum =0;
|
|
45
|
-
this.error = 0;
|
|
46
|
-
this.count_satisfied = 0;
|
|
47
|
-
this.count_tolerated = 0;
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function MeterService() {
|
|
52
|
-
if(typeof MeterService.instance === 'object') {
|
|
53
|
-
return MeterService.instance;
|
|
54
|
-
}
|
|
55
|
-
this.bucket = new Bucket();
|
|
56
|
-
this.unknown = new BucketSimple();
|
|
57
|
-
this.stat = new IntKeyLinkedMap(309, 1).setMax(307);
|
|
58
|
-
this.stat.create = function (key) {
|
|
59
|
-
return new BucketSimple();
|
|
60
|
-
};
|
|
61
|
-
this.statByGroup = new LinkedMap(309, 1).setMax(307);
|
|
62
|
-
this.statByGroup.create = function (key) {
|
|
63
|
-
return new BucketSimple();
|
|
64
|
-
};
|
|
65
|
-
this.statByGroup.hash = function (k) {
|
|
66
|
-
if(k._hash_){
|
|
67
|
-
return k._hash_;
|
|
68
|
-
}
|
|
69
|
-
var result = 1;
|
|
70
|
-
result = 31 * result + k.pcode;
|
|
71
|
-
result = 31 * result + k.okind;
|
|
72
|
-
|
|
73
|
-
k._hash_=result;
|
|
74
|
-
return result;
|
|
75
|
-
};
|
|
76
|
-
this.statByGroup.equals = function (k1,k2) {
|
|
77
|
-
return k1.pcode === k2.pcode && k1.okind === k2.okind;
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
MeterService.instance = this;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
MeterService.prototype.add = function (serviceHash, elapsed, errorLevel, caller_pcode, caller_okind, caller_oid , apdex) {
|
|
84
|
-
if(elapsed < 0) {
|
|
85
|
-
elapsed = 0;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
var b = this.bucket;
|
|
89
|
-
b.count += 1;
|
|
90
|
-
b.timesum +=elapsed;
|
|
91
|
-
|
|
92
|
-
var err = errorLevel >= EventLevel.WARNING;
|
|
93
|
-
if (err) {
|
|
94
|
-
b.error += 1;
|
|
95
|
-
} else {
|
|
96
|
-
if (elapsed <= conf.apdex_time_t) {
|
|
97
|
-
b.count_satisfied += 1;
|
|
98
|
-
apdex=2;
|
|
99
|
-
} else if (elapsed <= conf.apdex_time_4t) {
|
|
100
|
-
b.count_tolerated += 1;
|
|
101
|
-
apdex=1;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
b.hitmap.add(elapsed, err);
|
|
105
|
-
|
|
106
|
-
if (conf.tx_caller_meter_enabled) {
|
|
107
|
-
try{
|
|
108
|
-
var b1 = null;
|
|
109
|
-
if( caller_oid) {
|
|
110
|
-
if (caller_pcode == SecurityMaster.PCODE) {
|
|
111
|
-
b1 = this.stat.intern(caller_oid);
|
|
112
|
-
b1.count++;
|
|
113
|
-
b1.timesum += elapsed;
|
|
114
|
-
if (err) {
|
|
115
|
-
b1.error++;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
b1 = this.statByGroup.intern({pcode:caller_pcode, okind:caller_okind});
|
|
120
|
-
b1.count++;
|
|
121
|
-
b1.timesum += elapsed;
|
|
122
|
-
if (err) {
|
|
123
|
-
b1.error++;
|
|
124
|
-
}
|
|
125
|
-
}else {
|
|
126
|
-
b1 = this.unknown;
|
|
127
|
-
b1.count++;
|
|
128
|
-
b1.timesum += elapsed;
|
|
129
|
-
if (err) {
|
|
130
|
-
b1.error++;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}catch(e){
|
|
134
|
-
Logger.printError('WHATAP-080', 'Meter Service add ', e, true);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
MeterService.prototype.getBucket = function () {
|
|
139
|
-
return this.bucket;
|
|
140
|
-
};
|
|
141
|
-
MeterService.prototype.resetStat = function () {
|
|
142
|
-
if(this.stat.size() > 0){
|
|
143
|
-
this.stat.clear();
|
|
144
|
-
}
|
|
145
|
-
if(this.statByGroup.size() > 0){
|
|
146
|
-
this.statByGroup.clear();
|
|
147
|
-
}
|
|
148
|
-
if (this.unknown.count > 0) {
|
|
149
|
-
this.unknown = new Bucket();
|
|
150
|
-
}
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
function TopService(hash) {
|
|
154
|
-
this.hash = hash | 0;
|
|
155
|
-
this.count = 0;
|
|
156
|
-
this.error = 0;
|
|
157
|
-
this.time = 0;
|
|
158
|
-
|
|
159
|
-
this.clear = function () {
|
|
160
|
-
this.count = 0;
|
|
161
|
-
this.error = 0;
|
|
162
|
-
this.time = 0;
|
|
163
|
-
};
|
|
164
|
-
};
|
|
165
|
-
|
|
166
|
-
module.exports.MeterService = new MeterService();
|
|
167
|
-
module.exports.Bucket = Bucket;
|
|
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 HitMapPack1 = require('../../pack/hitmap-pack1'),
|
|
8
|
+
IntKeyMap = require('../../util/intkey-map'),
|
|
9
|
+
SecurityMaster = require('../../net/security-master'),
|
|
10
|
+
conf = require('../../conf/configure'),
|
|
11
|
+
secu = require('../../net/security-master'),
|
|
12
|
+
IntKeyLinkedMap = require('../../util/intkey-linkedmap'),
|
|
13
|
+
LinkedMap = require('../../util/linkedmap'),
|
|
14
|
+
Logger = require('../../logger'),
|
|
15
|
+
EventLevel = require('../../data/event-level');
|
|
16
|
+
Long = require('long');
|
|
17
|
+
|
|
18
|
+
function Bucket () {
|
|
19
|
+
this.hitmap = new HitMapPack1();
|
|
20
|
+
this.count = 0;
|
|
21
|
+
this.timesum = 0;
|
|
22
|
+
this.error = 0;
|
|
23
|
+
this.count_satisfied = 0;
|
|
24
|
+
this.count_tolerated = 0;
|
|
25
|
+
|
|
26
|
+
this.reset = function () {
|
|
27
|
+
this.count = 0;
|
|
28
|
+
this.timesum = 0;
|
|
29
|
+
this.error = 0;
|
|
30
|
+
this.count_satisfied = 0;
|
|
31
|
+
this.count_tolerated = 0;
|
|
32
|
+
this.hitmap = new HitMapPack1();
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function BucketSimple () {
|
|
36
|
+
this.count = 0;
|
|
37
|
+
this.timesum = 0;
|
|
38
|
+
this.error = 0;
|
|
39
|
+
this.count_satisfied = 0;
|
|
40
|
+
this.count_tolerated = 0;
|
|
41
|
+
|
|
42
|
+
this.reset = function () {
|
|
43
|
+
this.count = 0;
|
|
44
|
+
this.timesum =0;
|
|
45
|
+
this.error = 0;
|
|
46
|
+
this.count_satisfied = 0;
|
|
47
|
+
this.count_tolerated = 0;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function MeterService() {
|
|
52
|
+
if(typeof MeterService.instance === 'object') {
|
|
53
|
+
return MeterService.instance;
|
|
54
|
+
}
|
|
55
|
+
this.bucket = new Bucket();
|
|
56
|
+
this.unknown = new BucketSimple();
|
|
57
|
+
this.stat = new IntKeyLinkedMap(309, 1).setMax(307);
|
|
58
|
+
this.stat.create = function (key) {
|
|
59
|
+
return new BucketSimple();
|
|
60
|
+
};
|
|
61
|
+
this.statByGroup = new LinkedMap(309, 1).setMax(307);
|
|
62
|
+
this.statByGroup.create = function (key) {
|
|
63
|
+
return new BucketSimple();
|
|
64
|
+
};
|
|
65
|
+
this.statByGroup.hash = function (k) {
|
|
66
|
+
if(k._hash_){
|
|
67
|
+
return k._hash_;
|
|
68
|
+
}
|
|
69
|
+
var result = 1;
|
|
70
|
+
result = 31 * result + k.pcode;
|
|
71
|
+
result = 31 * result + k.okind;
|
|
72
|
+
|
|
73
|
+
k._hash_=result;
|
|
74
|
+
return result;
|
|
75
|
+
};
|
|
76
|
+
this.statByGroup.equals = function (k1,k2) {
|
|
77
|
+
return k1.pcode === k2.pcode && k1.okind === k2.okind;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
MeterService.instance = this;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
MeterService.prototype.add = function (serviceHash, elapsed, errorLevel, caller_pcode, caller_okind, caller_oid , apdex) {
|
|
84
|
+
if(elapsed < 0) {
|
|
85
|
+
elapsed = 0;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
var b = this.bucket;
|
|
89
|
+
b.count += 1;
|
|
90
|
+
b.timesum +=elapsed;
|
|
91
|
+
|
|
92
|
+
var err = errorLevel >= EventLevel.WARNING;
|
|
93
|
+
if (err) {
|
|
94
|
+
b.error += 1;
|
|
95
|
+
} else {
|
|
96
|
+
if (elapsed <= conf.apdex_time_t) {
|
|
97
|
+
b.count_satisfied += 1;
|
|
98
|
+
apdex=2;
|
|
99
|
+
} else if (elapsed <= conf.apdex_time_4t) {
|
|
100
|
+
b.count_tolerated += 1;
|
|
101
|
+
apdex=1;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
b.hitmap.add(elapsed, err);
|
|
105
|
+
|
|
106
|
+
if (conf.tx_caller_meter_enabled) {
|
|
107
|
+
try{
|
|
108
|
+
var b1 = null;
|
|
109
|
+
if( caller_oid) {
|
|
110
|
+
if (caller_pcode == SecurityMaster.PCODE) {
|
|
111
|
+
b1 = this.stat.intern(caller_oid);
|
|
112
|
+
b1.count++;
|
|
113
|
+
b1.timesum += elapsed;
|
|
114
|
+
if (err) {
|
|
115
|
+
b1.error++;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
b1 = this.statByGroup.intern({pcode:caller_pcode, okind:caller_okind});
|
|
120
|
+
b1.count++;
|
|
121
|
+
b1.timesum += elapsed;
|
|
122
|
+
if (err) {
|
|
123
|
+
b1.error++;
|
|
124
|
+
}
|
|
125
|
+
}else {
|
|
126
|
+
b1 = this.unknown;
|
|
127
|
+
b1.count++;
|
|
128
|
+
b1.timesum += elapsed;
|
|
129
|
+
if (err) {
|
|
130
|
+
b1.error++;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}catch(e){
|
|
134
|
+
Logger.printError('WHATAP-080', 'Meter Service add ', e, true);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
MeterService.prototype.getBucket = function () {
|
|
139
|
+
return this.bucket;
|
|
140
|
+
};
|
|
141
|
+
MeterService.prototype.resetStat = function () {
|
|
142
|
+
if(this.stat.size() > 0){
|
|
143
|
+
this.stat.clear();
|
|
144
|
+
}
|
|
145
|
+
if(this.statByGroup.size() > 0){
|
|
146
|
+
this.statByGroup.clear();
|
|
147
|
+
}
|
|
148
|
+
if (this.unknown.count > 0) {
|
|
149
|
+
this.unknown = new Bucket();
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
function TopService(hash) {
|
|
154
|
+
this.hash = hash | 0;
|
|
155
|
+
this.count = 0;
|
|
156
|
+
this.error = 0;
|
|
157
|
+
this.time = 0;
|
|
158
|
+
|
|
159
|
+
this.clear = function () {
|
|
160
|
+
this.count = 0;
|
|
161
|
+
this.error = 0;
|
|
162
|
+
this.time = 0;
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
module.exports.MeterService = new MeterService();
|
|
167
|
+
module.exports.Bucket = Bucket;
|
|
168
168
|
module.exports.TopService = TopService;
|