wobs-js 0.1.2 → 0.1.3

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/README.md CHANGED
@@ -42,6 +42,32 @@ span.setAttribute("key", "value");
42
42
  span.end();
43
43
  ```
44
44
 
45
+ ### 动态配置 userAliUid
46
+ SDK 支持从配置文件 `wobs.config.json` 中动态读取 `userAliUid`,并自动将其附加到埋点数据中。
47
+
48
+ **配置文件路径**(根据平台自动选择):
49
+ - 云手机(Android): `/data/vendor/log/wuying/wobs.config.json`
50
+ - Windows: `C:\ProgramData\wuying\wobs.config.json`
51
+ - Linux/macOS: `/var/log/wuying/wobs.config.json`
52
+
53
+ **配置文件格式**:
54
+ ```json
55
+ {
56
+ "userAliUid": "1234567890"
57
+ }
58
+ ```
59
+
60
+ **功能特性**:
61
+ - SDK 初始化时自动读取配置文件中的 `userAliUid`
62
+ - 使用 `fs.watch()` 实时监控配置文件变化(创建、修改、重命名)
63
+ - 无需重启程序,配置文件的修改会立即生效
64
+ - `userAliUid` 自动附加到所有埋点数据的用户信息字段中
65
+
66
+ **测试示例**:
67
+ ```bash
68
+ node examples/test_userAliUid.js
69
+ ```
70
+
45
71
  ## 依赖
46
72
  * Node.js >= 12.0.0
47
73
 
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Test userAliUid functionality
3
+ * This demo outputs a trackpoint every 3 seconds to monitor userAliUid changes
4
+ * Manually modify wobs.config.json to see real-time updates
5
+ */
6
+
7
+ const { init, shutdown, newTrackPoint } = require('../src/observer');
8
+ const { initUserInfo, getUserInfoSafe } = require('../src/userInfo');
9
+
10
+ console.log('=== userAliUid Test Demo ===');
11
+ console.log('This program will output a trackpoint every 3 seconds.');
12
+ console.log('Manually create or modify wobs.config.json to see userAliUid updates.\n');
13
+ console.log('Config file locations by platform:');
14
+ console.log(' - Android: /data/vendor/log/wuying/wobs.config.json');
15
+ console.log(' - Windows: C:\\ProgramData\\wuying\\wobs.config.json');
16
+ console.log(' - Linux/macOS: /var/log/wuying/wobs.config.json');
17
+ console.log('\nFile format: {"userAliUid": "1234567890"}');
18
+ console.log('\nPress Ctrl+C to stop...\n');
19
+
20
+ // Initialize observer and user info
21
+ init('test_userAliUid', './', './');
22
+ initUserInfo();
23
+
24
+ let counter = 0;
25
+
26
+ // Output trackpoint every 3 seconds
27
+ const intervalId = setInterval(() => {
28
+ counter++;
29
+
30
+ const userInfo = getUserInfoSafe();
31
+ const userAliUid = userInfo.userAliUid || 'not set';
32
+
33
+ console.log(`[${new Date().toISOString()}] Trackpoint #${counter}`);
34
+ console.log(` userAliUid: ${userAliUid}`);
35
+ console.log(` userName: ${userInfo.userName}`);
36
+ console.log(` osType: ${userInfo.osType}`);
37
+ console.log(` instanceID: ${userInfo.instanceID || 'N/A'}`);
38
+
39
+ // Send trackpoint with custom attributes
40
+ newTrackPoint('test_userAliUid_monitoring', {
41
+ counter: counter,
42
+ userAliUid: userAliUid,
43
+ timestamp: new Date().toISOString()
44
+ });
45
+
46
+ console.log(' ✓ Trackpoint sent\n');
47
+ }, 3000);
48
+
49
+ // Handle graceful shutdown
50
+ process.on('SIGINT', () => {
51
+ console.log('\n\nStopping test...');
52
+ clearInterval(intervalId);
53
+ shutdown();
54
+ console.log('Observer shutdown complete. Goodbye!');
55
+ process.exit(0);
56
+ });
57
+
58
+ // Keep the process running
59
+ console.log('Started monitoring... waiting for trackpoints...\n');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wobs-js",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Wuying Observer SDK for JavaScript",
5
5
  "main": "src/observer.js",
