cloud-report
Version:
Collects and analyzes cloud resources
45 lines (44 loc) • 2.18 kB
JavaScript
;
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;