提交 70022732 authored 作者: Edwin's avatar Edwin

feat: 添加告警消息详情

上级 c15fa091
......@@ -61,6 +61,7 @@ public class AlarmServiceImpl implements AlarmService {
"Service instance (.+) of (.+) is down in (.+) of last (.+)",
Pattern.CASE_INSENSITIVE
);
private static final Map<String, String> RULE_NAME_TRANSLATIONS = buildRuleNameTranslations();
@Value("${webHookUrl}")
private String webHookUrl;
......@@ -141,22 +142,13 @@ public class AlarmServiceImpl implements AlarmService {
private String formatReadableMessage(AlarmMessage alarmMessage, String serviceName, String rawMessage) {
StringBuilder builder = new StringBuilder();
builder.append("【告警】");
if (!StringUtil.isBlank(alarmMessage.getScope())) {
builder.append("\n范围: ").append(alarmMessage.getScope());
}
if (!StringUtil.isBlank(serviceName)) {
builder.append("\n服务: ").append(serviceName);
} else if (!StringUtil.isBlank(alarmMessage.getName())) {
builder.append("\n对象: ").append(alarmMessage.getName());
}
if (!StringUtil.isBlank(alarmMessage.getId0())) {
builder.append("\nID0: ").append(alarmMessage.getId0());
}
if (!StringUtil.isBlank(alarmMessage.getId1())) {
builder.append("\nID1: ").append(alarmMessage.getId1());
}
if (!StringUtil.isBlank(alarmMessage.getRuleName())) {
builder.append("\n规则: ").append(alarmMessage.getRuleName());
builder.append("\n规则: ").append(translateRuleName(alarmMessage.getRuleName()));
}
String startTime = formatStartTime(alarmMessage.getStartTime());
if (!StringUtil.isBlank(startTime)) {
......@@ -262,6 +254,30 @@ public class AlarmServiceImpl implements AlarmService {
.replace(" second", "秒");
}
private String translateRuleName(String ruleName) {
String key = ruleName.trim().toLowerCase(Locale.ROOT);
String translated = RULE_NAME_TRANSLATIONS.get(key);
if (translated != null) {
return translated;
}
return ruleName;
}
private static Map<String, String> buildRuleNameTranslations() {
Map<String, String> translations = new HashMap<>();
translations.put("service_resp_time_rule", "服务响应时间告警");
translations.put("service_sla_rule", "服务可用率告警");
translations.put("service_resp_time_percentile_rule", "服务分位响应时间告警");
translations.put("service_instance_resp_time_rule", "服务实例响应时间告警");
translations.put("database_access_resp_time_rule", "数据库访问响应时间告警");
translations.put("endpoint_relation_resp_time_rule", "接口关系响应时间告警");
translations.put("service_percentile_rule", "服务分位响应时间告警");
translations.put("endpoint_resp_time_rule", "接口响应时间告警");
translations.put("endpoint_sla_rule", "接口可用率告警");
translations.put("service_instance_down_rule", "服务实例存活告警");
return Collections.unmodifiableMap(translations);
}
private String formatStartTime(long startTime) {
if (startTime <= 0) {
return "";
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论