6
6
  "scripts": {
package/src/userInfo.js CHANGED
@@ -58,6 +58,7 @@ class UserInfo {
58
58
  this.officeSiteID = '';
59
59
  this.ownerAccountId = '';
60
60
  this.appInstanceID = '';
61
+ this.userAliUid = '';
61
62
  }
62
63
 
63
64
  getNonEmptyValues() {
@@ -379,6 +380,107 @@ function getAliUidFromEnv(userInfo) {
379
380
  }
380
381
  }
381
382
 
383
+ function getConfigPath() {
384
+ /** Get the platform-specific config file path. */
385
+ const platform = os.platform();
386
+
387
+ if (platform === 'android') {
388
+ return '/data/vendor/log/wuying/wobs.config.json';
389
+ } else if (platform === 'win32') {
390
+ return 'C:\\ProgramData\\wuying\\wobs.config.json';
391
+ } else {
392
+ // Linux or other Unix-like systems
393
+ return '/var/log/wuying/wobs.config.json';
394
+ }
395
+ }
396
+
397
+ function readConfigFile(configPath, userInfo) {
398
+ /** Read and parse wobs.config.json file. */
399
+ try {
400
+ const data = fs.readFileSync(configPath, 'utf8');
401
+ const config = JSON.parse(data);
402
+ if (config.userAliUid) {
403
+ userInfo.userAliUid = config.userAliUid;
404
+ return true;
405
+ }
406
+ } catch (error) {
407
+ console.warn(`Failed to read ${configPath}: ${error.message}`);
408
+ }
409
+ return false;
410
+ }
411
+
412
+ function getUserInfoFromConfig(userInfo) {
413
+ /** Get user info from wobs.config.json file. */
414
+ const configPath = getConfigPath();
415
+
416
+ // Read config file if it exists
417
+ if (fs.existsSync(configPath)) {
418
+ readConfigFile(configPath, userInfo);
419
+ }
420
+ }
421
+
422
+ function startConfigFileWatcher() {
423
+ /** Start watching the wobs.config.json file for changes. */
424
+ if (_configWatcher) {
425
+ return; // Already watching
426
+ }
427
+
428
+ const configPath = getConfigPath();
429
+ const configDir = path.dirname(configPath);
430
+ _watchedConfigPath = configPath;
431
+
432
+ // Check if directory exists, if not, try to watch parent or wait
433
+ if (!fs.existsSync(configDir)) {
434
+ console.warn(`Config directory does not exist: ${configDir}`);
435
+ // Optionally: watch parent directory or set up periodic checks
436
+ return;
437
+ }
438
+
439
+ try {
440
+ // Watch the directory containing the config file
441
+ _configWatcher = fs.watch(configDir, (eventType, filename) => {
442
+ // Check if the change is related to our config file
443
+ if (filename && filename === path.basename(configPath)) {
444
+ if (eventType === 'rename' || eventType === 'change') {
445
+ // File created, modified, or renamed
446
+ if (fs.existsSync(configPath)) {
447
+ if (_userInfo) {
448
+ const updated = readConfigFile(configPath, _userInfo);
449
+ if (updated) {
450
+ console.log(`Updated userAliUid from config file: ${_userInfo.userAliUid}`);
451
+ }
452
+ }
453
+ }
454
+ }
455
+ }
456
+ });
457
+
458
+ _configWatcher.on('error', (error) => {
459
+ console.warn(`Config file watcher error: ${error.message}`);
460
+ _configWatcher = null;
461
+ });
462
+
463
+ console.log(`Started watching config file: ${configPath}`);
464
+ } catch (error) {
465
+ console.warn(`Failed to start config file watcher: ${error.message}`);
466
+ _configWatcher = null;
467
+ }
468
+ }
469
+
470
+ function stopConfigFileWatcher() {
471
+ /** Stop watching the wobs.config.json file. */
472
+ if (_configWatcher) {
473
+ try {
474
+ _configWatcher.close();
475
+ console.log(`Stopped watching config file: ${_watchedConfigPath}`);
476
+ } catch (error) {
477
+ console.warn(`Failed to stop config file watcher: ${error.message}`);
478
+ }
479
+ _configWatcher = null;
480
+ _watchedConfigPath = null;
481
+ }
482
+ }
483
+
382
484
  function getUserInfo() {
383
485
  /** Get user information. */
384
486
  const userInfo = new UserInfo();
@@ -401,6 +503,9 @@ function getUserInfo() {
401
503
  getUserInfoFromIni(userInfo);
402
504
  }
403
505
 
506
+ // Read from wobs.config.json (all platforms)
507
+ getUserInfoFromConfig(userInfo);
508
+
404
509
  return userInfo;
405
510
  }
406
511
 
@@ -429,6 +534,7 @@ function appendUserInfo(fields) {
429
534
  addFieldIfNotEmpty('appInstanceId', userInfo.appInstanceID);
430
535
  addFieldIfNotEmpty('dsMode', userInfo.dsMode);
431
536
  addFieldIfNotEmpty('localHostName', userInfo.localHostName);
537
+ addFieldIfNotEmpty('userAliUid', userInfo.userAliUid);
432
538
 
433
539
  // Handle special cases for username
434
540
  if (['administrator', 'root', ''].includes(userInfo.userName)) {
@@ -441,12 +547,16 @@ function appendUserInfo(fields) {
441
547
  // Global variables to simulate C++ static variables
442
548
  let _userInfo = null;
443
549
  let _initialized = false;
550
+ let _configWatcher = null;
551
+ let _watchedConfigPath = null;
444
552
 
445
553
  function initUserInfo() {
446
554
  /** Initialize user info. */
447
555
  if (!_initialized) {
448
556
  _userInfo = getUserInfo();
449
557
  _initialized = true;
558
+ // Start watching config file for changes
559
+ startConfigFileWatcher();
450
560
  }
451
561
  }
452
562
 
@@ -471,5 +581,7 @@ module.exports = {
471
581
  updateUserInfo,
472
582
  getUserInfoSafe,
473
583
  getUserInfoFromIni,
474
- UserInfo
584
+ UserInfo,
585
+ startConfigFileWatcher,
586
+ stopConfigFileWatcher
475
587
  };
File without changes
@@ -0,0 +1,50 @@
1
+ {"time":"2026-01-30T14:47:19.614+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":1,"userAliUid":"not set","timestamp":"2026-01-30T06:47:19.613Z"}}
2
+ {"time":"2026-01-30T14:47:22.611+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":2,"userAliUid":"not set","timestamp":"2026-01-30T06:47:22.611Z"}}
3
+ {"time":"2026-01-30T14:47:25.612+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":3,"userAliUid":"not set","timestamp":"2026-01-30T06:47:25.612Z"}}
4
+ {"time":"2026-01-30T14:47:28.612+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":4,"userAliUid":"not set","timestamp":"2026-01-30T06:47:28.612Z"}}
5
+ {"time":"2026-01-30T14:47:31.613+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":5,"userAliUid":"not set","timestamp":"2026-01-30T06:47:31.613Z"}}
6
+ {"time":"2026-01-30T14:47:34.612+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":6,"userAliUid":"not set","timestamp":"2026-01-30T06:47:34.612Z"}}
7
+ {"time":"2026-01-30T14:47:37.613+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":7,"userAliUid":"not set","timestamp":"2026-01-30T06:47:37.613Z"}}
8
+ {"time":"2026-01-30T14:47:40.614+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":8,"userAliUid":"not set","timestamp":"2026-01-30T06:47:40.614Z"}}
9
+ {"time":"2026-01-30T14:47:43.615+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":9,"userAliUid":"not set","timestamp":"2026-01-30T06:47:43.615Z"}}
10
+ {"time":"2026-01-30T14:47:46.616+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":10,"userAliUid":"not set","timestamp":"2026-01-30T06:47:46.616Z"}}
11
+ {"time":"2026-01-30T14:47:49.617+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":11,"userAliUid":"not set","timestamp":"2026-01-30T06:47:49.617Z"}}
12
+ {"time":"2026-01-30T14:47:52.617+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":12,"userAliUid":"not set","timestamp":"2026-01-30T06:47:52.617Z"}}
13
+ {"time":"2026-01-30T14:47:55.619+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":13,"userAliUid":"not set","timestamp":"2026-01-30T06:47:55.619Z"}}
14
+ {"time":"2026-01-30T14:47:58.618+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":14,"userAliUid":"not set","timestamp":"2026-01-30T06:47:58.618Z"}}
15
+ {"time":"2026-01-30T14:48:01.620+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":15,"userAliUid":"not set","timestamp":"2026-01-30T06:48:01.620Z"}}
16
+ {"time":"2026-01-30T14:48:04.621+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":16,"userAliUid":"not set","timestamp":"2026-01-30T06:48:04.621Z"}}
17
+ {"time":"2026-01-30T14:48:07.622+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":17,"userAliUid":"not set","timestamp":"2026-01-30T06:48:07.622Z"}}
18
+ {"time":"2026-01-30T14:48:10.622+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":18,"userAliUid":"not set","timestamp":"2026-01-30T06:48:10.622Z"}}
19
+ {"time":"2026-01-30T14:48:13.624+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":19,"userAliUid":"not set","timestamp":"2026-01-30T06:48:13.624Z"}}
20
+ {"time":"2026-01-30T14:48:16.624+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":20,"userAliUid":"not set","timestamp":"2026-01-30T06:48:16.624Z"}}
21
+ {"time":"2026-01-30T14:48:19.625+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":21,"userAliUid":"not set","timestamp":"2026-01-30T06:48:19.625Z"}}
22
+ {"time":"2026-01-30T14:48:22.627+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":22,"userAliUid":"not set","timestamp":"2026-01-30T06:48:22.627Z"}}
23
+ {"time":"2026-01-30T14:48:25.631+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":23,"userAliUid":"not set","timestamp":"2026-01-30T06:48:25.631Z"}}
24
+ {"time":"2026-01-30T14:48:28.631+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":24,"userAliUid":"not set","timestamp":"2026-01-30T06:48:28.631Z"}}
25
+ {"time":"2026-01-30T14:48:31.633+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":25,"userAliUid":"not set","timestamp":"2026-01-30T06:48:31.633Z"}}
26
+ {"time":"2026-01-30T14:48:34.634+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":26,"userAliUid":"not set","timestamp":"2026-01-30T06:48:34.634Z"}}
27
+ {"time":"2026-01-30T14:48:37.636+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":27,"userAliUid":"not set","timestamp":"2026-01-30T06:48:37.636Z"}}
28
+ {"time":"2026-01-30T14:48:40.636+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":28,"userAliUid":"not set","timestamp":"2026-01-30T06:48:40.636Z"}}
29
+ {"time":"2026-01-30T14:48:43.637+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userName":"panxiangpeng","properties":{"counter":29,"userAliUid":"not set","timestamp":"2026-01-30T06:48:43.637Z"}}
30
+ {"time":"2026-01-30T14:48:46.637+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test","userName":"panxiangpeng","properties":{"counter":30,"userAliUid":"test","timestamp":"2026-01-30T06:48:46.637Z"}}
31
+ {"time":"2026-01-30T14:48:49.639+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test","userName":"panxiangpeng","properties":{"counter":31,"userAliUid":"test","timestamp":"2026-01-30T06:48:49.639Z"}}
32
+ {"time":"2026-01-30T14:48:52.640+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test","userName":"panxiangpeng","properties":{"counter":32,"userAliUid":"test","timestamp":"2026-01-30T06:48:52.640Z"}}
33
+ {"time":"2026-01-30T14:48:55.641+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test","userName":"panxiangpeng","properties":{"counter":33,"userAliUid":"test","timestamp":"2026-01-30T06:48:55.641Z"}}
34
+ {"time":"2026-01-30T14:48:58.643+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test","userName":"panxiangpeng","properties":{"counter":34,"userAliUid":"test","timestamp":"2026-01-30T06:48:58.643Z"}}
35
+ {"time":"2026-01-30T14:49:01.643+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test","userName":"panxiangpeng","properties":{"counter":35,"userAliUid":"test","timestamp":"2026-01-30T06:49:01.643Z"}}
36
+ {"time":"2026-01-30T14:49:04.644+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test","userName":"panxiangpeng","properties":{"counter":36,"userAliUid":"test","timestamp":"2026-01-30T06:49:04.644Z"}}
37
+ {"time":"2026-01-30T14:49:07.644+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test","userName":"panxiangpeng","properties":{"counter":37,"userAliUid":"test","timestamp":"2026-01-30T06:49:07.644Z"}}
38
+ {"time":"2026-01-30T14:49:10.646+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test","userName":"panxiangpeng","properties":{"counter":38,"userAliUid":"test","timestamp":"2026-01-30T06:49:10.646Z"}}
39
+ {"time":"2026-01-30T14:49:13.646+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test","userName":"panxiangpeng","properties":{"counter":39,"userAliUid":"test","timestamp":"2026-01-30T06:49:13.646Z"}}
40
+ {"time":"2026-01-30T14:49:16.648+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test","userName":"panxiangpeng","properties":{"counter":40,"userAliUid":"test","timestamp":"2026-01-30T06:49:16.648Z"}}
41
+ {"time":"2026-01-30T14:49:19.649+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test_second","userName":"panxiangpeng","properties":{"counter":41,"userAliUid":"test_second","timestamp":"2026-01-30T06:49:19.649Z"}}
42
+ {"time":"2026-01-30T14:49:22.649+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test_second","userName":"panxiangpeng","properties":{"counter":42,"userAliUid":"test_second","timestamp":"2026-01-30T06:49:22.649Z"}}
43
+ {"time":"2026-01-30T14:49:25.650+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test_second","userName":"panxiangpeng","properties":{"counter":43,"userAliUid":"test_second","timestamp":"2026-01-30T06:49:25.650Z"}}
44
+ {"time":"2026-01-30T14:49:28.651+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test_second","userName":"panxiangpeng","properties":{"counter":44,"userAliUid":"test_second","timestamp":"2026-01-30T06:49:28.651Z"}}
45
+ {"time":"2026-01-30T14:49:31.652+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test_second","userName":"panxiangpeng","properties":{"counter":45,"userAliUid":"test_second","timestamp":"2026-01-30T06:49:31.652Z"}}
46
+ {"time":"2026-01-30T14:49:34.653+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test_second","userName":"panxiangpeng","properties":{"counter":46,"userAliUid":"test_second","timestamp":"2026-01-30T06:49:34.653Z"}}
47
+ {"time":"2026-01-30T14:49:37.654+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test_second","userName":"panxiangpeng","properties":{"counter":47,"userAliUid":"test_second","timestamp":"2026-01-30T06:49:37.654Z"}}
48
+ {"time":"2026-01-30T14:49:40.655+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test_second","userName":"panxiangpeng","properties":{"counter":48,"userAliUid":"test_second","timestamp":"2026-01-30T06:49:40.655Z"}}
49
+ {"time":"2026-01-30T14:49:43.656+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test_second","userName":"panxiangpeng","properties":{"counter":49,"userAliUid":"test_second","timestamp":"2026-01-30T06:49:43.656Z"}}
50
+ {"time":"2026-01-30T14:49:46.657+0800","eventName":"test_userAliUid_monitoring","module":"test_userAliUid","InstanceID":"i-123","aliUid":"abc","osVersion":"macOS 25.2.0","userAliUid":"test_second","userName":"panxiangpeng","properties":{"counter":50,"userAliUid":"test_second","timestamp":"2026-01-30T06:49:46.657Z"}}