cloud-report
Version:
Collects and analyzes cloud resources
58 lines (57 loc) • 2.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = require("../../../types");
const base_1 = require("../../base");
class ApiMetricsAnalyzer extends base_1.BaseAnalyzer {
analyze(params, fullReport) {
const allApis = params.apis;
const allApiStages = params.api_stages;
if (!allApis || !allApiStages) {
return undefined;
}
const api_metrics_enabled = { type: types_1.CheckAnalysisType.OperationalExcellence };
api_metrics_enabled.what = "Is cloudwatch metrics is enabed for APIs?";
api_metrics_enabled.why = `Enabling metrics will help APIs to monitor API stages caching,
latency and detected errors at a more granular level and set alarms accordingly.`;
api_metrics_enabled.recommendation = `Recommended to enable metrics for all Apis.`;
api_metrics_enabled.benchmark = ['all'];
const allRegionsAnalysis = {};
for (const region in allApis) {
const regionApis = allApis[region];
allRegionsAnalysis[region] = [];
for (const api of regionApis) {
if (!allApiStages[region][api.id] || !allApiStages[region][api.id].length) {
continue;
}
for (const apiStage of allApiStages[region][api.id]) {
const apiStageAnalysis = {};
apiStageAnalysis.resource = { apiName: api.name, stage: apiStage };
const _value = apiStage.methodSettings['*/*'] ? `${api.name} | ${apiStage.methodSettings['*/*'].metricsEnabled}` : api.name;
apiStageAnalysis.resourceSummary = {
name: "ApiState",
value: _value,
};
if (this.isMetricsEnabled(apiStage)) {
apiStageAnalysis.severity = types_1.SeverityStatus.Good;
apiStageAnalysis.message = "Metrics is enabled.";
}
else {
apiStageAnalysis.severity = types_1.SeverityStatus.Info;
apiStageAnalysis.message = "Metrics is not enabled.";
apiStageAnalysis.action = `Enable Metrics for API for
efficient data handling and error monitoring.`;
}
allRegionsAnalysis[region].push(apiStageAnalysis);
}
}
}
api_metrics_enabled.regions = allRegionsAnalysis;
return { api_metrics_enabled };
}
isMetricsEnabled(stage) {
if (stage.methodSettings["*/*"]) {
return stage.methodSettings["*/*"].dataTraceEnabled;
}
}
}
exports.ApiMetricsAnalyzer = ApiMetricsAnalyzer;