@qmuse/cloud-client 1.0.7-dev.1 → 1.0.7-dev.2
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 +2 -0
- package/dist/adapters.d.ts +1 -0
- package/dist/adapters.d.ts.map +1 -1
- package/dist/adapters.js +9 -0
- package/dist/adapters.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +66 -36
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/jobs.d.ts +2 -0
- package/dist/jobs.d.ts.map +1 -1
- package/dist/jobs.js +89 -63
- package/dist/jobs.js.map +1 -1
- package/dist/miniapp.d.ts.map +1 -1
- package/dist/miniapp.js +8 -2
- package/dist/miniapp.js.map +1 -1
- package/dist/monitor.d.ts +51 -0
- package/dist/monitor.d.ts.map +1 -0
- package/dist/monitor.js +250 -0
- package/dist/monitor.js.map +1 -0
- package/dist/singleton.d.ts +4 -2
- package/dist/singleton.d.ts.map +1 -1
- package/dist/singleton.js +18 -4
- package/dist/singleton.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/web-monitor.d.ts +6 -0
- package/dist/web-monitor.d.ts.map +1 -0
- package/dist/web-monitor.js +59 -0
- package/dist/web-monitor.js.map +1 -0
- package/dist/web.d.ts.map +1 -1
- package/dist/web.js +4 -2
- package/dist/web.js.map +1 -1
- package/dist/yuyan.d.ts +11 -0
- package/dist/yuyan.d.ts.map +1 -0
- package/dist/yuyan.js +37 -0
- package/dist/yuyan.js.map +1 -0
- package/docs/monitoring.application.json +42 -0
- package/docs/monitoring.md +127 -0
- package/package.json +1 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { CLOUD_MONITOR_CODE } from './monitor.js';
|
|
2
|
+
import { createYuyanCloudReporter } from './yuyan.js';
|
|
3
|
+
const sdkUrl = 'https://gw.alipayobjects.com/os/lib/alipay/yuyan-monitor-sdk/1.0.6/dist/index.umd.min.js';
|
|
4
|
+
let sdk;
|
|
5
|
+
const defaultReporter = createYuyanCloudReporter(async (options) => new (await loadSdk())(options));
|
|
6
|
+
function loadSdk() {
|
|
7
|
+
if (sdk)
|
|
8
|
+
return sdk;
|
|
9
|
+
sdk = new Promise((resolve, reject) => {
|
|
10
|
+
const host = globalThis;
|
|
11
|
+
if (typeof host.YuyanMonitor === 'function') {
|
|
12
|
+
resolve(host.YuyanMonitor);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const script = document.createElement('script');
|
|
16
|
+
const cleanup = () => { clearTimeout(timeout); script.onload = null; script.onerror = null; script.remove(); };
|
|
17
|
+
const timeout = setTimeout(() => { cleanup(); reject(new Error('Yuyan SDK loading timed out')); }, 5000);
|
|
18
|
+
script.async = true;
|
|
19
|
+
script.crossOrigin = 'anonymous';
|
|
20
|
+
script.src = sdkUrl;
|
|
21
|
+
script.onload = () => {
|
|
22
|
+
cleanup();
|
|
23
|
+
if (typeof host.YuyanMonitor === 'function')
|
|
24
|
+
resolve(host.YuyanMonitor);
|
|
25
|
+
else
|
|
26
|
+
reject(new Error('Yuyan SDK is unavailable'));
|
|
27
|
+
};
|
|
28
|
+
script.onerror = () => { cleanup(); reject(new Error('Yuyan SDK loading failed')); };
|
|
29
|
+
document.head.appendChild(script);
|
|
30
|
+
});
|
|
31
|
+
return sdk;
|
|
32
|
+
}
|
|
33
|
+
export function resolveWebMonitoring(monitoring, config) {
|
|
34
|
+
if (monitoring === false)
|
|
35
|
+
return undefined;
|
|
36
|
+
const selected = monitoring ?? { code: CLOUD_MONITOR_CODE };
|
|
37
|
+
let runtime = {};
|
|
38
|
+
let preview = false;
|
|
39
|
+
try {
|
|
40
|
+
runtime = globalThis.__MUSE__ ?? {};
|
|
41
|
+
preview = Boolean(document.querySelector('script[data-qmuse-runtime="config"]'));
|
|
42
|
+
}
|
|
43
|
+
catch { }
|
|
44
|
+
const value = (key) => typeof runtime[key] === 'string' ? runtime[key] : '';
|
|
45
|
+
const runtimeEnv = value('runtimeEnv');
|
|
46
|
+
const platformEnv = value('env');
|
|
47
|
+
const context = {
|
|
48
|
+
appId: value('appId'), releaseId: value('appVersionId'),
|
|
49
|
+
runtimeEnv: preview ? 'preview' : runtimeEnv === 'published' || runtimeEnv === 'preview' ? runtimeEnv
|
|
50
|
+
: platformEnv === 'dev' ? 'preview' : platformEnv === 'prod' ? 'published' : 'unknown',
|
|
51
|
+
...selected.context,
|
|
52
|
+
...(config ? { projectId: config.projectId, functionId: config.functionId } : {}),
|
|
53
|
+
platform: 'web',
|
|
54
|
+
};
|
|
55
|
+
return { ...selected, context,
|
|
56
|
+
report: selected.report ?? defaultReporter,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=web-monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-monitor.js","sourceRoot":"","sources":["../src/web-monitor.ts"],"names":[],"mappings":"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"}
|
package/dist/web.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAEV,kBAAkB,EAGlB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAElE,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CA6BjC;AAID,wBAAgB,sBAAsB,CACpC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC,GAC7C;IACD,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CAChD,CAoBA;AAID,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,QAAQ,EAAE,OAAO,UAAU,CAAC,QAAQ,CAAC;IACrC,eAAe,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC;IACrC,eAAe,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,iBAAiB,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,sBAAsB,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACjD;AAgDD,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,oBAAoB,GACjC,kBAAkB,CAAC,IAAI,CAAC,CAyG1B"}
|
package/dist/web.js
CHANGED
|
@@ -3,9 +3,10 @@ import { createAppBaseAccountCapability, createAppBaseFunctionsCapability, creat
|
|
|
3
3
|
import { QmuseCloudHttpError } from './errors.js';
|
|
4
4
|
import { coordinateWebSessionChanges } from './web-session-coordination.js';
|
|
5
5
|
import { createPreviewDiagnostics } from './preview-diagnostics.js';
|
|
6
|
+
import { resolveWebMonitoring } from './web-monitor.js';
|
|
6
7
|
import { initializeQMuseCloudClient, } from './singleton.js';
|
|
7
8
|
export function initQMuseCloudClient(options) {
|
|
8
|
-
return initializeQMuseCloudClient(options, config => {
|
|
9
|
+
return initializeQMuseCloudClient(options, (config, monitoring) => {
|
|
9
10
|
const session = createWebSessionBridge();
|
|
10
11
|
const sdk = new Client()
|
|
11
12
|
.setEndpoint(config.endpoint)
|
|
@@ -14,6 +15,7 @@ export function initQMuseCloudClient(options) {
|
|
|
14
15
|
const diagnostics = createPreviewDiagnostics();
|
|
15
16
|
const client = createAppBaseWebCloudClient(createAppBaseFunctionsCapability(new Functions(sdk)), {
|
|
16
17
|
functionId: config.functionId,
|
|
18
|
+
...(monitoring ? { monitoring } : {}),
|
|
17
19
|
fileScope: config,
|
|
18
20
|
...(diagnostics ? { onRequestFailure: diagnostics.report } : {}),
|
|
19
21
|
auth: { account: createAppBaseAccountCapability(new Account(sdk)) },
|
|
@@ -28,7 +30,7 @@ export function initQMuseCloudClient(options) {
|
|
|
28
30
|
});
|
|
29
31
|
coordinateWebSessionChanges(config, client.auth);
|
|
30
32
|
return client;
|
|
31
|
-
});
|
|
33
|
+
}, resolveWebMonitoring);
|
|
32
34
|
}
|
|
33
35
|
const FALLBACK_COOKIE_KEY = 'cookieFallback';
|
|
34
36
|
export function createWebSessionBridge(storage) {
|
package/dist/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAChC,2BAA2B,GAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EACL,0BAA0B,GAE3B,MAAM,gBAAgB,CAAC;AAWxB,MAAM,UAAU,oBAAoB,CAClC,OAAoC;IAEpC,OAAO,0BAA0B,CAAC,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"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"}
|
package/dist/yuyan.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type CloudMonitorLog } from './monitor.js';
|
|
2
|
+
export interface YuyanCloudMonitor {
|
|
3
|
+
log(log: CloudMonitorLog): unknown;
|
|
4
|
+
}
|
|
5
|
+
export interface YuyanCloudMonitorOptions {
|
|
6
|
+
yuyanId: string;
|
|
7
|
+
autoCapture: false;
|
|
8
|
+
plugins: never[];
|
|
9
|
+
}
|
|
10
|
+
export declare function createYuyanCloudReporter(factory: (options: YuyanCloudMonitorOptions) => YuyanCloudMonitor | Promise<YuyanCloudMonitor>): (log: CloudMonitorLog) => void;
|
|
11
|
+
//# sourceMappingURL=yuyan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yuyan.d.ts","sourceRoot":"","sources":["../src/yuyan.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAE5E,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,KAAK,CAAC;IACnB,OAAO,EAAE,KAAK,EAAE,CAAC;CAClB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAC7F,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAuBhC"}
|
package/dist/yuyan.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { CLOUD_MONITOR_YUYAN_ID } from './monitor.js';
|
|
2
|
+
export function createYuyanCloudReporter(factory) {
|
|
3
|
+
let instance;
|
|
4
|
+
let loading = false;
|
|
5
|
+
let unavailable = false;
|
|
6
|
+
const pending = [];
|
|
7
|
+
const send = (log) => {
|
|
8
|
+
try {
|
|
9
|
+
void Promise.resolve(instance?.log(log)).catch(() => { });
|
|
10
|
+
}
|
|
11
|
+
catch { }
|
|
12
|
+
};
|
|
13
|
+
return log => {
|
|
14
|
+
if (unavailable)
|
|
15
|
+
return;
|
|
16
|
+
if (instance) {
|
|
17
|
+
send(log);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
pending.push(log);
|
|
21
|
+
if (pending.length > 20)
|
|
22
|
+
pending.shift();
|
|
23
|
+
if (loading)
|
|
24
|
+
return;
|
|
25
|
+
loading = true;
|
|
26
|
+
void Promise.resolve().then(() => factory({
|
|
27
|
+
yuyanId: CLOUD_MONITOR_YUYAN_ID, autoCapture: false, plugins: [],
|
|
28
|
+
})).then(monitor => {
|
|
29
|
+
if (!monitor || typeof monitor.log !== 'function')
|
|
30
|
+
throw new TypeError('A Yuyan monitor instance is required');
|
|
31
|
+
instance = monitor;
|
|
32
|
+
for (const item of pending.splice(0))
|
|
33
|
+
send(item);
|
|
34
|
+
}).catch(() => { unavailable = true; pending.length = 0; });
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=yuyan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yuyan.js","sourceRoot":"","sources":["../src/yuyan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAwB,MAAM,cAAc,CAAC;AAY5E,MAAM,UAAU,wBAAwB,CACtC,OAA8F;IAE9F,IAAI,QAAuC,CAAC;IAC5C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,CAAC,GAAoB,EAAE,EAAE;QACpC,IAAI,CAAC;YAAC,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IAC5E,CAAC,CAAC;IACF,OAAO,GAAG,CAAC,EAAE;QACX,IAAI,WAAW;YAAE,OAAO;QACxB,IAAI,QAAQ,EAAE,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;YAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;YACxC,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;SACjE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACjB,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU;gBAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;YAC/G,QAAQ,GAAG,OAAO,CAAC;YACnB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"status": "created_user_confirmed",
|
|
3
|
+
"yuyanId": "180020010001298467",
|
|
4
|
+
"name": "QMuse 云函数调用监控",
|
|
5
|
+
"code": "9901",
|
|
6
|
+
"configurationPublished": null,
|
|
7
|
+
"description": "区分预览与发布运行时,采集云函数请求耗时、成功率、脱敏出入参、应用与云项目、版本、接口归类、失败阶段及重试关联。",
|
|
8
|
+
"isException": false,
|
|
9
|
+
"captureStack": false,
|
|
10
|
+
"samplingRate": 1,
|
|
11
|
+
"dimensions": {
|
|
12
|
+
"d1": "运行场景 runtimeEnv",
|
|
13
|
+
"d2": "业务应用 appId",
|
|
14
|
+
"d3": "云项目 projectId",
|
|
15
|
+
"d4": "接口归类 routeKey",
|
|
16
|
+
"d5": "结果分类 outcome",
|
|
17
|
+
"d6": "操作类型 operation",
|
|
18
|
+
"d7": "SDK 版本 sdkVersion",
|
|
19
|
+
"d8": "应用版本 releaseId",
|
|
20
|
+
"d9": "运行平台 platform",
|
|
21
|
+
"d10": "失败阶段 failureStage"
|
|
22
|
+
},
|
|
23
|
+
"metrics": {
|
|
24
|
+
"m1": { "name": "请求耗时 durationMs", "aggregation": "average", "unit": "ms" },
|
|
25
|
+
"m2": { "name": "请求成功标志 success", "aggregation": "average", "values": [0, 1] },
|
|
26
|
+
"m3": { "name": "实际执行次数 attemptCount", "aggregation": "average" },
|
|
27
|
+
"m4": { "name": "自动重试次数 retryCount", "aggregation": "sum" },
|
|
28
|
+
"m5": { "name": "重试恢复标志 recoveredByRetry", "aggregation": "sum", "values": [0, 1] }
|
|
29
|
+
},
|
|
30
|
+
"customFields": {
|
|
31
|
+
"c1": "请求上下文、版本化协议、链路标识与采样信息 JSON",
|
|
32
|
+
"c2": "脱敏请求参数与截断标志 JSON",
|
|
33
|
+
"c3": "脱敏响应、HTTP 状态及错误信息 JSON",
|
|
34
|
+
"c4": "逐次执行耗时、重试原因与异步任务状态 JSON"
|
|
35
|
+
},
|
|
36
|
+
"activationRequirements": [
|
|
37
|
+
"确认雨燕监控配置已完成发布(创建成功不等于发布完成)",
|
|
38
|
+
"部署包含本次监控代码的客户端版本",
|
|
39
|
+
"初始化时注入 appId、runtimeEnv 和 releaseId",
|
|
40
|
+
"分别验证预览与发布运行时的实际入库日志"
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# 雨燕云函数调用监控
|
|
2
|
+
|
|
3
|
+
目标雨燕应用为 `180020010001298467`,监控项编码为 `9901`,用户已确认创建成功。
|
|
4
|
+
监控配置是否已发布、日志是否已实际入库仍需单独验收,不能将创建成功视作上报验收通过。
|
|
5
|
+
`monitoring.application.json` 是字段契约与配置状态记录,不是雨燕接口请求。
|
|
6
|
+
|
|
7
|
+
## Web 初始化
|
|
8
|
+
|
|
9
|
+
Web 入口默认开启 `9901` 监控,现有 `initQMuseCloudClient({ config })` 调用不需要改动。
|
|
10
|
+
如需关闭,传入 `monitoring: false`。以下写法用于显式覆盖上下文或提供自有 reporter:
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
import { initQMuseCloudClient } from '@qmuse/cloud-client/web';
|
|
14
|
+
|
|
15
|
+
await initQMuseCloudClient({
|
|
16
|
+
config: { endpoint, projectId, functionId },
|
|
17
|
+
monitoring: {
|
|
18
|
+
code: '9901',
|
|
19
|
+
context: { appId, runtimeEnv: 'published', releaseId },
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`runtimeEnv` 必须描述运行场景,不是云项目的 dev/prod 环境。
|
|
25
|
+
预览初始化传 `preview`,发布初始化传 `published`。无法确定时为 `unknown`,不根据域名或 iframe 推断。
|
|
26
|
+
Web 缺省上下文可从当前页面的 `__MUSE__.appId`、`__MUSE__.appVersionId`、`__MUSE__.runtimeEnv` 读取;
|
|
27
|
+
平台实时预览标识 `script[data-qmuse-runtime="config"]` 可作为预览兜底。
|
|
28
|
+
存量页面还支持平台服务端注入的 `__MUSE__.env`:`dev` 对应预览,`prod` 对应发布运行时。
|
|
29
|
+
此字段来自现有预览/发布注入链路,不读取云项目绑定环境,也不按主机名判断;实时预览标识优先于该存量字段。
|
|
30
|
+
显式 context 优先,实际连接的 `projectId`、`functionId` 和平台字段由 SDK 覆盖,不能通过监控配置伪造。
|
|
31
|
+
上下文未提供时记录缺失字段,不生成假的版本或 trace ID。
|
|
32
|
+
|
|
33
|
+
Web 未传 `report` 时按需异步加载固定版本的官方雨燕 SDK,创建单独实例,不复用宿主的 `yuyanMonitor`,
|
|
34
|
+
关闭自动异常和性能插件。加载地址是 `web-monitor.ts` 中的 `sdkUrl`;部署时需核对 CSP 与网络访问策略。
|
|
35
|
+
不覆盖页面 URL 和标题,Web 端由雨燕 SDK 自动读取当前 `location.href` 和 `document.title`。
|
|
36
|
+
加载等待最多 5 秒,等待队列最多 20 条;失败时丢弃日志,不阻塞云请求。
|
|
37
|
+
如需自托管 SDK 或适配 CSP,使用下面的 reporter 工厂替换 CDN 加载。
|
|
38
|
+
|
|
39
|
+
## 小程序或宿主自带 SDK
|
|
40
|
+
|
|
41
|
+
cloud-client 是公开分发包,不直接依赖内网 npm 包。宿主负责提供官方 SDK 构造函数:
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
import YuyanMonitor from '@alipay/yuyan-monitor-sdk';
|
|
45
|
+
import { createYuyanCloudReporter } from '@qmuse/cloud-client';
|
|
46
|
+
import { initQMuseCloudClient } from '@qmuse/cloud-client/miniapp';
|
|
47
|
+
|
|
48
|
+
const report = createYuyanCloudReporter(options => new YuyanMonitor(options));
|
|
49
|
+
|
|
50
|
+
await initQMuseCloudClient({
|
|
51
|
+
config: { endpoint, projectId, functionId },
|
|
52
|
+
monitoring: {
|
|
53
|
+
code: '9901',
|
|
54
|
+
context: { appId, runtimeEnv: 'published', releaseId },
|
|
55
|
+
report,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
小程序启用监控但未提供 reporter 时,初始化会明确报错,不会静默声称已开启监控。
|
|
61
|
+
需按平台要求配置雨燕采集域名,并在真实容器验证官方 SDK 的发送行为。
|
|
62
|
+
自定义 `report` 必须将日志发送到上述雨燕应用;工厂会固定传入该雨燕 ID。
|
|
63
|
+
重复初始化必须使用相同监控 code、上下文和 reporter 引用,否则单例会拒绝,避免应用/环境串标。
|
|
64
|
+
|
|
65
|
+
## 请求侧接口归类
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
await client.request({
|
|
69
|
+
method: 'GET',
|
|
70
|
+
path: `/api/orders/${orderId}`,
|
|
71
|
+
monitoring: { routeKey: '/api/orders/:id' },
|
|
72
|
+
});
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
`monitoring` 不会发送给业务云函数。`routeKey` 由调用方显式指定,缺省为 `unknown`,不猜测动态路由。
|
|
76
|
+
可附带已有的 `traceId` 作为关联线索;SDK 不会伪造服务端 trace,也不会新增请求头。
|
|
77
|
+
服务端返回的 `x-trace-id`、`x-request-id` 优先用于关联;客户端另外生成单次逻辑请求的 `requestId`。
|
|
78
|
+
鉴权与文件内部云请求也会采集;文件二进制直传 Storage 不属于云函数调用,不在此监控项中统计。
|
|
79
|
+
|
|
80
|
+
## 字段契约(schemaVersion = 1)
|
|
81
|
+
|
|
82
|
+
| 字段 | 含义 |
|
|
83
|
+
| --- | --- |
|
|
84
|
+
| `msg` | 固定为 `qmuse_cloud_request` |
|
|
85
|
+
| `d1` | `runtimeEnv`:preview / published / unknown |
|
|
86
|
+
| `d2` | QMuse 业务 `appId`,不是小程序 appId |
|
|
87
|
+
| `d3` | 当前连接的云 `projectId` |
|
|
88
|
+
| `d4` | `routeKey`,不含 query 的接口归类 |
|
|
89
|
+
| `d5` | outcome:success / http_error / execution_error / transport_error / auth_error / client_error |
|
|
90
|
+
| `d6` | operation:request / auth / file / job_start / job_get |
|
|
91
|
+
| `d7` | cloud-client SDK 版本 |
|
|
92
|
+
| `d8` | 应用发布/构建版本 `releaseId` |
|
|
93
|
+
| `d9` | platform:web / miniapp / unknown |
|
|
94
|
+
| `d10` | 失败阶段:request_prepare / auth_prepare / execution / response;成功为空 |
|
|
95
|
+
| `m1` | 端到端耗时,毫秒,包含鉴权准备及现有重试,不包含最终日志序列化耗时 |
|
|
96
|
+
| `m2` | 最终结果,成功 1、失败 0;聚合采用平均值 |
|
|
97
|
+
| `m3` | 实际执行次数,执行前失败为 0 |
|
|
98
|
+
| `m4` | 自动重试次数 |
|
|
99
|
+
| `m5` | 是否经重试恢复,1 / 0 |
|
|
100
|
+
| `c1` | JSON:schemaVersion、requestId、timestamp、method、path、functionId、traceId、serverRequestId、executionId、deploymentId、sampleRate、samplingPolicy、contextMissingFields |
|
|
101
|
+
| `c2` | JSON:脱敏后的 query/body,附带 redacted/truncated |
|
|
102
|
+
| `c3` | JSON:HTTP 状态、响应 data、错误 code/message,附带 redacted/truncated |
|
|
103
|
+
| `c4` | JSON:每次执行耗时及结果、retryReason、recoveredByRetry,以及异步任务状态 |
|
|
104
|
+
|
|
105
|
+
普通请求沿用现有成功语义:执行 completed、HTTP 2xx、最终正常返回;不解释业务 JSON 中任意 `code`。
|
|
106
|
+
每次逻辑请求只上报一次最终结果。内部鉴权请求按 `operation=auth` 单独记录,统计业务请求时必须过滤 operation。
|
|
107
|
+
同一次自动重试只增加 attempts,不增加逻辑请求数。retryReason 的 `transport_401` 对应现有唯一自动重试策略。
|
|
108
|
+
|
|
109
|
+
异步任务 `job_start` 成功表示受理,`job_get` 成功可以表示成功查询到 pending,不能作为任务执行成功率。
|
|
110
|
+
任务状态在 `c4.job.jobState` 中区分 submitted / pending / completed / failed。
|
|
111
|
+
查询任务时没有原始业务 path,保留为空;通过 operation 与 executionId 关联,不能猜测原路径。
|
|
112
|
+
手动重复调用 get 会产生新的查询事件,不能将查询次数解释为任务量。
|
|
113
|
+
|
|
114
|
+
成功率按 `AVG(m2)` 计算,耗时按 `m1` 分析,统计前按 operation 和运行场景过滤。
|
|
115
|
+
初始客户端采样固定 100%,`sampleRate=1`、`samplingPolicy=all`;雨燕侧同样需配置 100%,否则此采样标记无法反映平台丢弃行为。
|
|
116
|
+
|
|
117
|
+
## 日志安全与边界
|
|
118
|
+
|
|
119
|
+
不采集 headers 或文件二进制,不额外采集用户身份。密码、token、session、cookie、secret、授权码等字段递归屏蔽。
|
|
120
|
+
鉴权接口的入参和返回 data 整体屏蔽。HTTP URL 的 query、fragment 与凭证移除。
|
|
121
|
+
安全序列化不调用 getter 或 toJSON;限制层级、属性数量、数组长度和字符串长度。
|
|
122
|
+
`c2`、`c3` 最多 1800 字符,超限保留有效 JSON 并明确标注,不截断成非法 JSON。
|
|
123
|
+
任意业务出入参仍可能含自定义敏感字段;生产启用前需核对业务数据分类,不能将通用脱敏当作完整隐私保证。
|
|
124
|
+
错误堆栈、原始 SDK 错误对象及其请求配置不会上传。原始业务错误仍原样抛给调用方。
|
|
125
|
+
|
|
126
|
+
监控配置尚未完成平台发布、显式关闭监控、脚本被 CSP 拦截或上报网络不可用时,
|
|
127
|
+
不能声称已完成线上监控验收。验收需分别验证预览与发布应用成功/失败日志及各端的实际发送行为。
|