UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

45 lines (44 loc) 2.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const types_1 = require("../../../types"); const base_1 = require("../../base"); class LogGroupsRetentionAnalyzer extends base_1.BaseAnalyzer { analyze(params, fullReport) { const allLogGroups = params.log_groups; if (!allLogGroups) { return undefined; } const log_groups_retention = { type: types_1.CheckAnalysisType.CostOptimization }; log_groups_retention.what = "Is retention set for CloudWatch log groups?"; log_groups_retention.why = `It is important to set proper retention for CloudWatch log groups as it is very costly to keep these logs forever`; log_groups_retention.recommendation = "Recommended to set retention for all the CloudWatch log groups"; log_groups_retention.benchmark = ['all']; const allRegionsAnalysis = {}; for (const region in allLogGroups) { const regionLogGroups = allLogGroups[region]; allRegionsAnalysis[region] = []; for (const logGroup of regionLogGroups) { const logGroupAnalysis = {}; logGroupAnalysis.resource = logGroup; logGroupAnalysis.resourceSummary = { name: "LogGroup", value: logGroup.logGroupName, }; if (logGroup.retentionInDays) { logGroupAnalysis.severity = types_1.SeverityStatus.Good; logGroupAnalysis.message = `Retention is set to ${logGroup.retentionInDays} days`; } else { logGroupAnalysis.severity = types_1.SeverityStatus.Warning; logGroupAnalysis.message = "Retention is not set"; logGroupAnalysis.action = "Set proper Retention"; } allRegionsAnalysis[region].push(logGroupAnalysis); } } log_groups_retention.regions = allRegionsAnalysis; return { log_groups_retention }; } } exports.LogGroupsRetentionAnalyzer = LogGroupsRetentionAnalyzer;