@sfdxy/anypoint-connect 0.14.0 → 0.16.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 +39 -16
- package/dist/analysis/LogAnalyzer.d.ts +10 -4
- package/dist/analysis/LogAnalyzer.d.ts.map +1 -1
- package/dist/analysis/LogAnalyzer.js +29 -18
- package/dist/analysis/LogAnalyzer.js.map +1 -1
- package/dist/analysis/error-context.d.ts +2 -0
- package/dist/analysis/error-context.d.ts.map +1 -1
- package/dist/analysis/error-context.js +2 -1
- package/dist/analysis/error-context.js.map +1 -1
- package/dist/analysis/error-grouper.js +1 -1
- package/dist/analysis/error-grouper.js.map +1 -1
- package/dist/analysis/filter.d.ts +54 -0
- package/dist/analysis/filter.d.ts.map +1 -0
- package/dist/analysis/filter.js +100 -0
- package/dist/analysis/filter.js.map +1 -0
- package/dist/analysis/{utils.d.ts → normalize.d.ts} +1 -1
- package/dist/analysis/normalize.d.ts.map +1 -0
- package/dist/analysis/{utils.js → normalize.js} +2 -2
- package/dist/analysis/normalize.js.map +1 -0
- package/dist/analysis/parser.d.ts.map +1 -1
- package/dist/analysis/parser.js +45 -17
- package/dist/analysis/parser.js.map +1 -1
- package/dist/analysis/pattern-detector.js +1 -1
- package/dist/analysis/pattern-detector.js.map +1 -1
- package/dist/analysis/stats.d.ts +25 -0
- package/dist/analysis/stats.d.ts.map +1 -1
- package/dist/analysis/stats.js +35 -1
- package/dist/analysis/stats.js.map +1 -1
- package/dist/analysis/summary.d.ts +51 -0
- package/dist/analysis/summary.d.ts.map +1 -0
- package/dist/analysis/summary.js +47 -0
- package/dist/analysis/summary.js.map +1 -0
- package/dist/analysis/types.d.ts +14 -0
- package/dist/analysis/types.d.ts.map +1 -1
- package/dist/api/ApiManagerApi.d.ts +53 -0
- package/dist/api/ApiManagerApi.d.ts.map +1 -1
- package/dist/api/ApiManagerApi.js +53 -2
- package/dist/api/ApiManagerApi.js.map +1 -1
- package/dist/api/CloudHub2Api.d.ts +24 -4
- package/dist/api/CloudHub2Api.d.ts.map +1 -1
- package/dist/api/CloudHub2Api.js +10 -22
- package/dist/api/CloudHub2Api.js.map +1 -1
- package/dist/api/DesignCenterApi.d.ts +0 -20
- package/dist/api/DesignCenterApi.d.ts.map +1 -1
- package/dist/api/DesignCenterApi.js +0 -22
- package/dist/api/DesignCenterApi.js.map +1 -1
- package/dist/api/ExchangeApi.d.ts +15 -0
- package/dist/api/ExchangeApi.d.ts.map +1 -1
- package/dist/api/ExchangeApi.js +51 -0
- package/dist/api/ExchangeApi.js.map +1 -1
- package/dist/api/LogsApi.d.ts +50 -18
- package/dist/api/LogsApi.d.ts.map +1 -1
- package/dist/api/LogsApi.js +69 -98
- package/dist/api/LogsApi.js.map +1 -1
- package/dist/api/MonitoringApi.d.ts +137 -93
- package/dist/api/MonitoringApi.d.ts.map +1 -1
- package/dist/api/MonitoringApi.js +471 -204
- package/dist/api/MonitoringApi.js.map +1 -1
- package/dist/api/RuntimesApi.d.ts +56 -0
- package/dist/api/RuntimesApi.d.ts.map +1 -0
- package/dist/api/RuntimesApi.js +58 -0
- package/dist/api/RuntimesApi.js.map +1 -0
- package/dist/auth/FileStore.js +1 -1
- package/dist/auth/FileStore.js.map +1 -1
- package/dist/cli.js +4 -2
- package/dist/cli.js.map +1 -1
- package/dist/client/AnypointClient.d.ts +3 -1
- package/dist/client/AnypointClient.d.ts.map +1 -1
- package/dist/client/AnypointClient.js +5 -2
- package/dist/client/AnypointClient.js.map +1 -1
- package/dist/client/smoke-test.d.ts +111 -0
- package/dist/client/smoke-test.d.ts.map +1 -0
- package/dist/client/smoke-test.js +275 -0
- package/dist/client/smoke-test.js.map +1 -0
- package/dist/commands/api.d.ts +1 -1
- package/dist/commands/api.d.ts.map +1 -1
- package/dist/commands/api.js +175 -30
- package/dist/commands/api.js.map +1 -1
- package/dist/commands/app-change-cli.d.ts +52 -0
- package/dist/commands/app-change-cli.d.ts.map +1 -0
- package/dist/commands/app-change-cli.js +149 -0
- package/dist/commands/app-change-cli.js.map +1 -0
- package/dist/commands/apps.d.ts +1 -1
- package/dist/commands/apps.d.ts.map +1 -1
- package/dist/commands/apps.js +199 -18
- package/dist/commands/apps.js.map +1 -1
- package/dist/commands/auth.js +1 -1
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/compare.d.ts +8 -0
- package/dist/commands/compare.d.ts.map +1 -0
- package/dist/commands/compare.js +104 -0
- package/dist/commands/compare.js.map +1 -0
- package/dist/commands/config.js +1 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/deploy.d.ts +6 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +89 -91
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/design-center.d.ts +1 -1
- package/dist/commands/design-center.d.ts.map +1 -1
- package/dist/commands/design-center.js +36 -25
- package/dist/commands/design-center.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/logs.d.ts +3 -2
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +142 -17
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/monitor.d.ts +5 -6
- package/dist/commands/monitor.d.ts.map +1 -1
- package/dist/commands/monitor.js +210 -230
- package/dist/commands/monitor.js.map +1 -1
- package/dist/commands/runtimes.d.ts +7 -0
- package/dist/commands/runtimes.d.ts.map +1 -0
- package/dist/commands/runtimes.js +66 -0
- package/dist/commands/runtimes.js.map +1 -0
- package/dist/commands/shared.d.ts +2 -0
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/shared.js +16 -1
- package/dist/commands/shared.js.map +1 -1
- package/dist/{utils/config.d.ts → config/profiles.d.ts} +9 -1
- package/dist/config/profiles.d.ts.map +1 -0
- package/dist/{utils/config.js → config/profiles.js} +1 -1
- package/dist/config/profiles.js.map +1 -0
- package/dist/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp/prompts.js +7 -7
- package/dist/mcp/prompts.js.map +1 -1
- package/dist/mcp/server.d.ts +14 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +61 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/analysis.d.ts.map +1 -1
- package/dist/mcp/tools/analysis.js +74 -46
- package/dist/mcp/tools/analysis.js.map +1 -1
- package/dist/mcp/tools/anypoint-mq.d.ts.map +1 -1
- package/dist/mcp/tools/anypoint-mq.js +25 -54
- package/dist/mcp/tools/anypoint-mq.js.map +1 -1
- package/dist/mcp/tools/api-manager.d.ts +2 -1
- package/dist/mcp/tools/api-manager.d.ts.map +1 -1
- package/dist/mcp/tools/api-manager.js +154 -89
- package/dist/mcp/tools/api-manager.js.map +1 -1
- package/dist/mcp/tools/app-inputs.d.ts +92 -0
- package/dist/mcp/tools/app-inputs.d.ts.map +1 -0
- package/dist/mcp/tools/app-inputs.js +142 -0
- package/dist/mcp/tools/app-inputs.js.map +1 -0
- package/dist/mcp/tools/apps-deploy.d.ts +13 -0
- package/dist/mcp/tools/apps-deploy.d.ts.map +1 -0
- package/dist/mcp/tools/apps-deploy.js +358 -0
- package/dist/mcp/tools/apps-deploy.js.map +1 -0
- package/dist/mcp/tools/apps-lifecycle.d.ts +11 -0
- package/dist/mcp/tools/apps-lifecycle.d.ts.map +1 -0
- package/dist/mcp/tools/apps-lifecycle.js +244 -0
- package/dist/mcp/tools/apps-lifecycle.js.map +1 -0
- package/dist/mcp/tools/apps-read.d.ts +9 -0
- package/dist/mcp/tools/apps-read.d.ts.map +1 -0
- package/dist/mcp/tools/apps-read.js +414 -0
- package/dist/mcp/tools/apps-read.js.map +1 -0
- package/dist/mcp/tools/artifacts.d.ts +8 -0
- package/dist/mcp/tools/artifacts.d.ts.map +1 -0
- package/dist/mcp/tools/artifacts.js +81 -0
- package/dist/mcp/tools/artifacts.js.map +1 -0
- package/dist/mcp/tools/audit.d.ts.map +1 -1
- package/dist/mcp/tools/audit.js +9 -17
- package/dist/mcp/tools/audit.js.map +1 -1
- package/dist/mcp/tools/design-center.d.ts +2 -3
- package/dist/mcp/tools/design-center.d.ts.map +1 -1
- package/dist/mcp/tools/design-center.js +41 -185
- package/dist/mcp/tools/design-center.js.map +1 -1
- package/dist/mcp/tools/exchange.d.ts +1 -2
- package/dist/mcp/tools/exchange.d.ts.map +1 -1
- package/dist/mcp/tools/exchange.js +51 -312
- package/dist/mcp/tools/exchange.js.map +1 -1
- package/dist/mcp/tools/governance.d.ts +8 -0
- package/dist/mcp/tools/governance.d.ts.map +1 -0
- package/dist/mcp/tools/governance.js +59 -0
- package/dist/mcp/tools/governance.js.map +1 -0
- package/dist/mcp/tools/identity.d.ts.map +1 -1
- package/dist/mcp/tools/identity.js +15 -36
- package/dist/mcp/tools/identity.js.map +1 -1
- package/dist/mcp/tools/index.d.ts +5 -1
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +5 -1
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/logs.d.ts +48 -2
- package/dist/mcp/tools/logs.d.ts.map +1 -1
- package/dist/mcp/tools/logs.js +204 -54
- package/dist/mcp/tools/logs.js.map +1 -1
- package/dist/mcp/tools/monitoring.d.ts +1 -2
- package/dist/mcp/tools/monitoring.d.ts.map +1 -1
- package/dist/mcp/tools/monitoring.js +78 -285
- package/dist/mcp/tools/monitoring.js.map +1 -1
- package/dist/mcp/tools/object-store.d.ts +1 -1
- package/dist/mcp/tools/object-store.d.ts.map +1 -1
- package/dist/mcp/tools/object-store.js +19 -59
- package/dist/mcp/tools/object-store.js.map +1 -1
- package/dist/mcp/tools/profile.d.ts.map +1 -1
- package/dist/mcp/tools/profile.js +15 -35
- package/dist/mcp/tools/profile.js.map +1 -1
- package/dist/mcp/tools/shared.d.ts +43 -0
- package/dist/mcp/tools/shared.d.ts.map +1 -1
- package/dist/mcp/tools/shared.js +54 -0
- package/dist/mcp/tools/shared.js.map +1 -1
- package/dist/mcp.d.ts +3 -11
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +4 -56
- package/dist/mcp.js.map +1 -1
- package/dist/safety/deployment.d.ts +47 -2
- package/dist/safety/deployment.d.ts.map +1 -1
- package/dist/safety/deployment.js +139 -6
- package/dist/safety/deployment.js.map +1 -1
- package/dist/safety/guards.d.ts +2 -2
- package/dist/safety/guards.d.ts.map +1 -1
- package/dist/safety/guards.js +4 -4
- package/dist/safety/guards.js.map +1 -1
- package/dist/safety/paths.d.ts +29 -0
- package/dist/safety/paths.d.ts.map +1 -0
- package/dist/safety/paths.js +76 -0
- package/dist/safety/paths.js.map +1 -0
- package/dist/safety/runtime.d.ts +24 -0
- package/dist/safety/runtime.d.ts.map +1 -0
- package/dist/safety/runtime.js +59 -0
- package/dist/safety/runtime.js.map +1 -0
- package/dist/safety/secret-sources.d.ts +51 -0
- package/dist/safety/secret-sources.d.ts.map +1 -0
- package/dist/safety/secret-sources.js +124 -0
- package/dist/safety/secret-sources.js.map +1 -0
- package/dist/safety/secrets.d.ts +32 -0
- package/dist/safety/secrets.d.ts.map +1 -0
- package/dist/safety/secrets.js +91 -0
- package/dist/safety/secrets.js.map +1 -0
- package/dist/utils/errors.d.ts +14 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +31 -3
- package/dist/utils/errors.js.map +1 -1
- package/dist/workflows/app-change.d.ts +124 -0
- package/dist/workflows/app-change.d.ts.map +1 -0
- package/dist/workflows/app-change.js +305 -0
- package/dist/workflows/app-change.js.map +1 -0
- package/dist/workflows/app-state.d.ts +60 -0
- package/dist/workflows/app-state.d.ts.map +1 -0
- package/dist/workflows/app-state.js +95 -0
- package/dist/workflows/app-state.js.map +1 -0
- package/dist/workflows/artifact-compare.d.ts +134 -0
- package/dist/workflows/artifact-compare.d.ts.map +1 -0
- package/dist/workflows/artifact-compare.js +419 -0
- package/dist/workflows/artifact-compare.js.map +1 -0
- package/dist/workflows/asset-naming.d.ts +72 -0
- package/dist/workflows/asset-naming.d.ts.map +1 -0
- package/dist/workflows/asset-naming.js +116 -0
- package/dist/workflows/asset-naming.js.map +1 -0
- package/dist/{api/DesignCenterWorkflow.d.ts → workflows/design-center.d.ts} +4 -4
- package/dist/workflows/design-center.d.ts.map +1 -0
- package/dist/{api/DesignCenterWorkflow.js → workflows/design-center.js} +1 -1
- package/dist/workflows/design-center.js.map +1 -0
- package/dist/workflows/jar-deployment.d.ts +156 -0
- package/dist/workflows/jar-deployment.d.ts.map +1 -0
- package/dist/workflows/jar-deployment.js +178 -0
- package/dist/workflows/jar-deployment.js.map +1 -0
- package/package.json +12 -4
- package/dist/analysis/utils.d.ts.map +0 -1
- package/dist/analysis/utils.js.map +0 -1
- package/dist/api/DesignCenterWorkflow.d.ts.map +0 -1
- package/dist/api/DesignCenterWorkflow.js.map +0 -1
- package/dist/api/index.d.ts +0 -13
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -13
- package/dist/api/index.js.map +0 -1
- package/dist/mcp/tools/applications.d.ts +0 -4
- package/dist/mcp/tools/applications.d.ts.map +0 -1
- package/dist/mcp/tools/applications.js +0 -815
- package/dist/mcp/tools/applications.js.map +0 -1
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js.map +0 -1
package/dist/api/LogsApi.js
CHANGED
|
@@ -3,17 +3,20 @@
|
|
|
3
3
|
* Log tailing, fetching, and downloading for CloudHub 2.0
|
|
4
4
|
* Uses the AMC log file download endpoint with spec ID resolution
|
|
5
5
|
*/
|
|
6
|
+
import { parseRawLogs } from '../analysis/parser.js';
|
|
7
|
+
import { buildFilter, searchEntries } from '../analysis/filter.js';
|
|
6
8
|
import { errorMessage } from '../utils/errors.js';
|
|
9
|
+
export { MAX_LOG_LINES } from '../analysis/filter.js';
|
|
7
10
|
const AMC_BASE = '/amc/application-manager/api/v2';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
11
|
+
function httpStatus(error) {
|
|
12
|
+
return error?.response?.status;
|
|
13
|
+
}
|
|
14
|
+
function sourceOf(file) {
|
|
15
|
+
const source = { deploymentId: file.deploymentId, specId: file.specId };
|
|
16
|
+
if (file.fallbackFromSpecId)
|
|
17
|
+
source.fallbackFromSpecId = file.fallbackFromSpecId;
|
|
18
|
+
return source;
|
|
19
|
+
}
|
|
17
20
|
export class LogsApi {
|
|
18
21
|
http;
|
|
19
22
|
ch2;
|
|
@@ -34,124 +37,95 @@ export class LogsApi {
|
|
|
34
37
|
});
|
|
35
38
|
}
|
|
36
39
|
/**
|
|
37
|
-
* Resolve an app name to its deployment
|
|
40
|
+
* Resolve an app name to its deployment and the specs whose logs to read, preferred first:
|
|
41
|
+
* the desired spec, then the last successful one when it differs.
|
|
38
42
|
*/
|
|
39
43
|
async resolveDeployment(orgId, envId, appName) {
|
|
40
44
|
if (!this.ch2) {
|
|
41
45
|
throw new Error('CloudHub2Api required for log operations');
|
|
42
46
|
}
|
|
43
|
-
// Get full deployment detail to access desiredVersion (spec ID)
|
|
44
47
|
const deployment = await this.ch2.findByName(orgId, envId, appName);
|
|
45
48
|
if (!deployment) {
|
|
46
49
|
throw new Error(`Application "${appName}" not found in environment`);
|
|
47
50
|
}
|
|
48
|
-
// Get detailed deployment info with desiredVersion
|
|
49
51
|
const detail = await this.ch2.getDeployment(orgId, envId, deployment.id);
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
throw new Error(`No spec version found for "${appName}" — app may not be fully deployed`);
|
|
52
|
+
const specIds = [detail.desiredVersion, detail.lastSuccessfulVersion].filter((id, i, all) => !!id && all.indexOf(id) === i);
|
|
53
|
+
if (specIds.length === 0) {
|
|
54
|
+
throw new Error(`No spec version found for "${appName}". The app may not be fully deployed yet`);
|
|
54
55
|
}
|
|
55
|
-
return { deploymentId: deployment.id,
|
|
56
|
+
return { deploymentId: deployment.id, specIds };
|
|
56
57
|
}
|
|
57
58
|
/**
|
|
58
|
-
*
|
|
59
|
-
*
|
|
59
|
+
* Fetch the log file for an app. Reads the desired spec's file; right after a change that
|
|
60
|
+
* file can be missing or empty while the platform starts the new replicas, so the last
|
|
61
|
+
* successful spec's file is read instead and `fallbackFromSpecId` says so.
|
|
60
62
|
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
63
|
+
async getLogFile(orgId, envId, appName) {
|
|
64
|
+
const { deploymentId, specIds } = await this.resolveDeployment(orgId, envId, appName);
|
|
65
|
+
const [desired, previous] = specIds;
|
|
66
|
+
let text = '';
|
|
67
|
+
try {
|
|
68
|
+
text = (await this.downloadLogFile(orgId, envId, deploymentId, desired)).toString('utf-8');
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
if (!previous || httpStatus(error) !== 404)
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
if (text.trim() || !previous) {
|
|
75
|
+
return { deploymentId, specId: desired, text };
|
|
73
76
|
}
|
|
74
|
-
|
|
75
|
-
return {
|
|
76
|
-
timestamp: Date.now(),
|
|
77
|
-
priority: 'INFO',
|
|
78
|
-
message: line,
|
|
79
|
-
};
|
|
77
|
+
const fallback = (await this.downloadLogFile(orgId, envId, deploymentId, previous)).toString('utf-8');
|
|
78
|
+
return { deploymentId, specId: previous, fallbackFromSpecId: desired, text: fallback };
|
|
80
79
|
}
|
|
81
80
|
/**
|
|
82
81
|
* Get raw log text for a CH2 application (for analysis pipeline).
|
|
83
82
|
* Returns the full log file as a string without parsing.
|
|
84
83
|
*/
|
|
85
84
|
async getRawText(orgId, envId, appName) {
|
|
86
|
-
|
|
87
|
-
const buffer = await this.downloadLogFile(orgId, envId, deploymentId, specId);
|
|
88
|
-
return buffer.toString('utf-8');
|
|
85
|
+
return (await this.getLogFile(orgId, envId, appName)).text;
|
|
89
86
|
}
|
|
90
87
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
88
|
+
* Search an app's log file. Multi-line entries (stack traces, error reports, JSON Logger
|
|
89
|
+
* bodies) are joined to the line that starts them and keep its timestamp and level.
|
|
90
|
+
* Returns the newest `limit` matches (default 100, at most MAX_LOG_LINES) and the full match count.
|
|
91
|
+
*/
|
|
92
|
+
async searchLogs(orgId, envId, appName, options = {}) {
|
|
93
|
+
const file = await this.getLogFile(orgId, envId, appName);
|
|
94
|
+
return { ...searchEntries(parseRawLogs(file.text), options), source: sourceOf(file) };
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get parsed log entries for a CH2 application, newest first.
|
|
98
|
+
* See `searchLogs` for the counts and the source spec.
|
|
93
99
|
*/
|
|
94
100
|
async getLogs(orgId, envId, appName, options = {}) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (!entry)
|
|
104
|
-
continue;
|
|
105
|
-
// Filter by time
|
|
106
|
-
if (options.startTime && entry.timestamp < options.startTime)
|
|
107
|
-
continue;
|
|
108
|
-
if (options.endTime && entry.timestamp > options.endTime)
|
|
109
|
-
continue;
|
|
110
|
-
// Filter by level
|
|
111
|
-
if ((LEVEL_PRIORITY[entry.priority] ?? 0) < minLevel)
|
|
112
|
-
continue;
|
|
113
|
-
// Filter by search
|
|
114
|
-
if (options.search && !entry.message.toLowerCase().includes(options.search.toLowerCase()))
|
|
115
|
-
continue;
|
|
116
|
-
entries.push(entry);
|
|
117
|
-
}
|
|
118
|
-
// Sort descending by default (newest first), limit
|
|
119
|
-
entries.sort((a, b) => b.timestamp - a.timestamp);
|
|
120
|
-
if (options.limit) {
|
|
121
|
-
entries = entries.slice(0, options.limit);
|
|
122
|
-
}
|
|
123
|
-
return entries;
|
|
101
|
+
return (await this.searchLogs(orgId, envId, appName, options)).entries;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Every entry that passes a filter, oldest first, with no line cap.
|
|
105
|
+
*/
|
|
106
|
+
async queryLogs(orgId, envId, appName, filter = {}) {
|
|
107
|
+
const file = await this.getLogFile(orgId, envId, appName);
|
|
108
|
+
return { entries: parseRawLogs(file.text).filter(buildFilter(filter)), source: sourceOf(file) };
|
|
124
109
|
}
|
|
125
110
|
/**
|
|
126
|
-
* Tail logs
|
|
127
|
-
* Polls the log file
|
|
111
|
+
* Tail logs: a generator that yields new log entries.
|
|
112
|
+
* Polls the log file and re-resolves the spec each time, so a restart is followed.
|
|
128
113
|
*/
|
|
129
114
|
async *tailLogs(orgId, envId, appName, options = {}) {
|
|
130
115
|
const intervalMs = options.intervalMs || 5000;
|
|
131
|
-
const
|
|
116
|
+
const keep = buildFilter({
|
|
117
|
+
level: options.level,
|
|
118
|
+
search: options.search,
|
|
119
|
+
regex: options.regex,
|
|
120
|
+
logger: options.logger,
|
|
121
|
+
});
|
|
132
122
|
let lastTimestamp = Date.now() - 30000; // start from 30 seconds ago
|
|
133
123
|
while (true) {
|
|
134
124
|
try {
|
|
135
|
-
const
|
|
136
|
-
const text = buffer.toString('utf-8');
|
|
125
|
+
const { text } = await this.getLogFile(orgId, envId, appName);
|
|
137
126
|
// Only parse the last portion for performance (last 100KB)
|
|
138
127
|
const tail = text.length > 100000 ? text.substring(text.length - 100000) : text;
|
|
139
|
-
const
|
|
140
|
-
const levelPriority = LEVEL_PRIORITY;
|
|
141
|
-
const minLevel = options.level ? (levelPriority[options.level.toUpperCase()] ?? 0) : 0;
|
|
142
|
-
const newEntries = [];
|
|
143
|
-
for (const line of lines) {
|
|
144
|
-
const entry = this.parseLogLine(line);
|
|
145
|
-
if (!entry)
|
|
146
|
-
continue;
|
|
147
|
-
if (entry.timestamp <= lastTimestamp)
|
|
148
|
-
continue;
|
|
149
|
-
if ((levelPriority[entry.priority] ?? 0) < minLevel)
|
|
150
|
-
continue;
|
|
151
|
-
if (options.search && !entry.message.toLowerCase().includes(options.search.toLowerCase()))
|
|
152
|
-
continue;
|
|
153
|
-
newEntries.push(entry);
|
|
154
|
-
}
|
|
128
|
+
const newEntries = parseRawLogs(tail).filter((e) => e.timestamp > lastTimestamp && keep(e));
|
|
155
129
|
if (newEntries.length > 0) {
|
|
156
130
|
newEntries.sort((a, b) => a.timestamp - b.timestamp);
|
|
157
131
|
lastTimestamp = newEntries[newEntries.length - 1].timestamp;
|
|
@@ -165,14 +139,11 @@ export class LogsApi {
|
|
|
165
139
|
}
|
|
166
140
|
}
|
|
167
141
|
/**
|
|
168
|
-
* Get all logs for a time range.
|
|
142
|
+
* Get all logs for a time range, newest first.
|
|
169
143
|
*/
|
|
170
144
|
async getLogsForPeriod(orgId, envId, appName, startTime, endTime, level) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
endTime,
|
|
174
|
-
level,
|
|
175
|
-
});
|
|
145
|
+
const { entries } = await this.queryLogs(orgId, envId, appName, { startTime, endTime, level });
|
|
146
|
+
return entries.reverse();
|
|
176
147
|
}
|
|
177
148
|
}
|
|
178
149
|
//# sourceMappingURL=LogsApi.js.map
|
package/dist/api/LogsApi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogsApi.js","sourceRoot":"","sources":["../../src/api/LogsApi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"LogsApi.js","sourceRoot":"","sources":["../../src/api/LogsApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,68 +1,124 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Monitoring API
|
|
3
|
-
* AMQL
|
|
3
|
+
* AMQL queries against the Anypoint Monitoring metrics search endpoint.
|
|
4
|
+
*
|
|
5
|
+
* Datasource notes (behaviour of the platform, not of this client):
|
|
6
|
+
* - Traffic: "mulesoft.app.inbound" / "mulesoft.app.outbound" (requests, response_time,
|
|
7
|
+
* response.status = 'FAILED', http.route on outbound), "mulesoft.message" (total_count, error_count).
|
|
8
|
+
* - JVM memory: "mulesoft.app.jvm.memory" is per pool ("total-heap", an old-generation pool such as
|
|
9
|
+
* "tenured_gen", eden, survivor, "metaspace", …) with usage / committed / "limit" (-1 = unbounded).
|
|
10
|
+
* - GC: "mulesoft.app.jvm.gc" count and duration (ms) are cumulative counters per worker and collector,
|
|
11
|
+
* so the activity in a window is MAX − MIN, never SUM.
|
|
12
|
+
* - Host: "mulesoft.app.jvm.cpu" (available_processors, total_physical_memory_size) and
|
|
13
|
+
* "mulesoft.app.memory" (system_cpu_load, process_cpu_load, free_physical_memory_size). MIN/MAX over
|
|
14
|
+
* the physical-memory size fields fail server-side (HTTP 500 after a long wait); only AVG is used.
|
|
4
15
|
*/
|
|
5
16
|
import type { HttpClient } from '../client/HttpClient.js';
|
|
6
17
|
import type { Cache } from '../client/Cache.js';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
18
|
+
/** Largest page the metrics search endpoint accepts. */
|
|
19
|
+
export declare const AMQL_MAX_LIMIT = 2000;
|
|
20
|
+
export type MetricRow = Record<string, number | string | null | undefined>;
|
|
21
|
+
export type Granularity = '1m' | '5m' | '15m' | '30m' | '1h' | '1d';
|
|
22
|
+
/** User-facing bucket sizes mapped to AMQL TIMESERIES durations. */
|
|
23
|
+
export declare const GRANULARITY: Record<Granularity, string>;
|
|
24
|
+
export declare const GRANULARITIES: Granularity[];
|
|
25
|
+
export declare function isGranularity(value: string): value is Granularity;
|
|
26
|
+
/** Quote a value as an AMQL string literal. */
|
|
27
|
+
export declare function amqlString(value: string): string;
|
|
28
|
+
export interface MetricsScope {
|
|
29
|
+
orgId: string;
|
|
30
|
+
/** Omit to cover every environment in the organization. */
|
|
31
|
+
envId?: string;
|
|
32
|
+
from: number;
|
|
33
|
+
to: number;
|
|
34
|
+
appName?: string;
|
|
10
35
|
}
|
|
11
|
-
export
|
|
36
|
+
export type MetricsGroupBy = 'app' | 'worker';
|
|
37
|
+
export interface TrafficMetrics {
|
|
12
38
|
appName: string;
|
|
39
|
+
/** Present when the scope spans all environments. */
|
|
40
|
+
envName?: string;
|
|
41
|
+
/** Present when grouped by worker. */
|
|
42
|
+
workerId?: string;
|
|
13
43
|
requestCount: number;
|
|
44
|
+
failedCount: number;
|
|
45
|
+
/** failedCount / requestCount, 0 when there were no requests. */
|
|
46
|
+
failureRate: number;
|
|
14
47
|
avgResponseTime: number;
|
|
15
|
-
outboundCount: number;
|
|
16
|
-
outboundAvgResponseTime: number;
|
|
17
|
-
}
|
|
18
|
-
export interface PerformanceMetrics {
|
|
19
|
-
appName: string;
|
|
20
|
-
requestCount: number;
|
|
21
|
-
avgResponseTime: number;
|
|
22
|
-
maxResponseTime: number;
|
|
23
48
|
minResponseTime: number;
|
|
49
|
+
maxResponseTime: number;
|
|
24
50
|
p50: number;
|
|
51
|
+
p75: number;
|
|
52
|
+
p90: number;
|
|
25
53
|
p95: number;
|
|
26
54
|
p99: number;
|
|
55
|
+
outboundCount: number;
|
|
56
|
+
outboundFailedCount: number;
|
|
57
|
+
outboundAvgResponseTime: number;
|
|
58
|
+
messageCount: number;
|
|
59
|
+
messageErrorCount: number;
|
|
27
60
|
}
|
|
28
|
-
export interface
|
|
29
|
-
timestamp: number;
|
|
61
|
+
export interface RouteMetrics {
|
|
30
62
|
appName: string;
|
|
63
|
+
envName?: string;
|
|
64
|
+
direction: 'inbound' | 'outbound';
|
|
65
|
+
/** `null` when the runtime did not label the route. */
|
|
66
|
+
route: string | null;
|
|
31
67
|
requestCount: number;
|
|
68
|
+
failedCount: number;
|
|
32
69
|
avgResponseTime: number;
|
|
33
70
|
p95: number;
|
|
34
71
|
}
|
|
35
|
-
export interface
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
72
|
+
export interface MemoryPoolMetrics {
|
|
73
|
+
pool: string;
|
|
74
|
+
type: string;
|
|
75
|
+
usedAvg: number;
|
|
76
|
+
usedPeak: number;
|
|
77
|
+
committedAvg: number;
|
|
78
|
+
/** `null` when the pool is unbounded. */
|
|
79
|
+
limit: number | null;
|
|
42
80
|
}
|
|
43
|
-
export interface
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
81
|
+
export interface GcCollectorMetrics {
|
|
82
|
+
collector: string;
|
|
83
|
+
oldGeneration: boolean;
|
|
84
|
+
/** Collections inside the window (counter delta). */
|
|
85
|
+
collections: number;
|
|
86
|
+
/** Milliseconds spent collecting inside the window (counter delta). */
|
|
87
|
+
timeMs: number;
|
|
50
88
|
}
|
|
51
|
-
export interface
|
|
89
|
+
export interface RuntimeMetrics {
|
|
52
90
|
appName: string;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
91
|
+
workerId: string;
|
|
92
|
+
heapUsedAvg: number;
|
|
93
|
+
heapUsedPeak: number;
|
|
94
|
+
heapCommittedAvg: number;
|
|
95
|
+
/** Old-generation (tenured) pool — its post-GC baseline is the leak / pressure signal. */
|
|
96
|
+
oldGenPool: string | null;
|
|
97
|
+
oldGenUsedAvg: number;
|
|
98
|
+
oldGenUsedPeak: number;
|
|
99
|
+
oldGenLimit: number | null;
|
|
100
|
+
/** oldGenUsedPeak / oldGenLimit, `null` when the pool is unbounded. */
|
|
101
|
+
oldGenPeakRatio: number | null;
|
|
102
|
+
metaspaceUsedAvg: number;
|
|
103
|
+
oldGenGcCount: number;
|
|
104
|
+
oldGenGcTimeMs: number;
|
|
105
|
+
gcCollectors: GcCollectorMetrics[];
|
|
106
|
+
pools: MemoryPoolMetrics[];
|
|
107
|
+
availableProcessors: number | null;
|
|
108
|
+
totalPhysicalMemory: number | null;
|
|
109
|
+
freePhysicalMemoryAvg: number | null;
|
|
110
|
+
systemCpuLoadAvg: number | null;
|
|
111
|
+
systemCpuLoadMax: number | null;
|
|
112
|
+
processCpuLoadAvg: number | null;
|
|
113
|
+
processCpuLoadMax: number | null;
|
|
59
114
|
}
|
|
60
|
-
export
|
|
115
|
+
export type TimeSeriesSignal = 'traffic' | 'latency' | 'memory' | 'cpu' | 'gc';
|
|
116
|
+
export declare const TIME_SERIES_SIGNALS: TimeSeriesSignal[];
|
|
117
|
+
export interface TimeSeriesPoint {
|
|
61
118
|
timestamp: number;
|
|
62
119
|
appName: string;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
gcCount: number;
|
|
120
|
+
workerId?: string;
|
|
121
|
+
[metric: string]: number | string | null | undefined;
|
|
66
122
|
}
|
|
67
123
|
export interface MetricsExport {
|
|
68
124
|
environment: string;
|
|
@@ -70,77 +126,65 @@ export interface MetricsExport {
|
|
|
70
126
|
from: string;
|
|
71
127
|
to: string;
|
|
72
128
|
};
|
|
73
|
-
apps:
|
|
129
|
+
apps: TrafficMetrics[];
|
|
74
130
|
summary: {
|
|
75
131
|
totalRequests: number;
|
|
132
|
+
totalFailed: number;
|
|
76
133
|
avgResponseTime: number;
|
|
77
134
|
};
|
|
78
135
|
}
|
|
79
|
-
|
|
136
|
+
interface SearchOptions {
|
|
137
|
+
limit?: number;
|
|
138
|
+
offset?: number;
|
|
139
|
+
}
|
|
80
140
|
export declare class MonitoringApi {
|
|
81
141
|
private readonly http;
|
|
82
142
|
private readonly cache;
|
|
83
143
|
private readonly baseUrl;
|
|
84
144
|
constructor(http: HttpClient, cache: Cache);
|
|
85
145
|
/**
|
|
86
|
-
* Execute an AMQL query
|
|
87
|
-
|
|
88
|
-
search(query: string, limit?: number): Promise<MetricDataPoint[]>;
|
|
89
|
-
/**
|
|
90
|
-
* Get inbound metrics for a time range.
|
|
91
|
-
* Note: orgId, envId, and timestamps are system-controlled values from the
|
|
92
|
-
* Anypoint Platform API — not user input — so string interpolation is safe here.
|
|
93
|
-
*/
|
|
94
|
-
getInboundMetrics(orgId: string, envId: string, from: number, to: number): Promise<Array<{
|
|
95
|
-
appName: string;
|
|
96
|
-
requestCount: number;
|
|
97
|
-
avgResponseTime: number;
|
|
98
|
-
}>>;
|
|
99
|
-
/**
|
|
100
|
-
* Get outbound metrics for a time range
|
|
101
|
-
*/
|
|
102
|
-
getOutboundMetrics(orgId: string, envId: string, from: number, to: number): Promise<Array<{
|
|
103
|
-
appName: string;
|
|
104
|
-
requestCount: number;
|
|
105
|
-
avgResponseTime: number;
|
|
106
|
-
}>>;
|
|
107
|
-
/**
|
|
108
|
-
* Get combined app metrics for a time range
|
|
109
|
-
*/
|
|
110
|
-
getAppMetrics(orgId: string, envId: string, from: number, to: number, appName?: string): Promise<AppMetricsSummary[]>;
|
|
111
|
-
/**
|
|
112
|
-
* Get percentile-based performance metrics per app
|
|
113
|
-
*/
|
|
114
|
-
getPerformanceMetrics(orgId: string, envId: string, from: number, to: number, appName?: string): Promise<PerformanceMetrics[]>;
|
|
115
|
-
/**
|
|
116
|
-
* Get time-series metrics for trending analysis
|
|
117
|
-
*/
|
|
118
|
-
getTimeSeries(orgId: string, envId: string, from: number, to: number, granularity?: TimeSeriesGranularity, appName?: string): Promise<TimeSeriesDataPoint[]>;
|
|
119
|
-
/**
|
|
120
|
-
* Get per-worker/replica performance metrics
|
|
121
|
-
*/
|
|
122
|
-
getWorkerMetrics(orgId: string, envId: string, from: number, to: number, appName?: string): Promise<WorkerMetrics[]>;
|
|
123
|
-
/**
|
|
124
|
-
* Get JVM memory metrics per app (heap, GC, threads)
|
|
125
|
-
* Queries the mulesoft.jvm datasource
|
|
126
|
-
*/
|
|
127
|
-
getMemoryMetrics(orgId: string, envId: string, from: number, to: number, appName?: string): Promise<MemoryMetrics[]>;
|
|
128
|
-
/**
|
|
129
|
-
* Get JVM memory time-series for trending analysis
|
|
130
|
-
* Queries the mulesoft.jvm datasource with TIMESERIES
|
|
146
|
+
* Execute one page of an AMQL query. Platform errors (syntax, unknown datasource or
|
|
147
|
+
* attribute, oversized limit) are raised as {@link AmqlQueryError}, never hidden.
|
|
131
148
|
*/
|
|
132
|
-
|
|
149
|
+
search(query: string, options?: SearchOptions): Promise<MetricRow[]>;
|
|
150
|
+
/** Execute an AMQL query and follow pagination until exhausted (capped). */
|
|
151
|
+
searchAll(query: string): Promise<MetricRow[]>;
|
|
152
|
+
private searchPage;
|
|
133
153
|
/**
|
|
134
|
-
*
|
|
154
|
+
* Traffic and latency per app (or per worker), with failures, outbound calls and message
|
|
155
|
+
* volume merged in. Omitting `envId` compares every environment.
|
|
135
156
|
*/
|
|
136
|
-
|
|
157
|
+
getMetrics(scope: MetricsScope, groupBy?: MetricsGroupBy): Promise<TrafficMetrics[]>;
|
|
158
|
+
/** Request and failure counts per HTTP route, inbound and outbound. */
|
|
159
|
+
getRouteMetrics(scope: MetricsScope): Promise<RouteMetrics[]>;
|
|
160
|
+
/** JVM heap, old-generation pressure, GC activity and host CPU/RAM per worker. */
|
|
161
|
+
getRuntimeMetrics(scope: MetricsScope & {
|
|
162
|
+
envId: string;
|
|
163
|
+
}): Promise<RuntimeMetrics[]>;
|
|
137
164
|
/**
|
|
138
|
-
*
|
|
165
|
+
* Bucketed metrics for one signal:
|
|
166
|
+
* - traffic: requests, failed, avg and p95 latency per app
|
|
167
|
+
* - latency: p50 / p75 / p90 / p95 / p99 per app
|
|
168
|
+
* - memory: heap, old-generation and metaspace usage per worker
|
|
169
|
+
* - cpu: system and process CPU load and average free physical memory per worker
|
|
170
|
+
* - gc: old-generation collections and GC time per worker (per-bucket deltas)
|
|
139
171
|
*/
|
|
172
|
+
getTimeSeries(scope: MetricsScope & {
|
|
173
|
+
envId: string;
|
|
174
|
+
}, signal: TimeSeriesSignal, granularity?: Granularity): Promise<TimeSeriesPoint[]>;
|
|
175
|
+
/** Build a metrics export for a period (one environment, every app). */
|
|
140
176
|
exportMetrics(orgId: string, envId: string, envName: string, from: number, to: number): Promise<MetricsExport>;
|
|
177
|
+
private where;
|
|
178
|
+
private groupKeys;
|
|
179
|
+
private scopeKey;
|
|
180
|
+
/** Merge several bucketed result sets into one point per timestamp + app (+ worker). */
|
|
181
|
+
private mergeSeries;
|
|
141
182
|
/**
|
|
142
|
-
*
|
|
183
|
+
* Turn cumulative GC counters into per-bucket activity. Each bucket's delta is measured from the
|
|
184
|
+
* previous bucket's maximum, so collections that straddle a boundary are still counted; the first
|
|
185
|
+
* bucket of a worker falls back to its own MAX − MIN.
|
|
143
186
|
*/
|
|
144
|
-
|
|
187
|
+
private gcDeltas;
|
|
145
188
|
}
|
|
189
|
+
export {};
|
|
146
190
|
//# sourceMappingURL=MonitoringApi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MonitoringApi.d.ts","sourceRoot":"","sources":["../../src/api/MonitoringApi.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"MonitoringApi.d.ts","sourceRoot":"","sources":["../../src/api/MonitoringApi.ts"],"names":[],"mappings":"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"}
|