UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

58 lines (57 loc) 2.86 kB
"use strict"; 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;