whatap 1.0.2 → 1.0.3-canary.0

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 (198) hide show
  1. package/README.md +77 -33
  2. package/agent/darwin/arm64/whatap_nodejs +0 -0
  3. package/agent/linux/amd64/whatap_nodejs +0 -0
  4. package/agent/linux/arm64/whatap_nodejs +0 -0
  5. package/build.txt +4 -0
  6. package/lib/conf/config-default.js +3 -10
  7. package/lib/conf/configure.js +349 -369
  8. package/lib/conf/license.js +1 -1
  9. package/lib/control/packagectr-helper.js +3 -34
  10. package/lib/core/agent.js +888 -176
  11. package/lib/core/interceptor.js +6 -6
  12. package/lib/core/shimmer.js +36 -82
  13. package/lib/counter/counter-manager.js +8 -79
  14. package/lib/counter/task/activetransaction.js +17 -68
  15. package/lib/io/data-inputx.js +3 -13
  16. package/lib/io/data-outputx.js +206 -268
  17. package/lib/logger.js +6 -6
  18. package/lib/net/security-master.js +20 -139
  19. package/lib/observers/apollo-server-observer.js +27 -33
  20. package/lib/observers/global-observer.js +80 -155
  21. package/lib/observers/http-observer.js +236 -666
  22. package/lib/observers/ioredis-observer.js +294 -0
  23. package/lib/observers/maria-observer.js +362 -204
  24. package/lib/observers/mongodb-observer.js +226 -169
  25. package/lib/observers/mongoose-observer.js +323 -518
  26. package/lib/observers/mssql-observer.js +418 -177
  27. package/lib/observers/mysql-observer.js +449 -342
  28. package/lib/observers/mysql2-observer.js +358 -396
  29. package/lib/observers/oracle-observer.js +384 -559
  30. package/lib/observers/pgsql-observer.js +489 -231
  31. package/lib/observers/prisma-observer.js +92 -303
  32. package/lib/observers/process-observer.js +35 -79
  33. package/lib/observers/redis-observer.js +331 -166
  34. package/lib/observers/socket.io-observer.js +187 -226
  35. package/lib/observers/websocket-observer.js +301 -175
  36. package/lib/pack/counter-pack.js +0 -3
  37. package/lib/pack/log-sink-pack.js +52 -14
  38. package/lib/pack/tagcount-pack.js +4 -4
  39. package/lib/{counter/task → system}/gc-action.js +74 -27
  40. package/lib/trace/trace-context-manager.js +25 -113
  41. package/lib/trace/trace-context.js +7 -21
  42. package/lib/trace/trace-httpc.js +11 -17
  43. package/lib/trace/trace-sql.js +21 -29
  44. package/lib/udp/async_sender.js +119 -0
  45. package/lib/udp/index.js +17 -0
  46. package/lib/udp/packet_enum.js +52 -0
  47. package/lib/udp/packet_queue.js +69 -0
  48. package/lib/udp/packet_type_enum.js +33 -0
  49. package/lib/udp/param_def.js +72 -0
  50. package/lib/udp/udp_session.js +336 -0
  51. package/lib/util/escape-literal-sql.js +5 -5
  52. package/lib/util/hashutil.js +18 -18
  53. package/lib/util/keygen.js +3 -0
  54. package/lib/util/linkedset.js +2 -1
  55. package/lib/util/nodeutil.js +1 -2
  56. package/lib/util/sql-util.js +178 -0
  57. package/lib/util/trace-helper.js +91 -0
  58. package/lib/util/transfer.js +58 -0
  59. package/lib/value/map-value.js +2 -3
  60. package/package.json +5 -9
  61. package/whatap.conf +4 -1
  62. package/lib/conf/conf-sys-mon.js +0 -101
  63. package/lib/control/cmd-config.js +0 -24
  64. package/lib/control/control-handler.js +0 -367
  65. package/lib/core/request-agent.js +0 -27
  66. package/lib/counter/meter/meter-activex.js +0 -67
  67. package/lib/counter/meter/meter-httpc.js +0 -57
  68. package/lib/counter/meter/meter-resource.js +0 -9
  69. package/lib/counter/meter/meter-service.js +0 -168
  70. package/lib/counter/meter/meter-socket.io.js +0 -51
  71. package/lib/counter/meter/meter-sql.js +0 -71
  72. package/lib/counter/meter/meter-users.js +0 -58
  73. package/lib/counter/meter.js +0 -183
  74. package/lib/counter/task/agentinfo.js +0 -107
  75. package/lib/counter/task/gcstat.js +0 -34
  76. package/lib/counter/task/heapmem.js +0 -25
  77. package/lib/counter/task/httpc.js +0 -76
  78. package/lib/counter/task/metering-info.js +0 -125
  79. package/lib/counter/task/proc-cpu.js +0 -29
  80. package/lib/counter/task/realtimeuser.js +0 -31
  81. package/lib/counter/task/res/systemECSTask.js +0 -39
  82. package/lib/counter/task/res/systemKubeTask.js +0 -53
  83. package/lib/counter/task/res/util/awsEcsClientThread.js +0 -218
  84. package/lib/counter/task/res/util/linuxProcStatUtil.js +0 -14
  85. package/lib/counter/task/res-sys-cpu.js +0 -62
  86. package/lib/counter/task/service.js +0 -202
  87. package/lib/counter/task/socketio.js +0 -30
  88. package/lib/counter/task/sql.js +0 -105
  89. package/lib/counter/task/systemperf.js +0 -43
  90. package/lib/data/datapack-sender.js +0 -289
  91. package/lib/data/dataprofile-agent.js +0 -162
  92. package/lib/data/datatext-agent.js +0 -135
  93. package/lib/data/event-level.js +0 -15
  94. package/lib/data/test.js +0 -49
  95. package/lib/data/zipprofile.js +0 -197
  96. package/lib/env/constants.js +0 -21
  97. package/lib/error/error-handler.js +0 -437
  98. package/lib/kube/kube-client.js +0 -144
  99. package/lib/lang/text-types.js +0 -58
  100. package/lib/logsink/line-log-util.js +0 -87
  101. package/lib/logsink/line-log.js +0 -12
  102. package/lib/logsink/log-sender.js +0 -78
  103. package/lib/logsink/log-tracer.js +0 -40
  104. package/lib/logsink/sender-util.js +0 -56
  105. package/lib/logsink/zip/zip-send.js +0 -177
  106. package/lib/net/netflag.js +0 -55
  107. package/lib/net/receiver.js +0 -66
  108. package/lib/net/sender.js +0 -141
  109. package/lib/net/tcp-return.js +0 -18
  110. package/lib/net/tcp-session.js +0 -286
  111. package/lib/net/tcpreq-client-proxy.js +0 -70
  112. package/lib/net/tcprequest-mgr.js +0 -58
  113. package/lib/observers/cluster-observer.js +0 -22
  114. package/lib/observers/express-observer.js +0 -215
  115. package/lib/observers/file-observer.js +0 -184
  116. package/lib/observers/grpc-observer.js +0 -336
  117. package/lib/observers/memcached-observer.js +0 -56
  118. package/lib/observers/mongo-observer.js +0 -317
  119. package/lib/observers/net-observer.js +0 -77
  120. package/lib/observers/promise-observer.js +0 -31
  121. package/lib/observers/schedule-observer.js +0 -67
  122. package/lib/observers/stream-observer.js +0 -19
  123. package/lib/observers/thrift-observer.js +0 -197
  124. package/lib/pack/activestack-pack.js +0 -55
  125. package/lib/pack/apenum.js +0 -8
  126. package/lib/pack/errorsnap-pack.js +0 -69
  127. package/lib/pack/event-pack.js +0 -54
  128. package/lib/pack/hitmap-pack.js +0 -63
  129. package/lib/pack/hitmap-pack1.js +0 -152
  130. package/lib/pack/netstat.js +0 -15
  131. package/lib/pack/otype.js +0 -7
  132. package/lib/pack/profile-pack.js +0 -49
  133. package/lib/pack/realtimeuser-pack.js +0 -41
  134. package/lib/pack/stat-general-pack.js +0 -96
  135. package/lib/pack/staterror-pack.js +0 -120
  136. package/lib/pack/stathttpc-pack.js +0 -66
  137. package/lib/pack/stathttpc-rec.js +0 -78
  138. package/lib/pack/statremote-pack.js +0 -46
  139. package/lib/pack/statservice-pack.js +0 -63
  140. package/lib/pack/statservice-pack1.js +0 -88
  141. package/lib/pack/statservice-rec.js +0 -292
  142. package/lib/pack/statservice-rec_dep.js +0 -151
  143. package/lib/pack/statsql-pack.js +0 -69
  144. package/lib/pack/statsql-rec.js +0 -100
  145. package/lib/pack/statuseragent-pack.js +0 -44
  146. package/lib/pack/tagctr.js +0 -15
  147. package/lib/pack/text-pack.js +0 -50
  148. package/lib/pack/time-count.js +0 -25
  149. package/lib/pack/websocket.js +0 -15
  150. package/lib/pack/zip-pack.js +0 -70
  151. package/lib/pii/pii-item.js +0 -31
  152. package/lib/pii/pii-mask.js +0 -174
  153. package/lib/plugin/plugin-loadermanager.js +0 -57
  154. package/lib/plugin/plugin.js +0 -75
  155. package/lib/service/tx-record.js +0 -332
  156. package/lib/stat/stat-error.js +0 -116
  157. package/lib/stat/stat-httpc.js +0 -98
  158. package/lib/stat/stat-remote-ip.js +0 -46
  159. package/lib/stat/stat-remote-ipurl.js +0 -88
  160. package/lib/stat/stat-sql.js +0 -113
  161. package/lib/stat/stat-tranx.js +0 -58
  162. package/lib/stat/stat-tx-caller.js +0 -160
  163. package/lib/stat/stat-tx-domain.js +0 -111
  164. package/lib/stat/stat-tx-referer.js +0 -112
  165. package/lib/stat/stat-useragent.js +0 -48
  166. package/lib/stat/timingsender.js +0 -76
  167. package/lib/step/activestack-step.js +0 -38
  168. package/lib/step/dbc-step.js +0 -36
  169. package/lib/step/http-stepx.js +0 -67
  170. package/lib/step/message-step.js +0 -40
  171. package/lib/step/method-stepx.js +0 -45
  172. package/lib/step/resultset-step.js +0 -40
  173. package/lib/step/securemsg-step.js +0 -44
  174. package/lib/step/socket-step.js +0 -46
  175. package/lib/step/sql-stepx.js +0 -68
  176. package/lib/step/sqlxtype.js +0 -16
  177. package/lib/step/step.js +0 -66
  178. package/lib/step/stepenum.js +0 -54
  179. package/lib/topology/link.js +0 -63
  180. package/lib/topology/nodeinfo.js +0 -123
  181. package/lib/topology/status-detector.js +0 -111
  182. package/lib/util/anylist.js +0 -103
  183. package/lib/util/cardinality/hyperloglog.js +0 -106
  184. package/lib/util/cardinality/murmurhash.js +0 -31
  185. package/lib/util/cardinality/registerset.js +0 -75
  186. package/lib/util/errordata.js +0 -21
  187. package/lib/util/iputil_x.js +0 -527
  188. package/lib/util/kube-util.js +0 -73
  189. package/lib/util/paramsecurity.js +0 -80
  190. package/lib/util/pre-process.js +0 -13
  191. package/lib/util/process-seq.js +0 -166
  192. package/lib/util/property-util.js +0 -36
  193. package/lib/util/request-queue.js +0 -70
  194. package/lib/util/requestdouble-queue.js +0 -72
  195. package/lib/util/resourceprofile.js +0 -157
  196. package/lib/util/stop-watch.js +0 -30
  197. package/lib/util/system-util.js +0 -10
  198. package/lib/util/userid-util.js +0 -57
