bfi-cli 0.1.65 → 0.1.68
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/dist/cli.mjs +33 -11
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -8216,7 +8216,8 @@ async function runYmc(args, globalOpts) {
|
|
|
8216
8216
|
}
|
|
8217
8217
|
emit(await api.call("trace", {
|
|
8218
8218
|
trace_id: id,
|
|
8219
|
-
...requireEnv(rest)
|
|
8219
|
+
...requireEnv(rest),
|
|
8220
|
+
...opt(rest, "--ts") ? { ts: Number(opt(rest, "--ts")) } : {}
|
|
8220
8221
|
}), jsonMode, (data) => {
|
|
8221
8222
|
const d = data;
|
|
8222
8223
|
const lines = [];
|
|
@@ -8254,7 +8255,8 @@ async function runYmc(args, globalOpts) {
|
|
|
8254
8255
|
}
|
|
8255
8256
|
emit(await api.call("chain", {
|
|
8256
8257
|
trace_id: id,
|
|
8257
|
-
...requireEnv(rest)
|
|
8258
|
+
...requireEnv(rest),
|
|
8259
|
+
...opt(rest, "--ts") ? { ts: Number(opt(rest, "--ts")) } : {}
|
|
8258
8260
|
}), jsonMode, (data) => {
|
|
8259
8261
|
const d = data;
|
|
8260
8262
|
return `✓ 链路查询: ts=${d.ts}(${d.ts_source})chain=${d.warning_chain ? "有" : "无"}`;
|
|
@@ -8277,7 +8279,21 @@ async function runYmc(args, globalOpts) {
|
|
|
8277
8279
|
...opt(rest, "--days") ? { days: Number(opt(rest, "--days")) } : {},
|
|
8278
8280
|
...opt(rest, "--line") ? { line: Number(opt(rest, "--line")) } : {}
|
|
8279
8281
|
};
|
|
8280
|
-
emit(await api.call("sls/raw", body), jsonMode,
|
|
8282
|
+
emit(await api.call("sls/raw", body), jsonMode, (data) => {
|
|
8283
|
+
const d = data;
|
|
8284
|
+
const rows = Array.isArray(d) ? d : d.rows ?? d.data ?? [];
|
|
8285
|
+
const n = rows.length;
|
|
8286
|
+
if (!n) return "✓ SLS 原始查询: 0 行";
|
|
8287
|
+
const times = rows.map((x) => Number(x.__time__)).filter(Boolean);
|
|
8288
|
+
const fmt = (t) => (/* @__PURE__ */ new Date(t * 1e3)).toLocaleString("zh-CN", { hour12: false });
|
|
8289
|
+
const span = times.length ? `时间范围 ${fmt(Math.min(...times))} ~ ${fmt(Math.max(...times))}` : "";
|
|
8290
|
+
const keys = Object.keys(rows[0]).slice(0, 8).join(",");
|
|
8291
|
+
return [
|
|
8292
|
+
`✓ SLS 原始查询: ${n} 行 ${span}`,
|
|
8293
|
+
`字段: ${keys}`,
|
|
8294
|
+
`样本: ${JSON.stringify(rows[0]).slice(0, 200)}`
|
|
8295
|
+
].join("\n");
|
|
8296
|
+
});
|
|
8281
8297
|
break;
|
|
8282
8298
|
}
|
|
8283
8299
|
case "sls-grep": {
|
|
@@ -8307,7 +8323,8 @@ async function runYmc(args, globalOpts) {
|
|
|
8307
8323
|
}
|
|
8308
8324
|
emit(await api.call("sls/logs", {
|
|
8309
8325
|
trace_id: id,
|
|
8310
|
-
...requireEnv(rest)
|
|
8326
|
+
...requireEnv(rest),
|
|
8327
|
+
...opt(rest, "--ts") ? { ts: Number(opt(rest, "--ts")) } : {}
|
|
8311
8328
|
}), jsonMode, rowsSummary("SLS 日志"));
|
|
8312
8329
|
break;
|
|
8313
8330
|
}
|
|
@@ -8394,17 +8411,20 @@ async function runYmc(args, globalOpts) {
|
|
|
8394
8411
|
case "url-stats": {
|
|
8395
8412
|
const uri = positionals(rest)[0];
|
|
8396
8413
|
if (!uri) {
|
|
8397
|
-
console.error("用法:bfi ymc url-stats </uri> -e <env> [-t <time>
|
|
8414
|
+
console.error("用法:bfi ymc url-stats </uri> -e <env> [-t <time>] [--app <service_name>]");
|
|
8398
8415
|
process.exit(1);
|
|
8399
8416
|
}
|
|
8400
|
-
|
|
8417
|
+
const body = {
|
|
8401
8418
|
uri,
|
|
8402
8419
|
...requireEnv(rest),
|
|
8403
8420
|
...timeOpts(rest)
|
|
8404
|
-
}
|
|
8421
|
+
};
|
|
8422
|
+
const app = opt(rest, "--app");
|
|
8423
|
+
if (app) body.filters = { service_name: app };
|
|
8424
|
+
emit(await api.call("kibana/stats", body), jsonMode, (data) => {
|
|
8405
8425
|
const d = data;
|
|
8406
8426
|
const a = d.aggs;
|
|
8407
|
-
return `✓ URL
|
|
8427
|
+
return `✓ URL 统计${app ? ` [${app}]` : "(⚠️ 未限定服务,共享路径为全平台混合)"}: QPS=${a.qps} avg=${a.avg_rt?.value ?? "-"} 慢请求Top=${Array.isArray(d.slow_top) ? d.slow_top.length : 0}`;
|
|
8408
8428
|
});
|
|
8409
8429
|
break;
|
|
8410
8430
|
}
|
|
@@ -8416,12 +8436,14 @@ async function runYmc(args, globalOpts) {
|
|
|
8416
8436
|
};
|
|
8417
8437
|
const id = opt(rest, "--trace-id");
|
|
8418
8438
|
const uri = opt(rest, "--uri");
|
|
8439
|
+
const app = opt(rest, "--app");
|
|
8440
|
+
if (app) body.filters = { service_name: app };
|
|
8419
8441
|
if (id) body.trace_id = id;
|
|
8420
8442
|
else if (uri) {
|
|
8421
8443
|
body.uri = uri;
|
|
8422
8444
|
body.fuzzy = !flag(rest, "--exact");
|
|
8423
8445
|
} else {
|
|
8424
|
-
console.error("用法:bfi ymc ingress --trace-id <id> | --uri </path> -e <env> [-t time]");
|
|
8446
|
+
console.error("用法:bfi ymc ingress --trace-id <id> | --uri </path> [-app <service_name>] -e <env> [-t time]");
|
|
8425
8447
|
process.exit(1);
|
|
8426
8448
|
}
|
|
8427
8449
|
emit(await api.call("kibana/search", body), jsonMode, rowsSummary("ingress 日志"));
|
|
@@ -8724,8 +8746,8 @@ bfi ymc — 观测查询(v2 API:YMC/Kibana/SLS/trace)
|
|
|
8724
8746
|
slowcall -t <time> [-e] [--trace-id] [--app] [--method] [--min-cost ms] [--profiler]
|
|
8725
8747
|
exceptions -t <time> [-e] [--app]
|
|
8726
8748
|
alerts -t <time> [-e] [--level error|warn|info]
|
|
8727
|
-
url-stats </uri> -t <time> -e <env>
|
|
8728
|
-
ingress --trace-id <id> | --uri </path> [-t <time>] -e <env> [--exact]
|
|
8749
|
+
url-stats </uri> -t <time> -e <env> [--app <service_name>]
|
|
8750
|
+
ingress --trace-id <id> | --uri </path> [-t <time>] -e <env> [--exact] [--app <service_name>]
|
|
8729
8751
|
dump-list [-t <time>] -e <env> [--app] [--type profiler]
|
|
8730
8752
|
cases <search|show|upload|index> 案例库(KEDB)
|
|
8731
8753
|
wiki search "<kw>" [--source] [--titles] 知识库统一检索(wiki/jira/文库)
|