whatap 0.4.79 → 0.4.81

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.
Files changed (217) hide show
  1. package/.vscode/keep-context.json +3 -3
  2. package/README.md +51 -51
  3. package/bindings/darwin/x64/whatap.node +0 -0
  4. package/bindings/linux/ia32/whatap.node +0 -0
  5. package/bindings/linux/x64/whatap.node +0 -0
  6. package/help.txt +10 -10
  7. package/index.js +8 -8
  8. package/lib/conf/conf-sys-mon.js +100 -100
  9. package/lib/conf/config-default.js +238 -238
  10. package/lib/conf/configure.js +423 -423
  11. package/lib/conf/license.js +41 -41
  12. package/lib/control/cmd-config.js +23 -23
  13. package/lib/control/control-handler.js +344 -344
  14. package/lib/control/packagectr-helper.js +149 -149
  15. package/lib/core/agent.js +329 -328
  16. package/lib/core/interceptor.js +142 -142
  17. package/lib/core/request-agent.js +26 -26
  18. package/lib/counter/counter-manager.js +127 -127
  19. package/lib/counter/meter/meter-activex.js +66 -66
  20. package/lib/counter/meter/meter-httpc.js +57 -57
  21. package/lib/counter/meter/meter-resource.js +9 -9
  22. package/lib/counter/meter/meter-service.js +167 -167
  23. package/lib/counter/meter/meter-socket.io.js +50 -50
  24. package/lib/counter/meter/meter-sql.js +70 -70
  25. package/lib/counter/meter/meter-users.js +57 -57
  26. package/lib/counter/meter.js +183 -183
  27. package/lib/counter/task/activetransaction.js +93 -93
  28. package/lib/counter/task/agentinfo.js +105 -105
  29. package/lib/counter/task/counter-task.js +9 -9
  30. package/lib/counter/task/gcstat.js +34 -34
  31. package/lib/counter/task/heapmem.js +24 -24
  32. package/lib/counter/task/httpc.js +75 -75
  33. package/lib/counter/task/proc-cpu.js +28 -28
  34. package/lib/counter/task/realtimeuser.js +30 -30
  35. package/lib/counter/task/res/systemECSTask.js +54 -54
  36. package/lib/counter/task/res/systemKubeTask.js +52 -52
  37. package/lib/counter/task/res/util/awsEcsClientThread.js +166 -166
  38. package/lib/counter/task/res/util/linuxProcStatUtil.js +13 -13
  39. package/lib/counter/task/res-sys-cpu.js +61 -61
  40. package/lib/counter/task/service.js +201 -201
  41. package/lib/counter/task/socketio.js +29 -29
  42. package/lib/counter/task/sql.js +104 -104
  43. package/lib/counter/task/systemperf.js +42 -42
  44. package/lib/data/datapack-sender.js +256 -256
  45. package/lib/data/dataprofile-agent.js +136 -136
  46. package/lib/data/datatext-agent.js +135 -135
  47. package/lib/data/event-level.js +15 -15
  48. package/lib/data/test.js +48 -48
  49. package/lib/env/constants.js +20 -20
  50. package/lib/kube/kube-client.js +143 -143
  51. package/lib/lang/text-types.js +58 -58
  52. package/lib/logger.js +319 -319
  53. package/lib/net/netflag.js +54 -54
  54. package/lib/net/paramdef.js +40 -40
  55. package/lib/net/receiver.js +65 -65
  56. package/lib/net/security-master.js +182 -173
  57. package/lib/net/sender.js +140 -140
  58. package/lib/net/tcp-return.js +17 -17
  59. package/lib/net/tcp-session.js +285 -285
  60. package/lib/net/tcpreq-client-proxy.js +69 -69
  61. package/lib/net/tcprequest-mgr.js +57 -57
  62. package/lib/observers/cluster-observer.js +21 -21
  63. package/lib/observers/express-observer.js +214 -214
  64. package/lib/observers/file-observer.js +184 -184
  65. package/lib/observers/global-observer.js +30 -30
  66. package/lib/observers/http-observer.js +714 -704
  67. package/lib/observers/maria-observer.js +382 -382
  68. package/lib/observers/memcached-observer.js +55 -55
  69. package/lib/observers/mongo-observer.js +262 -265
  70. package/lib/observers/mongodb-observer.js +197 -197
  71. package/lib/observers/mongoose-observer.js +83 -83
  72. package/lib/observers/mssql-observer.js +205 -205
  73. package/lib/observers/mysql-observer.js +436 -394
  74. package/lib/observers/net-observer.js +72 -72
  75. package/lib/observers/pgsql-observer.js +295 -295
  76. package/lib/observers/process-observer.js +25 -25
  77. package/lib/observers/promise-observer.js +31 -31
  78. package/lib/observers/redis-observer.js +156 -109
  79. package/lib/observers/schedule-observer.js +66 -66
  80. package/lib/observers/socket.io-observer.js +54 -54
  81. package/lib/observers/stream-observer.js +19 -19
  82. package/lib/observers/thrift-observer.js +196 -196
  83. package/lib/pack/activestack-pack.js +54 -54
  84. package/lib/pack/counter-pack.js +649 -649
  85. package/lib/pack/errorsnap-pack.js +68 -68
  86. package/lib/pack/event-pack.js +53 -53
  87. package/lib/pack/hitmap-pack.js +62 -62
  88. package/lib/pack/hitmap-pack1.js +146 -146
  89. package/lib/pack/netstat.js +14 -14
  90. package/lib/pack/pack.js +49 -49
  91. package/lib/pack/packenum.js +60 -60
  92. package/lib/pack/param-pack.js +213 -213
  93. package/lib/pack/profile-pack.js +48 -48
  94. package/lib/pack/realtimeuser-pack.js +40 -40
  95. package/lib/pack/stat-general-pack.js +95 -95
  96. package/lib/pack/staterror-pack.js +119 -119
  97. package/lib/pack/stathttpc-pack.js +66 -66
  98. package/lib/pack/stathttpc-rec.js +78 -78
  99. package/lib/pack/statremote-pack.js +45 -45
  100. package/lib/pack/statservice-pack.js +62 -62
  101. package/lib/pack/statservice-pack1.js +87 -87
  102. package/lib/pack/statservice-rec.js +292 -292
  103. package/lib/pack/statservice-rec_dep.js +151 -151
  104. package/lib/pack/statsql-pack.js +69 -69
  105. package/lib/pack/statsql-rec.js +100 -100
  106. package/lib/pack/statuseragent-pack.js +43 -43
  107. package/lib/pack/tagcount-pack.js +398 -398
  108. package/lib/pack/tagctr.js +14 -14
  109. package/lib/pack/text-pack.js +49 -49
  110. package/lib/pack/time-count.js +25 -25
  111. package/lib/pack/websocket.js +14 -14
  112. package/lib/plugin/plugin-loadermanager.js +56 -56
  113. package/lib/plugin/plugin.js +75 -75
  114. package/lib/requestlog.js +326 -326
  115. package/lib/service/tx-record.js +293 -288
  116. package/lib/stat/stat-error.js +116 -116
  117. package/lib/stat/stat-httpc.js +97 -97
  118. package/lib/stat/stat-remoteip.js +46 -46
  119. package/lib/stat/stat-sql.js +112 -112
  120. package/lib/stat/stat-tranx.js +57 -57
  121. package/lib/stat/stat-tx-caller.js +159 -159
  122. package/lib/stat/stat-tx-domain.js +110 -110
  123. package/lib/stat/stat-tx-referer.js +111 -111
  124. package/lib/stat/stat-useragent.js +48 -48
  125. package/lib/stat/timingsender.js +72 -72
  126. package/lib/step/activestack-step.js +37 -37
  127. package/lib/step/dbc-step.js +35 -35
  128. package/lib/step/http-stepx.js +66 -66
  129. package/lib/step/message-step.js +39 -39
  130. package/lib/step/method-stepx.js +46 -46
  131. package/lib/step/resultset-step.js +39 -39
  132. package/lib/step/securemsg-step.js +43 -43
  133. package/lib/step/socket-step.js +46 -46
  134. package/lib/step/sql-stepx.js +67 -67
  135. package/lib/step/sqlxtype.js +15 -15
  136. package/lib/step/step.js +65 -65
  137. package/lib/step/stepenum.js +53 -53
  138. package/lib/trace/local-context.js +13 -13
  139. package/lib/trace/parsed-sql.js +13 -13
  140. package/lib/trace/profile-collector.js +70 -70
  141. package/lib/trace/serviceurl-pattern-detector.js +117 -117
  142. package/lib/trace/trace-context-manager.js +195 -195
  143. package/lib/trace/trace-context.js +136 -134
  144. package/lib/util/anylist.js +102 -102
  145. package/lib/util/array-util.js +100 -100
  146. package/lib/util/bitutil.js +27 -27
  147. package/lib/util/cardinality/hyperloglog.js +105 -105
  148. package/lib/util/cardinality/murmurhash.js +31 -31
  149. package/lib/util/cardinality/registerset.js +74 -74
  150. package/lib/util/config-util.js +17 -17
  151. package/lib/util/cypher.js +89 -89
  152. package/lib/util/datetimehelper.js +237 -229
  153. package/lib/util/dateutil.js +110 -106
  154. package/lib/util/errordata.js +20 -20
  155. package/lib/util/escape-literal-sql.js +342 -342
  156. package/lib/util/hashutil2.js +126 -126
  157. package/lib/util/hexa32.js +57 -57
  158. package/lib/util/index.js +78 -78
  159. package/lib/util/intint-map.js +47 -47
  160. package/lib/util/intkey-linkedmap.js +26 -26
  161. package/lib/util/intkey-map.js +25 -25
  162. package/lib/util/intset.js +82 -82
  163. package/lib/util/iputil.js +119 -119
  164. package/lib/util/iputil_x.js +526 -526
  165. package/lib/util/keygen.js +17 -17
  166. package/lib/util/kube-util.js +72 -72
  167. package/lib/util/longint-linkedmap.js +35 -35
  168. package/lib/util/longkey-linkedmap.js +25 -25
  169. package/lib/util/longlong-linkedmap.js +37 -37
  170. package/lib/util/nodeutil.js +67 -67
  171. package/lib/util/oidutil.js +96 -93
  172. package/lib/util/paramsecurity.js +78 -78
  173. package/lib/util/pathtree.js +172 -172
  174. package/lib/util/pre-process.js +13 -13
  175. package/lib/util/process-seq.js +165 -165
  176. package/lib/util/property-util.js +35 -35
  177. package/lib/util/request-queue.js +42 -42
  178. package/lib/util/requestdouble-queue.js +72 -72
  179. package/lib/util/resourceprofile.js +156 -156
  180. package/lib/util/seedrandom.js +242 -242
  181. package/lib/util/stop-watch.js +29 -29
  182. package/lib/util/string-util.js +9 -9
  183. package/lib/util/stringkey-linkedmap.js +28 -28
  184. package/lib/util/stringnum-linkedmap.js +31 -31
  185. package/lib/util/stringset.js +65 -65
  186. package/lib/util/system-util.js +9 -9
  187. package/lib/util/userid-util.js +57 -57
  188. package/lib/util/utils.js +67 -67
  189. package/lib/value/blob-value.js +61 -61
  190. package/lib/value/boolean-value.js +51 -51
  191. package/lib/value/decimal-value.js +71 -71
  192. package/lib/value/double-summary.js +105 -105
  193. package/lib/value/double-value.js +50 -50
  194. package/lib/value/float-array.js +59 -59
  195. package/lib/value/float-value.js +64 -64
  196. package/lib/value/int-array.js +59 -59
  197. package/lib/value/int-map-value.js +151 -151
  198. package/lib/value/int-value.js +64 -64
  199. package/lib/value/ip4-value.js +83 -83
  200. package/lib/value/list-value.js +136 -136
  201. package/lib/value/long-array.js +59 -59
  202. package/lib/value/long-summary.js +105 -105
  203. package/lib/value/map-value.js +175 -175
  204. package/lib/value/metric-value.js +157 -157
  205. package/lib/value/null-value.js +42 -42
  206. package/lib/value/number-value.js +34 -34
  207. package/lib/value/summary-value.js +29 -29
  208. package/lib/value/text-array.js +117 -117
  209. package/lib/value/text-value.js +59 -59
  210. package/lib/value/texthash-value.js +49 -49
  211. package/lib/value/value.js +14 -14
  212. package/lib/value/valueenum.js +99 -99
  213. package/logs/whatap-20230906.log +54 -0
  214. package/logs/whatap-20231101.log +293 -0
  215. package/package.json +28 -28
  216. package/whatap.conf +1 -1
  217. package/logs/whatap-20230616.log +0 -13
