@p-moon/yue-cli 0.1.6 → 0.1.8

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 (3) hide show
  1. package/README.md +297 -12
  2. package/dist/bin/yue.js +1484 -62
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # yue
2
2
 
3
- CLI tool for [mydb.jdfmgt.com](https://mydb.jdfmgt.com/) and [Digger](https://joywatch.jd.com/digger/techApp/overview) — query databases, execute SQL, and search application logs via opencli's browser session.
3
+ CLI tool for [mydb.jdfmgt.com](https://mydb.jdfmgt.com/), [Digger](https://joywatch.jd.com/digger/techApp/overview), and [Taishan JMQ](https://taishan.jd.com/jmq/application?JMQ_ENV=prod) — query databases, execute SQL, search application logs, and manage JMQ groups & topics via opencli's browser session.
4
4
 
5
5
  ## Install
6
6
 
@@ -39,32 +39,224 @@ yue mydb query --dbName jdinsure_trade_cds --sql 'select 1' --output json
39
39
  yue mydb query --dbName jdinsure_trade_cds --sql 'select * from big_table' --page 2 --limit 50
40
40
  ```
41
41
 
42
- ### Search Digger logs
42
+ ### Digger — 历史日志
43
43
 
44
44
  ```bash
45
45
  # List available apps (no --keyWord)
46
46
  yue digger history --appName baoxian
47
47
 
48
48
  # Search logs with keyword match (default)
49
- yue digger history --appName baoxian.mall.trade --keyWord getUserAuthInfo
49
+ yue digger history --appName baoxian-mall-trade --keyWord getUserAuthInfo
50
50
 
51
51
  # Search logs with regex match
52
- yue digger history --appName baoxian.mall.trade --keyWord "getUserAuthInfo.*req" --searchType regular
52
+ yue digger history --appName baoxian-mall-trade --keyWord "getUserAuthInfo.*req" --searchType regular
53
53
 
54
54
  # With time range
55
- yue digger history --appName baoxian.mall.trade --keyWord getUserAuthInfo --startTime "2026-07-01 09:00:00" --endTime "2026-07-01 18:00:00"
55
+ yue digger history --appName baoxian-mall-trade --keyWord getUserAuthInfo \
56
+ --startTime "2026-07-01 09:00:00" --endTime "2026-07-01 18:00:00"
56
57
 
57
58
  # Limit results
58
- yue digger history --appName baoxian.mall.trade --keyWord getUserAuthInfo --limit 20
59
+ yue digger history --appName baoxian-mall-trade --keyWord getUserAuthInfo --limit 20
59
60
 
60
61
  # Filter by log level
61
- yue digger history --appName baoxian.mall.trade --keyWord getUserAuthInfo --logLevel ERROR
62
+ yue digger history --appName baoxian-mall-trade --keyWord getUserAuthInfo --logLevel ERROR
63
+
64
+ # Exclude keywords
65
+ yue digger history --appName baoxian-mall-trade --keyWord Exception --exclude "pfinder,sgm"
62
66
 
63
67
  # JSON output
64
- yue digger history --appName baoxian.mall.trade --keyWord getUserAuthInfo --output json
68
+ yue digger history --appName baoxian-mall-trade --keyWord getUserAuthInfo --output json
69
+ ```
70
+
71
+ ### Digger — 本地日志
72
+
73
+ 通过 `grep` 在应用主机的本地日志文件中搜索,支持多台主机并发搜索并汇总结果。
74
+
75
+ ```bash
76
+ # Basic search (auto-detect main log file)
77
+ yue digger local --appName baoxian-bridgehead-zx --grep error
78
+
79
+ # Specify log file
80
+ yue digger local --appName baoxian-bridgehead-zx \
81
+ --file /export/log/baoxian-bridgehead-zx/catalina.out \
82
+ --grep error
83
+
84
+ # Exclude keywords (comma-separated)
85
+ yue digger local --appName baoxian-bridgehead-zx --grep Exception --grep-v "pfinder,sgm"
86
+
87
+ # Max match rows and JSON output
88
+ yue digger local --appName baoxian-bridgehead-zx --grep error --maxMatchRow 100 --output json
89
+
90
+ # Query specific IP only
91
+ yue digger local --appName baoxian-bridgehead-zx --grep error --ip 100.99.57.237
92
+ ```
93
+
94
+ ### Digger — 实时日志
95
+
96
+ ```bash
97
+ # Stream realtime logs (Ctrl+C to stop)
98
+ yue digger realtime \
99
+ --appName baoxian-bridgehead \
100
+ --ip 100.99.232.222 \
101
+ --file /export/log/jdos_kj_baoxian-bridgehead/catalina.out \
102
+ --maxLines 100
103
+
104
+ # One-shot JSON output (useful for debugging)
105
+ yue digger realtime \
106
+ --appName baoxian-bridgehead \
107
+ --ip 100.99.232.222 \
108
+ --file /export/log/jdos_kj_baoxian-bridgehead/catalina.out \
109
+ --output json
110
+ ```
111
+
112
+ ### Digger — 查询实例 IP
113
+
114
+ ```bash
115
+ # List app instance IPs with Pod name and group
116
+ yue digger ips --appName baoxian-bridgehead-zx
117
+
118
+ # JSON output
119
+ yue digger ips --appName baoxian-bridgehead-zx --output json
120
+ ```
121
+
122
+ ### Digger — 查询日志文件列表
123
+
124
+ ```bash
125
+ # List main log files
126
+ yue digger files --appName baoxian-bridgehead-zx
127
+
128
+ # Include all files (historical archives)
129
+ yue digger files --appName baoxian-bridgehead-zx --containAll
130
+
131
+ # JSON output
132
+ yue digger files --appName baoxian-bridgehead-zx --output json
133
+ ```
134
+
135
+ ### Digger — 查询实例 IP(旧版)
136
+
137
+ ```bash
138
+ # List app instance IPs (default time range: last 1h)
139
+ yue digger app-ips --appName baoxian-bridgehead --productName _jdosApp_
140
+
141
+ # With time range (ms timestamps)
142
+ yue digger app-ips --appName baoxian-bridgehead --productName _jdosApp_ \
143
+ --start 1782891564642 --end 1782895164642
144
+
145
+ # JSON output
146
+ yue digger app-ips --appName baoxian-bridgehead --productName _jdosApp_ --output json
147
+ ```
148
+
149
+ ### JMQ — 搜索 Group
150
+
151
+ 查询泰山 JMQ 的 Group(即原来的应用),支持模糊搜索,不传 `--name` 则查询所有。
152
+
153
+ `--env` 环境说明:
154
+
155
+ | 值 | 站点 | 域名 |
156
+ |----|------|------|
157
+ | `prod` | 中国站生产 | `taishan.jd.com` |
158
+ | `test` | 测试站 | `test.taishan.jd.com` |
159
+ | `th` | 新加坡生产 | `th.taishan.jd.com` |
160
+ | `hl` | 荷兰站生产 | `hl.taishan.jd.com` |
161
+ | `intl` | 国际站生产 | `joybuy.taishan.jd.com` |
162
+ | `intl-test` | 国际测试站 | `test-intl.taishan.jd.com` |
163
+
164
+ ```bash
165
+ # 查询所有 Group(中国站生产)
166
+ yue jmq groups
167
+
168
+ # 按 Group 名称模糊搜索
169
+ yue jmq groups --name baoxian
170
+
171
+ # 测试站
172
+ yue jmq groups --name baoxian --env test
173
+
174
+ # 荷兰站
175
+ yue jmq groups --name baoxian --env hl
176
+
177
+ # 只看某一页
178
+ yue jmq groups --name baoxian --page 2
179
+
180
+ # JSON 输出
181
+ yue jmq groups --name baoxian --output json
182
+ ```
183
+
184
+ ### JMQ — 搜索 Topic
185
+
186
+ 查询泰山 JMQ 的 Topic,支持模糊搜索,不传 `--name` 则查询所有。
187
+
188
+ ```bash
189
+ # 查询所有 Topic(中国站生产)
190
+ yue jmq topics
191
+
192
+ # 按 Topic 名称模糊搜索
193
+ yue jmq topics --name baoxian
194
+
195
+ # 只看我的主题
196
+ yue jmq topics --name baoxian --personal
197
+
198
+ # 测试站
199
+ yue jmq topics --name baoxian --env test
200
+
201
+ # 荷兰站
202
+ yue jmq topics --name baoxian --env hl
203
+
204
+ # 只看某一页
205
+ yue jmq topics --name baoxian --page 2
206
+
207
+ # JSON 输出
208
+ yue jmq topics --name baoxian --output json
65
209
  ```
66
210
 
67
- #### Digger options
211
+ ### JMQ — Group 详情
212
+
213
+ 查看 Group 的运行时详情:消费端和生产线端的 Topic 订阅、积压数、重试数、连接数、出入队数等。
214
+
215
+ ```bash
216
+ # 查看 Group 详情(中国站生产)
217
+ yue jmq group baoxianMessageMall
218
+
219
+ # 测试站
220
+ yue jmq group baoxianMessageMall --env test
221
+
222
+ # 荷兰站
223
+ yue jmq group baoxianMessageMall --env hl
224
+
225
+ # JSON 输出
226
+ yue jmq group baoxianMessageMall --output json
227
+ ```
228
+
229
+ 输出包含两张表:
230
+ - **消费者 (Consumer)**:Topic、连接数、积压数、出队数、重试数、订阅线程、消费状态
231
+ - **生产者 (Producer)**:Topic、连接数、入队数
232
+
233
+ ### JMQ — Topic 详情
234
+
235
+ 查看 Topic 的运行时详情:消费组、生产组、积压、重试、死信消息等。
236
+
237
+ ```bash
238
+ # 查看 Topic 详情(中国站生产)
239
+ yue jmq topic baoxianMessageMall_Order_Submit
240
+
241
+ # 测试站
242
+ yue jmq topic baoxianMessageMall_Order_Submit --env test
243
+
244
+ # 荷兰站
245
+ yue jmq topic baoxianMessageMall_Order_Submit --env hl
246
+
247
+ # JSON 输出
248
+ yue jmq topic baoxianMessageMall_Order_Submit --output json
249
+ ```
250
+
251
+ 输出包含两张表:
252
+ - **消费组 (Consumer)**:Group、连接数、积压数、出队数、重试数、高性能重试、死信消息、消费状态
253
+ - **生产组 (Producer)**:Group、连接数、入队数
254
+
255
+ ---
256
+
257
+ ## Options Reference
258
+
259
+ ### `yue digger history` — 历史日志
68
260
 
69
261
  | Flag | Description | Default |
70
262
  |------|-------------|---------|
@@ -74,10 +266,97 @@ yue digger history --appName baoxian.mall.trade --keyWord getUserAuthInfo --outp
74
266
  | `--startTime <datetime>` | Start time, e.g. `"2026-07-01 09:00:00"` | 1 hour ago |
75
267
  | `--endTime <datetime>` | End time, e.g. `"2026-07-01 18:00:00"` | now |
76
268
  | `--limit <n>` | Max log entries to return | 50 |
77
- | `--logLevel <level>` | Log level filter | `ALL` |
78
- | `--output <fmt>` | `plain` (default) or `json` | `plain` |
269
+ | `--logLevel <level>` | Log level filter (`ALL`/`ERROR`/`WARN`/`INFO`/`DEBUG`) | `ALL` |
270
+ | `--exclude <text>` | Exclude keyword | |
271
+ | `--filePaths <paths>` | Log file path filter, comma-separated | — |
272
+ | `--output <fmt>` | `plain` or `json` | `plain` |
273
+
274
+ > **Note:** Without `--keyWord`, it lists matching apps with usage hints.
79
275
 
80
- > **Note:** `--appName` accepts both dot notation (`baoxian.mall.trade`) and hyphen notation (`baoxian-mall-trade`). Without `--keyWord`, it lists matching apps with usage hints.
276
+ ### `yue digger local` 本地日志
277
+
278
+ | Flag | Description | Default |
279
+ |------|-------------|---------|
280
+ | `--appName <name>` | App name | — |
281
+ | `--file <path>` | Log file path; auto-detects if omitted | auto |
282
+ | `--grep <keyword>` | Grep keyword (≥3 chars) | — |
283
+ | `--grep-v <keywords>` | Exclude keywords (comma-separated) | — |
284
+ | `--maxMatchRow <n>` | Max matching lines per host | 50 |
285
+ | `--lineOffsetBefore <n>` | Context lines before match | 0 |
286
+ | `--lineOffsetAfter <n>` | Context lines after match | 0 |
287
+ | `--searchScope <scope>` | Search scope (e.g. `100M`, `200M`) | `100M` |
288
+ | `--ip <ip>` | Query specific IP only (default: all hosts) | — |
289
+ | `--output <fmt>` | `plain` or `json` | `plain` |
290
+
291
+ ### `yue digger realtime` — 实时日志
292
+
293
+ | Flag | Description | Default |
294
+ |------|-------------|---------|
295
+ | `--appName <name>` | App name | — |
296
+ | `--ip <ip>` | Instance IP | — |
297
+ | `--file <path>` | Log file path | — |
298
+ | `--maxLines <n>` | Max lines to fetch | 100 |
299
+ | `--output <fmt>` | `plain` (streaming) or `json` | `plain` |
300
+
301
+ ### `yue digger ips` — 实例 IP 列表
302
+
303
+ | Flag | Description | Default |
304
+ |------|-------------|---------|
305
+ | `--appName <name>` | App name | — |
306
+ | `--output <fmt>` | `table` or `json` | `table` |
307
+
308
+ ### `yue digger files` — 日志文件列表
309
+
310
+ | Flag | Description | Default |
311
+ |------|-------------|---------|
312
+ | `--appName <name>` | App name | — |
313
+ | `--containAll` | Include all files (historical archives) | false |
314
+ | `--output <fmt>` | `list` or `json` | `list` |
315
+
316
+ ### `yue digger app-ips` — 实例 IP 列表(旧版)
317
+
318
+ | Flag | Description | Default |
319
+ |------|-------------|---------|
320
+ | `--appName <name>` | Instance name (appName) | — |
321
+ | `--productName <name>` | Product name | `_jdosApp_` |
322
+ | `--start <ms>` | Start time (ms timestamp) | now - 1h |
323
+ | `--end <ms>` | End time (ms timestamp) | now |
324
+ | `--output <fmt>` | `table` or `json` | `table` |
325
+
326
+ ### `yue jmq groups` — JMQ Group 搜索
327
+
328
+ | Flag | Description | Default |
329
+ |------|-------------|---------|
330
+ | `--name <keyword>` | Group 名称关键字(模糊搜索),不传则查询所有 | — |
331
+ | `--env <env>` | 环境:`prod` / `test` / `th` / `hl` / `intl` / `intl-test`(见上方环境说明) | `prod` |
332
+ | `--page <n>` | 页码(不指定则返回全部) | 全部 |
333
+ | `--output <fmt>` | `table` 或 `json` | `table` |
334
+
335
+ ### `yue jmq topics` — JMQ Topic 搜索
336
+
337
+ | Flag | Description | Default |
338
+ |------|-------------|---------|
339
+ | `--name <keyword>` | Topic 名称关键字(模糊搜索),不传则查询所有 | — |
340
+ | `--env <env>` | 环境:`prod` / `test` / `th` / `hl` / `intl` / `intl-test`(见上方环境说明) | `prod` |
341
+ | `--personal` | 只看我的主题 | false |
342
+ | `--page <n>` | 页码(不指定则返回全部) | 全部 |
343
+ | `--output <fmt>` | `table` 或 `json` | `table` |
344
+
345
+ ### `yue jmq group` — JMQ Group 详情
346
+
347
+ | Flag | Description | Default |
348
+ |------|-------------|---------|
349
+ | `<groupCode>` | Group 名称(必填,位置参数) | — |
350
+ | `--env <env>` | 环境:`prod` / `test` / `th` / `hl` / `intl` / `intl-test`(见上方环境说明) | `prod` |
351
+ | `--output <fmt>` | `table` 或 `json` | `table` |
352
+
353
+ ### `yue jmq topic` — JMQ Topic 详情
354
+
355
+ | Flag | Description | Default |
356
+ |------|-------------|---------|
357
+ | `<topicCode>` | Topic 名称(必填,位置参数) | — |
358
+ | `--env <env>` | 环境:`prod` / `test` / `th` / `hl` / `intl` / `intl-test`(见上方环境说明) | `prod` |
359
+ | `--output <fmt>` | `table` 或 `json` | `table` |
81
360
 
82
361
  ## Development
83
362
 
@@ -85,6 +364,12 @@ yue digger history --appName baoxian.mall.trade --keyWord getUserAuthInfo --outp
85
364
  # Run directly (no build)
86
365
  npm run dev -- mydb query --dbName jdinsure_trade_cds --sql 'select 1'
87
366
  npm run dev -- digger history --appName baoxian --keyWord getUserAuthInfo
367
+ npm run dev -- digger local --appName baoxian-bridgehead-zx --grep error
368
+ npm run dev -- digger ips --appName baoxian-bridgehead-zx
369
+ npm run dev -- jmq groups --name baoxian
370
+ npm run dev -- jmq topics --name baoxian
371
+ npm run dev -- jmq group baoxianMessageMall
372
+ npm run dev -- jmq topic baoxianMessageMall_Order_Submit
88
373
 
89
374
  # Build
90
375
  npm run build