in ozhera-monitor/ozhera-monitor-service/src/main/java/org/apache/ozhera/monitor/service/impl/AppAlarmServiceImpl.java [424:513]
public Result addRules(AlarmRuleRequest param, AppMonitor app) {
for (AlarmRuleData ruleData : param.getAlarmRules()) {
ruleData.setIncludeEnvs(param.getIncludeEnvs());
ruleData.setExceptEnvs(param.getExceptEnvs());
ruleData.setIncludeZones(param.getIncludeZones());
ruleData.setExceptZones(param.getExceptZones());
ruleData.setIncludeContainerName(param.getIncludeContainerName());
ruleData.setExceptContainerName(param.getExceptContainerName());
ruleData.setAlertMembers(param.getAlertMembers());
ruleData.setAtMembers(param.getAtMembers());
ruleData.setIncludeFunctions(param.getIncludeFunctions());
ruleData.setExceptFunctions(param.getExceptFunctions());
ruleData.setIncludeModules(param.getIncludeModules());
ruleData.setExceptModules(param.getExceptModules());
ruleData.convertLabels();
AppAlarmRule rule = new AppAlarmRule();
BeanUtils.copyProperties(ruleData, rule);
StringBuilder cname = new StringBuilder();
cname.append(param.getIamId() != null ? param.getIamId() : param.getProjectId());
if (param.getStrategyType().intValue() == AlarmStrategyType.PAOMQL.getCode()) {
if (rule.getMetricType() == null) {
rule.setMetricType(AlarmRuleMetricType.customer_promql.getCode());
}
if (StringUtils.isBlank(ruleData.getAlert())) {
cname.append("-").append(AlarmRuleMetricType.customer_promql.getDesc());
} else {
cname.append("-").append(ruleData.getAlert());
}
cname.append("-").append(System.currentTimeMillis());
rule.setCname(cname.toString());
rule.setAlert(StringUtils.isBlank(rule.getAlert()) ? cname.toString() : rule.getAlert());
} else {
if (rule.getMetricType() == null) {
rule.setMetricType(AlarmRuleMetricType.preset.getCode());
}
cname.append("-").append(ruleData.getAlert());
cname.append("-").append(System.currentTimeMillis());
rule.setCname(cname.toString());
}
rule.setRuleType(AlarmRuleType.app_config.getCode());
rule.setProjectId(param.getProjectId());
rule.setIamId(param.getIamId());
int alarmForTime = evaluationInterval * ruleData.getDataCount();
String alarmForTimeS = alarmForTime + evaluationUnit;
rule.setForTime(alarmForTimeS);
rule.setRuleGroup("group" + param.getIamId());
rule.setEnv(prometheusAlarmEnv);
rule.setStatus(0);
rule.setCreater(param.getUser());
rule.setRuleStatus(RuleStatusType.active.getCode());
String remark = null;
if (rule.getMetricType() == AlarmRuleMetricType.customer_promql.getCode()) {
remark = StringUtils.isBlank(rule.getRemark()) ? param.getStrategyDesc() : rule.getRemark();
} else {
remark = param.getStrategyDesc();
}
rule.setRemark(remark);
rule.setCreateTime(new Date());
rule.setUpdateTime(new Date());
rule.setStrategyId(param.getStrategyId());
Result result = alarmService.addRule(app, rule, param.getUser(), ruleData);
if (result.getCode() != 0) {
log.error("AppAlarmService.addRules error! remote add ruleData fail!ruleData:{}", rule.toString());
return Result.fail(ErrorCode.unknownError);
}
Integer alarmId = appAlarmServiceExtension.getAlarmIdByResult(result);
rule.setAlarmId(alarmId);
int i = appAlarmRuleDao.create(rule);
if (i < 0) {
log.error("AppAlarmService.addRules error! add ruleData data fail!ruleData:{}", rule.toString());
return Result.fail(ErrorCode.unknownError);
}
}
return Result.success(null);
}