@@ -1,650 +1,650 @@
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 Pack = require('./pack'),
8
- PackEnum = require('./packenum'),
9
- DataOutputX = require('./../io/data-outputx'),
10
- DataInputX = require('./../io/data-inputx'),
11
- IntMapValue = require('./../value/int-map-value'),
12
- IntValue = require('./../value/int-value'),
13
- FloatValue = require('./../value/float-value'),
14
- NETSTAT = require('./netstat'),
15
- WEBSOCKET = require('./websocket'),
16
- IntIntMap = require('../util/intint-map'),
17
- IntKeyLinkedMap = require('../util/intkey-linkedmap'),
18
- LongKeyLinkedMap = require('../util/longkey-linkedmap'),
19
- Long = require('long');
20
-
21
- function CounterPack() {
22
- Pack.call(this);
23
- this.duration = 0; // sec
24
- this.cputime = 0;
25
-
26
- this.heap_tot = 0;
27
- this.heap_use = 0;
28
- this.heap_perm = 0;
29
- this.heap_pending_finalization = 0;
30
-
31
- this.gc_count = 0;
32
- this.gc_time = 0;
33
-
34
- this.service_count = 0;
35
- this.service_error = 0;
36
- this.service_time = 0;
37
-
38
- this.sql_count = 0;
39
- this.sql_error = 0;
40
- this.sql_time = 0;
41
-
42
- this.sql_fetch_count = 0;
43
- this.sql_fetch_time = 0;
44
-
45
- this.httpc_count = 0;
46
- this.httpc_error = 0;
47
- this.httpc_time = 0;
48
-
49
- this.active_tx_count = 0;
50
- this.active_tx_slice = new Array(3).fill(0);
51
-
52
- this.cpu = 0;
53
- this.cpu_sys = 0;
54
- this.cpu_usr = 0;
55
- this.cpu_wait = 0;
56
- this.cpu_steal = 0;
57
- this.cpu_irq = 0;
58
-
59
- this.cpu_proc = 0;
60
- this.cpu_cores = 0;
61
-
62
- this.mem = 0;
63
- this.swap = 0;
64
- this.disk = 0;
65
-
66
- this.thread_total_started = 0;
67
- this.thread_count = 0;
68
- this.thread_daemon = 0;
69
- this.thread_peak_count = 0;
70
-
71
- this.starttime = 0;
72
- this.pack_dropped = 0;
73
-
74
- this.db_num_active = null;
75
- this.db_num_idle = null;
76
- this.netstat = null;
77
-
78
- this.host_ip = 0;
79
- this.proc_fd = 0;
80
- this.tps = 0;
81
- this.resp_time = 0;
82
-
83
- this.apType = 2;
84
- this.websocket = null;
85
-
86
- /*추가항목들..20180717 */
87
- this.mac_hash = 0;
88
- this.extra = null; // IntMapValue
89
-
90
- this.pid = 0;
91
- //{"method","sql","httpc", "dbc","socket"};
92
- this.active_stat = null;
93
-
94
- this.threadpool_activeCount = 0;
95
- this.threadpool_queueSize = 0;
96
-
97
- this.txcaller_oid_meter = null;
98
- this.sql_meter = null;
99
- this.httpc_meter = null;
100
- this.txcaller_group_meter = null;
101
- this.txcaller_unknown = null;
102
-
103
- this.containerKey = 0;
104
-
105
- this.tx_dbc_time = 0;//avg time
106
- this.tx_sql_time = 0;//avg time
107
- this.tx_httpc_time = 0;//avg time
108
-
109
- this.apdex_satisfied = 0;
110
- this.apdex_tolerated = 0;
111
- this.apdex_total = 0;
112
-
113
- this.arrival_rate = 0;
114
- this.gc_oldgen_count = 0;
115
- this.version = 2;
116
- this.heap_max = 0;
117
-
118
- this.proc_fd_max = 0;
119
-
120
- this.metering = 0;
121
- }
122
- CounterPack.prototype = new Pack();
123
- CounterPack.prototype.constructor = CounterPack;
124
- CounterPack.prototype.getPackType = function () {
125
- return PackEnum.COUNTER_1;
126
- };
127
- CounterPack.prototype.write = function (o) {
128
- Pack.prototype.write.call(this, o);
129
-
130
- var dout = new DataOutputX();
131
- dout.writeDecimal(this.duration);
132
- dout.writeDecimal(this.cputime);
133
-
134
- dout.writeDecimal(this.heap_tot);
135
- dout.writeDecimal(this.heap_use);
136
- dout.writeDecimal(this.heap_perm);
137
- dout.writeDecimal(this.heap_pending_finalization);
138
-
139
- dout.writeDecimal(this.gc_count);
140
- dout.writeDecimal(this.gc_time);
141
-
142
- dout.writeDecimal(this.service_count);
143
- dout.writeDecimal(this.service_error);
144
- dout.writeDecimal(this.service_time);
145
-
146
- dout.writeDecimal(this.sql_count);
147
- dout.writeDecimal(this.sql_error);
148
- dout.writeDecimal(this.sql_time);
149
- dout.writeDecimal(this.sql_fetch_count);
150
- dout.writeDecimal(this.sql_fetch_time);
151
-
152
- dout.writeDecimal(this.httpc_count);
153
- dout.writeDecimal(this.httpc_error);
154
- dout.writeDecimal(this.httpc_time);
155
-
156
- dout.writeDecimal(this.active_tx_count);
157
- CounterPack.writeShortArray(dout, this.active_tx_slice);
158
-
159
- dout.writeFloat(this.cpu);
160
- dout.writeFloat(this.cpu_sys);
161
- dout.writeFloat(this.cpu_usr);
162
- dout.writeFloat(this.cpu_wait);
163
- dout.writeFloat(this.cpu_steal);
164
- dout.writeFloat(this.cpu_irq);
165
-
166
- dout.writeFloat(this.cpu_proc);
167
- dout.writeDecimal(this.cpu_cores);
168
- dout.writeFloat(this.mem);
169
- dout.writeFloat(this.swap);
170
- dout.writeFloat(this.disk);
171
-
172
- dout.writeDecimal(this.thread_total_started);
173
- dout.writeDecimal(this.thread_count);
174
- dout.writeDecimal(this.thread_daemon);
175
- dout.writeDecimal(this.thread_peak_count);
176
-
177
-
178
- var db = this.db_num_active != null && this._idle != null;
179
- dout.writeBoolean(db);
180
- if (db) {
181
- this.db_num_active.toBytes(dout);
182
- this.db_num_idle.toBytes(dout);
183
- }
184
-
185
- if (this.netstat == null) {
186
- dout.writeBoolean(false);
187
- } else {
188
- dout.writeBoolean(true);
189
- dout.writeDecimal(this.netstat.est);
190
- dout.writeDecimal(this.netstat.fin_w);
191
- dout.writeDecimal(this.netstat.clo_w);
192
- dout.writeDecimal(this.netstat.tim_w);
193
- }
194
-
195
- dout.writeDecimal(this.proc_fd);
196
- dout.writeFloat(this.tps);
197
- dout.writeDecimal(this.resp_time);
198
-
199
- dout.writeShort(this.apType);
200
-
201
- if (this.websocket == null) {
202
- dout.writeByte(0);
203
- } else {
204
- dout.writeByte(1);
205
- dout.writeDecimal(this.websocket.count);
206
- dout.writeDecimal(this.websocket.in);
207
- dout.writeDecimal(this.websocket.out);
208
- }
209
-
210
- dout.writeDecimal(this.starttime);
211
- dout.writeDecimal(this.pack_dropped);
212
- dout.writeDecimal(this.host_ip);
213
-
214
-
215
- dout.writeDecimal(this.mac_hash);
216
-
217
- if (this.extra == null || this.extra.size() === 0) {
218
- dout.writeByte(0);
219
- } else {
220
- dout.writeByte(1);
221
- dout.writeValue(this.extra);
222
- }
223
- dout.writeInt(this.pid);
224
- var sz = this.active_stat == null ? 0 : this.active_stat.length;
225
- dout.writeByte(sz);
226
- for (var i = 0; i < sz; i++) {
227
- dout.writeShort(this.active_stat[i]);
228
- }
229
- dout.writeDecimal(this.threadpool_activeCount);
230
- dout.writeDecimal(this.threadpool_queueSize);
231
-
232
- write_meter(dout, this.txcaller_oid_meter);
233
- write_meter_sql(dout, this.sql_meter);
234
- write_meter(dout, this.httpc_meter);
235
- write_meter_long(dout, this.txcaller_group_meter);
236
- dout.writeDecimal(0);
237
- write_meter_other(dout, this.txcaller_unknown);
238
-
239
- dout.writeDecimal(this.containerKey);
240
-
241
- dout.writeFloat(this.tx_dbc_time);
242
- dout.writeFloat(this.tx_sql_time);
243
- dout.writeFloat(this.tx_httpc_time);
244
-
245
- dout.writeDecimal(this.apdex_satisfied);
246
- dout.writeDecimal(this.apdex_tolerated);
247
-
248
- dout.writeFloat(this.arrival_rate);
249
-
250
- dout.writeDecimal(this.gc_oldgen_count);
251
- dout.writeByte(this.version);
252
- dout.writeDecimal(this.heap_max);
253
-
254
- dout.writeDecimal(this.proc_fd_max);
255
- dout.writeFloat(this.metering);
256
-
257
- dout.writeDecimal(this.apdex_total);
258
-
259
- o.writeBlob(dout.toByteArray());
260
- };
261
-
262
- function write_meter_other(dout, meter) {
263
- if (meter != null && meter.count > 0) {
264
- dout.writeByte(2);
265
- dout.writeDecimal(meter.time);
266
- dout.writeDecimal(meter.count);
267
- dout.writeDecimal(meter.error);
268
- dout.writeDecimal(meter.actx);
269
- } else {
270
- dout.writeByte(0);
271
- }
272
- }
273
-
274
- function write_meter(dout, meter) {
275
- if (meter == null || meter.size() == 0) {
276
- dout.writeDecimal(0);
277
- } else {
278
- dout.writeByte(9);
279
- dout.writeDecimal(meter.size());
280
- var en = meter.entries();
281
- while (en.hasMoreElements()) {
282
- var ent = en.nextElement();
283
- var m = ent.getValue();
284
-
285
- dout.writeInt(ent.getKey());
286
- dout.writeDecimal(m.time);
287
- dout.writeDecimal(m.count);
288
- dout.writeDecimal(m.error);
289
- dout.writeDecimal(m.actx);
290
- }
291
- }
292
- }
293
- function write_meter_sql(dout, meter) {
294
- if (meter == null || meter.size() == 0) {
295
- dout.writeDecimal(0);
296
- } else {
297
- dout.writeByte(9);
298
- dout.writeDecimal(meter.size());
299
- var en = meter.entries();
300
- while (en.hasMoreElements()) {
301
- var ent = en.nextElement();
302
- var m = ent.getValue();
303
-
304
- dout.writeInt(ent.getKey());
305
- dout.writeDecimal(m.time);
306
- dout.writeDecimal(m.count);
307
- dout.writeDecimal(m.error);
308
- dout.writeDecimal(m.actx); //m.actx
309
- dout.writeDecimal(m.fetch_count);
310
- dout.writeDecimal(m.fetch_time);
311
- }
312
- }
313
- }
314
-
315
- function write_meter_long(dout, meter) {
316
- if (meter == null || meter.size() == 0) {
317
- dout.writeDecimal(0);
318
- } else {
319
- dout.writeByte(9);
320
- dout.writeDecimal(meter.size());
321
- var en = meter.entries();
322
- while (en.hasMoreElements()) {
323
- var ent = en.nextElement();
324
- var m = ent.getValue();
325
-
326
- var pkind = ent.getKey();
327
- dout.writeDecimal(pkind.pcode);
328
- dout.writeDecimal(pkind.okind);
329
- dout.writeDecimal(m.time);
330
- dout.writeDecimal(m.count);
331
- dout.writeDecimal(m.error);
332
- dout.writeDecimal(m.actx);
333
- }
334
- }
335
- }
336
- CounterPack.prototype.read = function (io) {
337
- Pack.prototype.read.call(this, io);
338
-
339
- var din = new DataInputX(io.readBlob());
340
- this.duration = din.readDecNumber();
341
- this.cputime = din.readDecNumber();
342
- this.heap_tot = din.readDecNumber();
343
- this.heap_use = din.readDecNumber();
344
- this.heap_perm = din.readDecNumber();
345
- this.heap_pending_finalization = din.readDecNumber();
346
-
347
- this.gc_count = din.readDecNumber();
348
- this.gc_time = din.readDecNumber();
349
-
350
- this.service_count = din.readDecNumber();
351
- this.service_error = din.readDecNumber();
352
- this.service_time = din.readDecNumber();
353
-
354
- this.sql_count = din.readDecNumber();
355
- this.sql_error = din.readDecNumber();
356
- this.sql_time = din.readDecNumber();
357
- this.sql_fetch_count = din.readDecNumber();
358
- this.sql_fetch_time = din.readDecNumber();
359
-
360
- this.httpc_count = din.readDecNumber();
361
- this.httpc_error = din.readDecNumber();
362
- this.httpc_time = din.readDecNumber();
363
-
364
- this.active_tx_count = din.readDecNumber();
365
- this.active_tx_slice = CounterPack.readShortArray(din);
366
-
367
- this.cpu = din.readFloat();
368
- this.cpu_sys = din.readFloat();
369
- this.cpu_usr = din.readFloat();
370
- this.cpu_wait = din.readFloat();
371
- this.cpu_steal = din.readFloat();
372
- this.cpu_irq = din.readFloat();
373
-
374
- this.cpu_proc = din.readFloat();
375
- this.cpu_cores = din.readDecimal();
376
-
377
- this.mem = din.readFloat();
378
- this.swap = din.readFloat();
379
- this.disk = din.readFloat();
380
-
381
- this.thread_total_started = din.readDecimal();
382
- this.thread_count = din.readDecimal();
383
- this.thread_daemon = din.readDecimal();
384
- this.thread_peak_count = din.readDecimal();
385
-
386
- if (din.readBoolean() == true) {
387
- this.db_num_active = new IntIntMap();
388
- this.db_num_idle = new IntIntMap();
389
- this.db_num_active.toObject(din);
390
- this.db_num_idle.toObject(din);
391
- }
392
- if (din.readBoolean() == true) {
393
- this.netstat = new NETSTAT();
394
- this.netstat.est = din.readDecNumber();
395
- this.netstat.fin_w = din.readDecNumber();
396
- this.netstat.clo_w = din.readDecNumber();
397
- this.netstat.tim_w = din.readDecNumber();
398
- }
399
-
400
- this.proc_fd = din.readDecNumber();
401
- this.tps = din.readFloat();
402
- this.resp_time = din.readDecNumber();
403
-
404
- this.apType = din.readShort();
405
-
406
- if (din.readBoolean() === true) {
407
- this.websocket = new WEBSOCKET();
408
- this.websocket.count = din.readDecNumber();
409
- this.websocket.in = din.readDecNumber();
410
- this.websocket.out = din.readDecNumber();
411
- }
412
-
413
- this.starttime = din.readDecNumber();
414
- this.pack_dropped = din.readDecNumber();
415
- this.host_ip = din.readDecNumber();
416
-
417
- this.mac_hash = din.readDecNumber();
418
-
419
- if (din.readByte() === 1) {
420
- this.extra = din.readValue();
421
- }
422
-
423
- this.pid = din.readInt();
424
-
425
- var sz = din.readByte();
426
- this.active_stat = new Array(sz);
427
- for (var i = 0; i < sz; i++) {
428
- this.active_stat[i] = din.readShort();
429
- }
430
- this.threadpool_activeCount = din.readDecNumber();
431
- this.threadpool_queueSize = din.readDecNumber();
432
-
433
- this.txcaller_oid_meter = read_meter(din);
434
- this.sql_meter = read_meter_sql(din);
435
- this.httpc_meter = read_meter(din);
436
- this.txcaller_group_meter = read_meter_long(din);
437
- read_meter(din);
438
- this.txcaller_unknown = read_meter_unknown(din);
439
-
440
- if (din.available() > 0) {
441
- this.containerKey = din.readDecimal();
442
- }
443
-
444
- if (din.available() > 0) {
445
- this.tx_dbc_time = din.readFloat();
446
- this.tx_sql_time = din.readFloat();
447
- this.tx_httpc_time = din.readFloat();
448
- }
449
- if (din.available() > 0) {
450
- this.apdex_satisfied = din.readDecimal();
451
- this.apdex_tolerated = din.readDecimal();
452
- }
453
-
454
- if (din.available() > 0) {
455
- this.arrival_rate = din.readFloat();
456
- }
457
- if (din.available() > 0) {
458
- this.gc_oldgen_count = din.readDecimal();
459
- this.version=din.readByte();
460
- this.heap_max=din.readDecimal();
461
- }
462
- if (din.available() > 0) {
463
- this.proc_fd_max = din.readDecimal();
464
- }
465
- if (din.available() > 0) {
466
- this.metering = din.readFloat();
467
- }
468
- if (din.available() > 0) {
469
- this.apdex_total = din.readDecimal();
470
- }
471
-
472
- return this;
473
- };
474
-
475
- function read_meter_unknown(din) {
476
- var ver = din.readByte();
477
- if (ver > 0) {
478
- var time = din.readDecNumber();
479
- var count = din.readDecNumber();
480
- var error = din.readDecNumber();
481
- var actx = 0;
482
- if (ver >= 2) {
483
- actx = din.readDecNumber();
484
- }
485
- return {
486
- time: time,
487
- count: count,
488
- error: error,
489
- actx: actx
490
- };
491
- } else {
492
- return null;
493
- }
494
- }
495
-
496
- function read_meter(din) {
497
- var ver = din.readByte();
498
- if (ver == 0)
499
- return null;
500
- var n;
501
- if (ver <= 8) {
502
- n = din.readDecNumber(ver);
503
- } else {
504
- n = din.readDecNumber();
505
- }
506
- var meter = new IntKeyLinkedMap();
507
- for (var i = 0; i < n; i++) {
508
- var key = din.readInt();
509
- var time = din.readDecNumber();
510
- var count = din.readDecNumber();
511
- var error = din.readDecNumber();
512
- var actx = 0;
513
- if (ver >= 9) {
514
- actx = din.readDecNumber();
515
- }
516
- meter.put(key, {
517
- time: time,
518
- count: count,
519
- error: error,
520
- actx: actx
521
- });
522
- }
523
- return meter;
524
-
525
- }
526
-
527
- function read_meter_long(din) {
528
- var ver = din.readByte();
529
- if (ver == 0)
530
- return null;
531
- var n;
532
- if (ver <= 8) {
533
- n = din.readDecNumber(ver);
534
- } else {
535
- n = din.readDecNumber();
536
- }
537
- var meter = new LinkedMap();
538
- for (var i = 0; i < n; i++) {
539
- var pcode = din.readDecNumber();
540
- var okind = 0;
541
- if (ver >= 9) {
542
- din.readDecNumber();
543
- }
544
- var time = din.readDecNumber();
545
- var count = din.readDecNumber();
546
- var error = din.readDecNumber();
547
- var actx = 0;
548
- if (ver >= 9) {
549
- actx = din.readDecNumber();
550
- }
551
- meter.put({
552
- pcode: pcode,
553
- okind: okind
554
- }, {
555
- time: time,
556
- count: count,
557
- error: error,
558
- actx: actx
559
- });
560
- }
561
- return meter;
562
-
563
- }
564
-
565
- function read_meter_sql(din) {
566
- var ver = din.readByte();
567
- if (ver == 0)
568
- return null;
569
- var n;
570
- if (ver <= 8) {
571
- n = din.readDecNumber(ver);
572
- } else {
573
- n = din.readDecNumber();
574
- }
575
- var meter = new IntKeyLinkedMap();
576
- for (var i = 0; i < n; i++) {
577
- var sql = din.readInt();
578
- var time = din.readDecNumber();
579
- var count = din.readDecNumber();
580
- var error = din.readDecNumber();
581
- var actx = 0;
582
- if (ver >= 9) {
583
- actx = din.readDecNumber();
584
- }
585
- var fetch_count = din.readDecNumber();
586
- var fetch_time = din.readDecNumber();
587
- meter.put(sql, {
588
- time: time,
589
- count: count,
590
- error: error,
591
- actx: actx,
592
- fetch_count: fetch_count,
593
- fetch_time: fetch_time
594
- });
595
- }
596
- return meter;
597
-
598
- }
599
- CounterPack.writeShortArray = function (out, v) {
600
- if (v == null) {
601
- out.writeByte(0);
602
- } else {
603
- out.writeByte(v.length);
604
- for (var i = 0; i < v.length; i++) {
605
- out.writeShort(v[i]);
606
- }
607
- }
608
- };
609
- CounterPack.readShortArray = function (din) {
610
- var len = din.readByte();
611
- var arr = new Array(len);
612
-
613
- for (var i = 0; i < len; i++) {
614
- arr[i] = din.readShortBytes();
615
- }
616
- return arr;
617
- };
618
- CounterPack.prototype.toString = function () {
619
- var str = "CounterPack" + Pack.prototype.toString.call(this);
620
- str += "[";
621
- var keys = Object.keys(this);
622
- for (var i = 0; i < keys.length; i++) {
623
- if (i != 0) {
624
- str += ", ";
625
- }
626
- str += keys[i];
627
- str += "=";
628
- str += this[keys[i]]
629
- }
630
- str += "]";
631
- return str;
632
- };
633
- CounterPack.prototype.putFloat = function (cid, value) {
634
- if (typeof cid === 'number') {
635
- if (this.extra == null) {
636
- this.extra = new IntMapValue();
637
- }
638
- this.extra.putValue(cid, new FloatValue(value));
639
- }
640
- }
641
- CounterPack.prototype.putInt = function (cid, value) {
642
- if (typeof cid === 'number') {
643
- if (this.extra == null) {
644
- this.extra = new IntMapValue();
645
- }
646
- this.extra.putValue(cid, new IntValue(value));
647
- }
648
- }
649
-
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 Pack = require('./pack'),
8
+ PackEnum = require('./packenum'),
9
+ DataOutputX = require('./../io/data-outputx'),
10
+ DataInputX = require('./../io/data-inputx'),
11
+ IntMapValue = require('./../value/int-map-value'),
12
+ IntValue = require('./../value/int-value'),
13
+ FloatValue = require('./../value/float-value'),
14
+ NETSTAT = require('./netstat'),
15
+ WEBSOCKET = require('./websocket'),
16
+ IntIntMap = require('../util/intint-map'),
17
+ IntKeyLinkedMap = require('../util/intkey-linkedmap'),
18
+ LongKeyLinkedMap = require('../util/longkey-linkedmap'),
19
+ Long = require('long');
20
+
21
+ function CounterPack() {
22
+ Pack.call(this);
23
+ this.duration = 0; // sec
24
+ this.cputime = 0;
25
+
26
+ this.heap_tot = 0;
27
+ this.heap_use = 0;
28
+ this.heap_perm = 0;
29
+ this.heap_pending_finalization = 0;
30
+
31
+ this.gc_count = 0;
32
+ this.gc_time = 0;
33
+
34
+ this.service_count = 0;
35
+ this.service_error = 0;
36
+ this.service_time = 0;
37
+
38
+ this.sql_count = 0;
39
+ this.sql_error = 0;
40
+ this.sql_time = 0;
41
+
42
+ this.sql_fetch_count = 0;
43
+ this.sql_fetch_time = 0;
44
+
45
+ this.httpc_count = 0;
46
+ this.httpc_error = 0;
47
+ this.httpc_time = 0;
48
+
49
+ this.active_tx_count = 0;
50
+ this.active_tx_slice = new Array(3).fill(0);
51
+
52
+ this.cpu = 0;
53
+ this.cpu_sys = 0;
54
+ this.cpu_usr = 0;
55
+ this.cpu_wait = 0;
56
+ this.cpu_steal = 0;
57
+ this.cpu_irq = 0;
58
+
59
+ this.cpu_proc = 0;
60
+ this.cpu_cores = 0;
61
+
62
+ this.mem = 0;
63
+ this.swap = 0;
64
+ this.disk = 0;
65
+
66
+ this.thread_total_started = 0;
67
+ this.thread_count = 0;
68
+ this.thread_daemon = 0;
69
+ this.thread_peak_count = 0;
70
+
71
+ this.starttime = 0;
72
+ this.pack_dropped = 0;
73
+
74
+ this.db_num_active = null;
75
+ this.db_num_idle = null;
76
+ this.netstat = null;
77
+
78
+ this.host_ip = 0;
79
+ this.proc_fd = 0;
80
+ this.tps = 0;
81
+ this.resp_time = 0;
82
+
83
+ this.apType = 2;
84
+ this.websocket = null;
85
+
86
+ /*추가항목들..20180717 */
87
+ this.mac_hash = 0;
88
+ this.extra = null; // IntMapValue
89
+
90
+ this.pid = 0;
91
+ //{"method","sql","httpc", "dbc","socket"};
92
+ this.active_stat = null;
93
+
94
+ this.threadpool_activeCount = 0;
95
+ this.threadpool_queueSize = 0;
96
+
97
+ this.txcaller_oid_meter = null;
98
+ this.sql_meter = null;
99
+ this.httpc_meter = null;
100
+ this.txcaller_group_meter = null;
101
+ this.txcaller_unknown = null;
102
+
103
+ this.containerKey = 0;
104
+
105
+ this.tx_dbc_time = 0;//avg time
106
+ this.tx_sql_time = 0;//avg time
107
+ this.tx_httpc_time = 0;//avg time
108
+
109
+ this.apdex_satisfied = 0;
110
+ this.apdex_tolerated = 0;
111
+ this.apdex_total = 0;
112
+
113
+ this.arrival_rate = 0;
114
+ this.gc_oldgen_count = 0;
115
+ this.version = 2;
116
+ this.heap_max = 0;
117
+
118
+ this.proc_fd_max = 0;
119
+
120
+ this.metering = 0;
121
+ }
122
+ CounterPack.prototype = new Pack();
123
+ CounterPack.prototype.constructor = CounterPack;
124
+ CounterPack.prototype.getPackType = function () {
125
+ return PackEnum.COUNTER_1;
126
+ };
127
+ CounterPack.prototype.write = function (o) {
128
+ Pack.prototype.write.call(this, o);
129
+
130
+ var dout = new DataOutputX();
131
+ dout.writeDecimal(this.duration);
132
+ dout.writeDecimal(this.cputime);
133
+
134
+ dout.writeDecimal(this.heap_tot);
135
+ dout.writeDecimal(this.heap_use);
136
+ dout.writeDecimal(this.heap_perm);
137
+ dout.writeDecimal(this.heap_pending_finalization);
138
+
139
+ dout.writeDecimal(this.gc_count);
140
+ dout.writeDecimal(this.gc_time);
141
+
142
+ dout.writeDecimal(this.service_count);
143
+ dout.writeDecimal(this.service_error);
144
+ dout.writeDecimal(this.service_time);
145
+
146
+ dout.writeDecimal(this.sql_count);
147
+ dout.writeDecimal(this.sql_error);
148
+ dout.writeDecimal(this.sql_time);
149
+ dout.writeDecimal(this.sql_fetch_count);
150
+ dout.writeDecimal(this.sql_fetch_time);
151
+
152
+ dout.writeDecimal(this.httpc_count);
153
+ dout.writeDecimal(this.httpc_error);
154
+ dout.writeDecimal(this.httpc_time);
155
+
156
+ dout.writeDecimal(this.active_tx_count);
157
+ CounterPack.writeShortArray(dout, this.active_tx_slice);
158
+
159
+ dout.writeFloat(this.cpu);
160
+ dout.writeFloat(this.cpu_sys);
161
+ dout.writeFloat(this.cpu_usr);
162
+ dout.writeFloat(this.cpu_wait);
163
+ dout.writeFloat(this.cpu_steal);
164
+ dout.writeFloat(this.cpu_irq);
165
+
166
+ dout.writeFloat(this.cpu_proc);
167
+ dout.writeDecimal(this.cpu_cores);
168
+ dout.writeFloat(this.mem);
169
+ dout.writeFloat(this.swap);
170
+ dout.writeFloat(this.disk);
171
+
172
+ dout.writeDecimal(this.thread_total_started);
173
+ dout.writeDecimal(this.thread_count);
174
+ dout.writeDecimal(this.thread_daemon);
175
+ dout.writeDecimal(this.thread_peak_count);
176
+
177
+
178
+ var db = this.db_num_active != null && this._idle != null;
179
+ dout.writeBoolean(db);
180
+ if (db) {
181
+ this.db_num_active.toBytes(dout);
182
+ this.db_num_idle.toBytes(dout);
183
+ }
184
+
185
+ if (this.netstat == null) {
186
+ dout.writeBoolean(false);
187
+ } else {
188
+ dout.writeBoolean(true);
189
+ dout.writeDecimal(this.netstat.est);
190
+ dout.writeDecimal(this.netstat.fin_w);
191
+ dout.writeDecimal(this.netstat.clo_w);
192
+ dout.writeDecimal(this.netstat.tim_w);
193
+ }
194
+
195
+ dout.writeDecimal(this.proc_fd);
196
+ dout.writeFloat(this.tps);
197
+ dout.writeDecimal(this.resp_time);
198
+
199
+ dout.writeShort(this.apType);
200
+
201
+ if (this.websocket == null) {
202
+ dout.writeByte(0);
203
+ } else {
204
+ dout.writeByte(1);
205
+ dout.writeDecimal(this.websocket.count);
206
+ dout.writeDecimal(this.websocket.in);
207
+ dout.writeDecimal(this.websocket.out);
208
+ }
209
+
210
+ dout.writeDecimal(this.starttime);
211
+ dout.writeDecimal(this.pack_dropped);
212
+ dout.writeDecimal(this.host_ip);
213
+
214
+
215
+ dout.writeDecimal(this.mac_hash);
216
+
217
+ if (this.extra == null || this.extra.size() === 0) {
218
+ dout.writeByte(0);
219
+ } else {
220
+ dout.writeByte(1);
221
+ dout.writeValue(this.extra);
222
+ }
223
+ dout.writeInt(this.pid);
224
+ var sz = this.active_stat == null ? 0 : this.active_stat.length;
225
+ dout.writeByte(sz);
226
+ for (var i = 0; i < sz; i++) {
227
+ dout.writeShort(this.active_stat[i]);
228
+ }
229
+ dout.writeDecimal(this.threadpool_activeCount);
230
+ dout.writeDecimal(this.threadpool_queueSize);
231
+
232
+ write_meter(dout, this.txcaller_oid_meter);
233
+ write_meter_sql(dout, this.sql_meter);
234
+ write_meter(dout, this.httpc_meter);
235
+ write_meter_long(dout, this.txcaller_group_meter);
236
+ dout.writeDecimal(0);
237
+ write_meter_other(dout, this.txcaller_unknown);
238
+
239
+ dout.writeDecimal(this.containerKey);
240
+
241
+ dout.writeFloat(this.tx_dbc_time);
242
+ dout.writeFloat(this.tx_sql_time);
243
+ dout.writeFloat(this.tx_httpc_time);
244
+
245
+ dout.writeDecimal(this.apdex_satisfied);
246
+ dout.writeDecimal(this.apdex_tolerated);
247
+
248
+ dout.writeFloat(this.arrival_rate);
249
+
250
+ dout.writeDecimal(this.gc_oldgen_count);
251
+ dout.writeByte(this.version);
252
+ dout.writeDecimal(this.heap_max);
253
+
254
+ dout.writeDecimal(this.proc_fd_max);
255
+ dout.writeFloat(this.metering);
256
+
257
+ dout.writeDecimal(this.apdex_total);
258
+
259
+ o.writeBlob(dout.toByteArray());
260
+ };
261
+
262
+ function write_meter_other(dout, meter) {
263
+ if (meter != null && meter.count > 0) {
264
+ dout.writeByte(2);
265
+ dout.writeDecimal(meter.time);
266
+ dout.writeDecimal(meter.count);
267
+ dout.writeDecimal(meter.error);
268
+ dout.writeDecimal(meter.actx);
269
+ } else {
270
+ dout.writeByte(0);
271
+ }
272
+ }
273
+
274
+ function write_meter(dout, meter) {
275
+ if (meter == null || meter.size() == 0) {
276
+ dout.writeDecimal(0);
277
+ } else {
278
+ dout.writeByte(9);
279
+ dout.writeDecimal(meter.size());
280
+ var en = meter.entries();
281
+ while (en.hasMoreElements()) {
282
+ var ent = en.nextElement();
283
+ var m = ent.getValue();
284
+
285
+ dout.writeInt(ent.getKey());
286
+ dout.writeDecimal(m.time);
287
+ dout.writeDecimal(m.count);
288
+ dout.writeDecimal(m.error);
289
+ dout.writeDecimal(m.actx);
290
+ }
291
+ }
292
+ }
293
+ function write_meter_sql(dout, meter) {
294
+ if (meter == null || meter.size() == 0) {
295
+ dout.writeDecimal(0);
296
+ } else {
297
+ dout.writeByte(9);
298
+ dout.writeDecimal(meter.size());
299
+ var en = meter.entries();
300
+ while (en.hasMoreElements()) {
301
+ var ent = en.nextElement();
302
+ var m = ent.getValue();
303
+
304
+ dout.writeInt(ent.getKey());
305
+ dout.writeDecimal(m.time);
306
+ dout.writeDecimal(m.count);
307
+ dout.writeDecimal(m.error);
308
+ dout.writeDecimal(m.actx); //m.actx
309
+ dout.writeDecimal(m.fetch_count);
310
+ dout.writeDecimal(m.fetch_time);
311
+ }
312
+ }
313
+ }
314
+
315
+ function write_meter_long(dout, meter) {
316
+ if (meter == null || meter.size() == 0) {
317
+ dout.writeDecimal(0);
318
+ } else {
319
+ dout.writeByte(9);
320
+ dout.writeDecimal(meter.size());
321
+ var en = meter.entries();
322
+ while (en.hasMoreElements()) {
323
+ var ent = en.nextElement();
324
+ var m = ent.getValue();
325
+
326
+ var pkind = ent.getKey();
327
+ dout.writeDecimal(pkind.pcode);
328
+ dout.writeDecimal(pkind.okind);
329
+ dout.writeDecimal(m.time);
330
+ dout.writeDecimal(m.count);
331
+ dout.writeDecimal(m.error);
332
+ dout.writeDecimal(m.actx);
333
+ }
334
+ }
335
+ }
336
+ CounterPack.prototype.read = function (io) {
337
+ Pack.prototype.read.call(this, io);
338
+
339
+ var din = new DataInputX(io.readBlob());
340
+ this.duration = din.readDecNumber();
341
+ this.cputime = din.readDecNumber();
342
+ this.heap_tot = din.readDecNumber();
343
+ this.heap_use = din.readDecNumber();
344
+ this.heap_perm = din.readDecNumber();
345
+ this.heap_pending_finalization = din.readDecNumber();
346
+
347
+ this.gc_count = din.readDecNumber();
348
+ this.gc_time = din.readDecNumber();
349
+
350
+ this.service_count = din.readDecNumber();
351
+ this.service_error = din.readDecNumber();
352
+ this.service_time = din.readDecNumber();
353
+
354
+ this.sql_count = din.readDecNumber();
355
+ this.sql_error = din.readDecNumber();
356
+ this.sql_time = din.readDecNumber();
357
+ this.sql_fetch_count = din.readDecNumber();
358
+ this.sql_fetch_time = din.readDecNumber();
359
+
360
+ this.httpc_count = din.readDecNumber();
361
+ this.httpc_error = din.readDecNumber();
362
+ this.httpc_time = din.readDecNumber();
363
+
364
+ this.active_tx_count = din.readDecNumber();
365
+ this.active_tx_slice = CounterPack.readShortArray(din);
366
+
367
+ this.cpu = din.readFloat();
368
+ this.cpu_sys = din.readFloat();
369
+ this.cpu_usr = din.readFloat();
370
+ this.cpu_wait = din.readFloat();
371
+ this.cpu_steal = din.readFloat();
372
+ this.cpu_irq = din.readFloat();
373
+
374
+ this.cpu_proc = din.readFloat();
375
+ this.cpu_cores = din.readDecimal();
376
+
377
+ this.mem = din.readFloat();
378
+ this.swap = din.readFloat();
379
+ this.disk = din.readFloat();
380
+
381
+ this.thread_total_started = din.readDecimal();
382
+ this.thread_count = din.readDecimal();
383
+ this.thread_daemon = din.readDecimal();
384
+ this.thread_peak_count = din.readDecimal();
385
+
386
+ if (din.readBoolean() == true) {
387
+ this.db_num_active = new IntIntMap();
388
+ this.db_num_idle = new IntIntMap();
389
+ this.db_num_active.toObject(din);
390
+ this.db_num_idle.toObject(din);
391
+ }
392
+ if (din.readBoolean() == true) {
393
+ this.netstat = new NETSTAT();
394
+ this.netstat.est = din.readDecNumber();
395
+ this.netstat.fin_w = din.readDecNumber();
396
+ this.netstat.clo_w = din.readDecNumber();
397
+ this.netstat.tim_w = din.readDecNumber();
398
+ }
399
+
400
+ this.proc_fd = din.readDecNumber();
401
+ this.tps = din.readFloat();
402
+ this.resp_time = din.readDecNumber();
403
+
404
+ this.apType = din.readShort();
405
+
406
+ if (din.readBoolean() === true) {
407
+ this.websocket = new WEBSOCKET();
408
+ this.websocket.count = din.readDecNumber();
409
+ this.websocket.in = din.readDecNumber();
410
+ this.websocket.out = din.readDecNumber();
411
+ }
412
+
413
+ this.starttime = din.readDecNumber();
414
+ this.pack_dropped = din.readDecNumber();
415
+ this.host_ip = din.readDecNumber();
416
+
417
+ this.mac_hash = din.readDecNumber();
418
+
419
+ if (din.readByte() === 1) {
420
+ this.extra = din.readValue();
421
+ }
422
+
423
+ this.pid = din.readInt();
424
+
425
+ var sz = din.readByte();
426
+ this.active_stat = new Array(sz);
427
+ for (var i = 0; i < sz; i++) {
428
+ this.active_stat[i] = din.readShort();
429
+ }
430
+ this.threadpool_activeCount = din.readDecNumber();
431
+ this.threadpool_queueSize = din.readDecNumber();
432
+
433
+ this.txcaller_oid_meter = read_meter(din);
434
+ this.sql_meter = read_meter_sql(din);
435
+ this.httpc_meter = read_meter(din);
436
+ this.txcaller_group_meter = read_meter_long(din);
437
+ read_meter(din);
438
+ this.txcaller_unknown = read_meter_unknown(din);
439
+
440
+ if (din.available() > 0) {
441
+ this.containerKey = din.readDecimal();
442
+ }
443
+
444
+ if (din.available() > 0) {
445
+ this.tx_dbc_time = din.readFloat();
446
+ this.tx_sql_time = din.readFloat();
447
+ this.tx_httpc_time = din.readFloat();
448
+ }
449
+ if (din.available() > 0) {
450
+ this.apdex_satisfied = din.readDecimal();
451
+ this.apdex_tolerated = din.readDecimal();
452
+ }
453
+
454
+ if (din.available() > 0) {
455
+ this.arrival_rate = din.readFloat();
456
+ }
457
+ if (din.available() > 0) {
458
+ this.gc_oldgen_count = din.readDecimal();
459
+ this.version=din.readByte();
460
+ this.heap_max=din.readDecimal();
461
+ }
462
+ if (din.available() > 0) {
463
+ this.proc_fd_max = din.readDecimal();
464
+ }
465
+ if (din.available() > 0) {
466
+ this.metering = din.readFloat();
467
+ }
468
+ if (din.available() > 0) {
469
+ this.apdex_total = din.readDecimal();
470
+ }
471
+
472
+ return this;
473
+ };
474
+
475
+ function read_meter_unknown(din) {
476
+ var ver = din.readByte();
477
+ if (ver > 0) {
478
+ var time = din.readDecNumber();
479
+ var count = din.readDecNumber();
480
+ var error = din.readDecNumber();
481
+ var actx = 0;
482
+ if (ver >= 2) {
483
+ actx = din.readDecNumber();
484
+ }
485
+ return {
486
+ time: time,
487
+ count: count,
488
+ error: error,
489
+ actx: actx
490
+ };
491
+ } else {
492
+ return null;
493
+ }
494
+ }
495
+
496
+ function read_meter(din) {
497
+ var ver = din.readByte();
498
+ if (ver == 0)
499
+ return null;
500
+ var n;
501
+ if (ver <= 8) {
502
+ n = din.readDecNumber(ver);
503
+ } else {
504
+ n = din.readDecNumber();
505
+ }
506
+ var meter = new IntKeyLinkedMap();
507
+ for (var i = 0; i < n; i++) {
508
+ var key = din.readInt();
509
+ var time = din.readDecNumber();
510
+ var count = din.readDecNumber();
511
+ var error = din.readDecNumber();
512
+ var actx = 0;
513
+ if (ver >= 9) {
514
+ actx = din.readDecNumber();
515
+ }
516
+ meter.put(key, {
517
+ time: time,
518
+ count: count,
519
+ error: error,
520
+ actx: actx
521
+ });
522
+ }
523
+ return meter;
524
+
525
+ }
526
+
527
+ function read_meter_long(din) {
528
+ var ver = din.readByte();
529
+ if (ver == 0)
530
+ return null;
531
+ var n;
532
+ if (ver <= 8) {
533
+ n = din.readDecNumber(ver);
534
+ } else {
535
+ n = din.readDecNumber();
536
+ }
537
+ var meter = new LinkedMap();
538
+ for (var i = 0; i < n; i++) {
539
+ var pcode = din.readDecNumber();
540
+ var okind = 0;
541
+ if (ver >= 9) {
542
+ din.readDecNumber();
543
+ }
544
+ var time = din.readDecNumber();
545
+ var count = din.readDecNumber();
546
+ var error = din.readDecNumber();
547
+ var actx = 0;
548
+ if (ver >= 9) {
549
+ actx = din.readDecNumber();
550
+ }
551
+ meter.put({
552
+ pcode: pcode,
553
+ okind: okind
554
+ }, {
555
+ time: time,
556
+ count: count,
557
+ error: error,
558
+ actx: actx
559
+ });
560
+ }
561
+ return meter;
562
+
563
+ }
564
+
565
+ function read_meter_sql(din) {
566
+ var ver = din.readByte();
567
+ if (ver == 0)
568
+ return null;
569
+ var n;
570
+ if (ver <= 8) {
571
+ n = din.readDecNumber(ver);
572
+ } else {
573
+ n = din.readDecNumber();
574
+ }
575
+ var meter = new IntKeyLinkedMap();
576
+ for (var i = 0; i < n; i++) {
577
+ var sql = din.readInt();
578
+ var time = din.readDecNumber();
579
+ var count = din.readDecNumber();
580
+ var error = din.readDecNumber();
581
+ var actx = 0;
582
+ if (ver >= 9) {
583
+ actx = din.readDecNumber();
584
+ }
585
+ var fetch_count = din.readDecNumber();
586
+ var fetch_time = din.readDecNumber();
587
+ meter.put(sql, {
588
+ time: time,
589
+ count: count,
590
+ error: error,
591
+ actx: actx,
592
+ fetch_count: fetch_count,
593
+ fetch_time: fetch_time
594
+ });
595
+ }
596
+ return meter;
597
+
598
+ }
599
+ CounterPack.writeShortArray = function (out, v) {
600
+ if (v == null) {
601
+ out.writeByte(0);
602
+ } else {
603
+ out.writeByte(v.length);
604
+ for (var i = 0; i < v.length; i++) {
605
+ out.writeShort(v[i]);
606
+ }
607
+ }
608
+ };
609
+ CounterPack.readShortArray = function (din) {
610
+ var len = din.readByte();
611
+ var arr = new Array(len);
612
+
613
+ for (var i = 0; i < len; i++) {
614
+ arr[i] = din.readShortBytes();
615
+ }
616
+ return arr;
617
+ };
618
+ CounterPack.prototype.toString = function () {
619
+ var str = "CounterPack" + Pack.prototype.toString.call(this);
620
+ str += "[";
621
+ var keys = Object.keys(this);
622
+ for (var i = 0; i < keys.length; i++) {
623
+ if (i != 0) {
624
+ str += ", ";
625
+ }
626
+ str += keys[i];
627
+ str += "=";
628
+ str += this[keys[i]]
629
+ }
630
+ str += "]";
631
+ return str;
632
+ };
633
+ CounterPack.prototype.putFloat = function (cid, value) {
634
+ if (typeof cid === 'number') {
635
+ if (this.extra == null) {
636
+ this.extra = new IntMapValue();
637
+ }
638
+ this.extra.putValue(cid, new FloatValue(value));
639
+ }
640
+ }
641
+ CounterPack.prototype.putInt = function (cid, value) {
642
+ if (typeof cid === 'number') {
643
+ if (this.extra == null) {
644
+ this.extra = new IntMapValue();
645
+ }
646
+ this.extra.putValue(cid, new IntValue(value));
647
+ }
648
+ }
649
+
650
650
  module.exports = CounterPack;