package/README.md CHANGED
@@ -1,62 +1,106 @@
1
1
 
2
- [![WhaTap Logo](https://login.whatap.io/static/whatap_logo.png)](http://www.whatap.io/)
2
+ # 🚀 WhaTap Node.js Agent
3
3
 
4
- # Whatap for Node.js
4
+ > **Comprehensive Node.js Application Performance Monitoring (APM) Solution**
5
5
 
6
- Whatap allows for application performance monitoring.
6
+ WhaTap Node.js Agent provides real-time monitoring, tracing, and performance analysis capabilities as a professional APM agent.
7
7
 
8
- Works on Linux(32bit, 64bit), MacOSx(32bit, 64bit), Windows(32bit, 64bit).
8
+ ## 📋 Supported Environment
9
+ - **Platform**: macOS (64bit), Linux (64bit)
10
+ - **Node.js Version**: 17.0.0 or higher
11
+ - **Database**: MySQL, PostgreSQL, MSSQL, Oracle, MariaDB, MongoDB, Redis
12
+ - **Framework**: Express, Fastify, Socket.IO, WebSocket, GraphQL
9
13
 
10
- *Node.js 지원 버젼: 16.4.0 이상
14
+ You can install WhaTap using npm with the following command:
11
15
 
12
- ![step01](http://apm.whatap.io/images/icon_step01.png)
16
+ ```bash
17
+ $ npm install whatap
18
+ ```
13
19
 
14
- #### Npm install
15
20
 
16
- npm 에서 다음과 같은 명령어를 통해 whatap을 설치 할 수 있습니다.
17
21
 
18
- $ npm install whatap
22
+ ## 📝 Configuration
19
23
 
24
+ Copy the `whatap.conf` file from `node_modules/whatap` to your project root directory and configure it as follows:
20
25
 
26
+ ```ini
27
+ # Essential Settings
28
+ license=XXXXXXXXXXXXXX-XXXXXXXXXXXXXX-XXXXXXXXXXXXXX
29
+ whatap.server.host=XXX.XXX.XXX.XXX
21
30
 
22
- ![step02](http://apm.whatap.io/images/icon_step02.png)
31
+ # Application Identification Settings
32
+ app_name=MyNodeApp # Application name
33
+ app_process_name=node # Process name
34
+ ```
23
35
 
24
- #### License Key
25
36
 
26
- node\_modules/whatap에 있는 whatap.conf파일을 루트 디렉토리로 복사 후
27
- 라이센스 키를 발급받은 후 추가 해 주세요.
28
37
 
29
- whatap.conf 파일은 다음과 같은 내용을 포함합니다.
38
+ ## 🚀 Usage
30
39
 
31
- license=XXXXXXXXXXXXXX-XXXXXXXXXXXXXX-XXXXXXXXXXXXXX
32
- whatap.server.host=XXX.XXX.XXX.XXX
40
+ ### Agent Initialization
33
41
 
42
+ To activate WhaTap monitoring in your Node.js application, add the WhaTap agent initialization code to your application's **top-level entry point file**.
34
43
 
44
+ > **⚠️ Important**: The WhaTap agent must be loaded before all other modules.
35
45
 
36
- ![step03](http://apm.whatap.io/images/icon_step03.png)
46
+ ### Method 1: Using require('whatap') in Code
37
47
 
38
- #### Usage
48
+ ```javascript
49
+ // app.js (or server.js)
50
+ var WhatapAgent = require('whatap').NodeAgent;
39
51
 
40
- 루트 디렉토리에 위치한 Node.js 애플리케이션에서 Whatap 모니터링 기능을 활성화하려면,
41
- 애플리케이션의 진입점 파일에 Whatap 에이전트를 초기화하는 코드를 추가해야 합니다.
52
+ // Import other modules after
53
+ const express = require('express');
54
+ const app = express();
42
55
 
43
- Node.js 애플리케이션에 Whatap 모니터링을 적용하는 방법은 모듈 시스템의 종류(CommonJS 또는 ECMAScript Modules, ESM)에 따라 약간 다릅니다. 아래에서는 두 가지 모듈 시스템에 대해 Whatap 에이전트를 초기화하고 사용하는 방법을 설명합니다.
56
+ // Application logic...
57
+ ```
44
58
 
59
+ Run with:
60
+ ```bash
61
+ node app.js
62
+ ```
45
63
 
46
- #### CommonJS 모듈 시스템 사용
47
- Whatap 에이전트를 CommonJS 방식으로 가져오고 초기화하려면, 다음 코드를 애플리케이션의 진입점 파일에 추가하세요:
48
-
49
- var WhatapAgent = require('whatap').NodeAgent;
64
+ ### Method 2: Using -r flag (without code modification)
50
65
 
51
- #### ECMAScript 모듈(ESM) 시스템 사용
52
- ESM 방식으로 Whatap 에이전트를 가져오고 사용하려면, 다음과 같이 코드를 작성하세요:
66
+ If you prefer not to modify your application code, you can use the `-r` flag:
53
67
 
54
- import WhatapAgent from 'whatap';
55
- WhatapAgent.NodeAgent;
68
+ ```bash
69
+ node -r whatap app.js
70
+ ```
56
71
 
57
- ![step04](http://apm.whatap.io/images/icon_step04.png)
72
+ ### ECMAScript Module (ESM) System
58
73
 
59
- #### Restart
74
+ ```javascript
75
+ // app.js (or server.js)
76
+ import WhatapAgent from 'whatap';
77
+ WhatapAgent.NodeAgent;
78
+
79
+ // Import other modules after
80
+ import express from 'express';
81
+ const app = express();
82
+
83
+ // Application logic...
84
+ ```
85
+
86
+ ## ✅ Run Application
87
+
88
+ Once the agent configuration is complete, restart your application to begin monitoring:
89
+
90
+ ```bash
91
+ # Direct Node.js execution
92
+ node app.js
93
+
94
+ # Using npm scripts
95
+ npm start
96
+ ```
97
+
98
+ ### Monitoring Dashboard
99
+
100
+ Once your application is running, you can view the following information in the WhaTap console:
101
+
102
+ - 🔍 **Real-time Transactions**: HTTP requests, database query tracking
103
+ - 📊 **Performance Metrics**: CPU, memory, GC information
104
+ - 🚨 **Error Monitoring**: Application error and exception tracking
105
+ - 📈 **Statistical Analysis**: Response time and throughput statistics
60
106
 
61
- 어플리케이션 서버가 실행되면 애플리케이션의 모니터링 정보를 수집하기
62
- 시작합니다.
Binary file
Binary file
Binary file
package/build.txt ADDED
@@ -0,0 +1,4 @@
1
+ app = 'NodeJS'
2
+ name = 'whatap_nodejs'
3
+ version = 'dev1.0.5'
4
+ build_date = '20250923'
@@ -216,7 +216,9 @@ var ConfigDefault = {
216
216
 
217
217
  "_trace_mtrace_poid_key": str("mtrace_poid_key", "x-wtap-po"),
218
218
  "_trace_mtrace_caller_key": str("mtrace_caller_key","x-wtap-mst"),
219
+ "_trace_mtrace_callee_key": str("mtrace_callee_key","x-wtap-tx"),
219
220
  "_trace_mtrace_spec_key1": str("mtrace_spec_key", "x-wtap-sp1"),
221
+ "_trace_mtrace_ip": str("mtrace_ip", "x-wtap-ip"),
220
222
 
221
223
  // add apdex 2020.11.13
222
224
  "apdex_time_t": num('apdex_time_t', 1200),
@@ -276,16 +278,7 @@ var ConfigDefault = {
276
278
  "prisma_read_func_name": str("prisma_read_func_name", "read"),
277
279
  "prisma_database_url_name": str("prisma_database_url_name", "DATABASE_URL"),
278
280
 
279
- "metering_tagcount_enabled": bool("metering_tagcount_enabled", false),
280
- "profile_redis_param_enabled": bool("profile_redis_param_enabled", false),
281
- "profile_mongodb_param_enabled": bool("profile_mongodb_param_enabled", false),
282
-
283
- "trace_mtrace_traceparent_key": str("trace_mtrace_traceparent_key", "traceparent"),
284
- "txtext_txname_enabled": bool("txtext_txname_enabled", true),
285
- "ignore_env_variable_set": str("ignore_env_variable_set", ""),
286
- "profile_httpc_start_step_enabled": bool("profile_httpc_start_step_enabled", false),
287
- "perfx_nodejs_gc_enabled": bool("perfx_nodejs_gc_enabled", true)
288
-
281
+ "metering_tagcount_enabled": bool("metering_tagcount_enabled", false)
289
282
  };
290
283
 
291
284
  ConfigDefault._hook_method_ignore_prefix = ConfigDefault.hook_method_ignore_prefixes.split(',');