diff --git a/alerter/src/main/java/com/usthe/alert/AlerterProperties.java b/alerter/src/main/java/com/usthe/alert/AlerterProperties.java index 216eb1c..e0572c8 100644 --- a/alerter/src/main/java/com/usthe/alert/AlerterProperties.java +++ b/alerter/src/main/java/com/usthe/alert/AlerterProperties.java @@ -1,10 +1,12 @@ package com.usthe.alert; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** * 数据仓储配置属性 + * * @author tom * @date 2021/11/24 10:38 */ @@ -12,11 +14,22 @@ import org.springframework.stereotype.Component; @ConfigurationProperties(prefix = "alerter") public class AlerterProperties { + private String consoleUrl = "https://console.tancloud.cn"; + + public String getConsoleUrl() { + return consoleUrl; + } + + public void setConsoleUrl(String url) { + this.consoleUrl = url; + } + /** * 数据入口配置属性 */ private EntranceProperties entrance; + public EntranceProperties getEntrance() { return entrance; } @@ -25,6 +38,7 @@ public class AlerterProperties { this.entrance = entrance; } + /** * 数据入口配置属性 * 入口可以是从kafka rabbitmq rocketmq等消息中间件获取数据 @@ -98,4 +112,5 @@ public class AlerterProperties { } + } diff --git a/home/docs/help/alert_console.md b/home/docs/help/alert_console.md new file mode 100644 index 0000000..68cf733 --- /dev/null +++ b/home/docs/help/alert_console.md @@ -0,0 +1,18 @@ +--- +id: alert_console +title: 告警模板中自定义的控制台地址 +sidebar_label: 告警模板登录台地址 +--- + +> 阈值触发后发送告警信息,通过钉钉/企业微信/飞书机器人通知或者使用邮箱通知的时候,告警内容中有登录控制台的详情链接 + + +### 自定义设置 + +在我们的启动配置文件application.yml中,找到下面的配置 +```yml +alerter: + console-url: #这里就是我们的自定义控制台地址 +``` + +默认值是赫兹跳动的官方控制台地址 \ No newline at end of file diff --git a/manager/src/main/java/com/usthe/manager/component/alerter/DispatchAlarm.java b/manager/src/main/java/com/usthe/manager/component/alerter/DispatchAlarm.java index ca01fe0..80e7579 100644 --- a/manager/src/main/java/com/usthe/manager/component/alerter/DispatchAlarm.java +++ b/manager/src/main/java/com/usthe/manager/component/alerter/DispatchAlarm.java @@ -1,6 +1,7 @@ package com.usthe.manager.component.alerter; import com.usthe.alert.AlerterDataQueue; +import com.usthe.alert.AlerterProperties; import com.usthe.alert.AlerterWorkerPool; import com.usthe.common.util.CommonUtil; import com.usthe.common.entity.alerter.Alert; @@ -24,6 +25,7 @@ import org.springframework.stereotype.Component; import org.springframework.web.client.ResourceAccessException; import org.springframework.web.client.RestTemplate; +import javax.annotation.Resource; import javax.mail.internet.MimeMessage; import java.util.ArrayList; import java.util.Date; @@ -48,6 +50,8 @@ public class DispatchAlarm { private JavaMailSender javaMailSender; private RestTemplate restTemplate; private MailService mailService; + @Resource + private AlerterProperties alerterProperties; @Value("${spring.mail.username}") private String emailFromUser; @@ -177,13 +181,13 @@ public class DispatchAlarm { "\n所属监控ID :" + alert.getMonitorId() + "\n所属监控名称 :" + alert.getMonitorName() + "\n告警级别 :" + CommonUtil.transferAlertPriority(alert.getPriority()) + - "\n内容详情 : " + alert.getContent(); + "\n内容详情 : " + alert.getContent() + "\n"; flyBookContent.setText(text); contents1.add(flyBookContent); FlyBookWebHookDto.FlyBookContent bookContent = new FlyBookWebHookDto.FlyBookContent(); bookContent.setTag("a"); bookContent.setText("登入控制台"); - bookContent.setHref("https://www.tancloud.cn"); + bookContent.setHref(alerterProperties.getConsoleUrl()); contents1.add(bookContent); contents.add(contents1); zhCn.setTitle("[TanCloud探云告警通知]"); @@ -214,14 +218,16 @@ public class DispatchAlarm { private void sendDingTalkRobotAlert(NoticeReceiver receiver, Alert alert) { DingTalkWebHookDto dingTalkWebHookDto = new DingTalkWebHookDto(); DingTalkWebHookDto.MarkdownDTO markdownDTO = new DingTalkWebHookDto.MarkdownDTO(); - String content = "#### [TanCloud探云告警通知]\n##### **告警目标对象** : " + + StringBuilder content = new StringBuilder(); + content.append("#### [TanCloud探云告警通知]\n##### **告警目标对象** : " + alert.getTarget() + "\n " + "##### **所属监控ID** : " + alert.getMonitorId() + "\n " + "##### **所属监控名称** : " + alert.getMonitorName() + "\n " + "##### **告警级别** : " + CommonUtil.transferAlertPriority(alert.getPriority()) + "\n " + - "##### **内容详情** : " + alert.getContent(); - markdownDTO.setText(content); + "##### **内容详情** : " + alert.getContent()); + content.append("[点击跳转查看详情](" + alerterProperties.getConsoleUrl() + ")"); + markdownDTO.setText(content.toString()); markdownDTO.setTitle("TanCloud探云告警通知"); dingTalkWebHookDto.setMarkdown(markdownDTO); String webHookUrl = DingTalkWebHookDto.WEBHOOK_URL + receiver.getAccessToken(); @@ -261,8 +267,10 @@ public class DispatchAlarm { content.append("告警级别 : ") .append(CommonUtil.transferAlertPriority(alert.getPriority())).append("\n"); } - content.append("内容详情 : ").append(alert.getContent()); + content.append("内容详情 : ").append(alert.getContent() + "\n"); + content.append("[点击跳转查看详情](" + alerterProperties.getConsoleUrl() + ")"); markdownDTO.setContent(content.toString()); + //TODO 增加控制台地址登录可控制 weWorkWebHookDTO.setMarkdown(markdownDTO); String webHookUrl = WeWorkWebHookDto.WEBHOOK_URL + receiver.getWechatId(); try { diff --git a/manager/src/main/java/com/usthe/manager/service/impl/MailServiceImpl.java b/manager/src/main/java/com/usthe/manager/service/impl/MailServiceImpl.java index 640c491..e39aae8 100644 --- a/manager/src/main/java/com/usthe/manager/service/impl/MailServiceImpl.java +++ b/manager/src/main/java/com/usthe/manager/service/impl/MailServiceImpl.java @@ -1,5 +1,6 @@ package com.usthe.manager.service.impl; +import com.usthe.alert.AlerterProperties; import com.usthe.common.entity.alerter.Alert; import com.usthe.common.util.CommonUtil; import com.usthe.manager.service.MailService; @@ -11,6 +12,7 @@ import org.thymeleaf.context.Context; import javax.annotation.Resource; /** + * Mailbox sending service interface implementation class * 邮箱发送服务接口实现类 * * @author 花城 @@ -23,16 +25,20 @@ public class MailServiceImpl implements MailService { @Resource private TemplateEngine templateEngine; + @Resource + private AlerterProperties alerterProperties; @Override public String buildAlertHtmlTemplate(final Alert alert) { + // Introduce thymeleaf context parameters to render pages // 引入thymeleaf上下文参数渲染页面 Context context = new Context(); - context.setVariable("target",alert.getTarget()); - context.setVariable("monitorId",alert.getMonitorId()); - context.setVariable("monitorName",alert.getMonitorName()); + context.setVariable("target", alert.getTarget()); + context.setVariable("monitorId", alert.getMonitorId()); + context.setVariable("monitorName", alert.getMonitorName()); context.setVariable("priority", CommonUtil.transferAlertPriority(alert.getPriority())); - context.setVariable("content",alert.getContent()); + context.setVariable("content", alert.getContent()); + context.setVariable("consoleUrl", alerterProperties.getConsoleUrl()); return templateEngine.process("mailAlarm", context); } } diff --git a/manager/src/main/resources/application.yml b/manager/src/main/resources/application.yml index 1570fae..664daf9 100644 --- a/manager/src/main/resources/application.yml +++ b/manager/src/main/resources/application.yml @@ -68,4 +68,9 @@ warehouse: driver-class-name: com.taosdata.jdbc.rs.RestfulDriver url: jdbc:TAOS-RS://localhost:6041/hertzbeat username: root - password: taosdata \ No newline at end of file + password: taosdata + +#自定义告警控制台地址 +alerter: + #这里就是我们的自定义控制台地址 + console-url: https://console.tancloud.cn diff --git a/manager/src/main/resources/templates/mailAlarm.html b/manager/src/main/resources/templates/mailAlarm.html index fa994c3..6f847b4 100644 --- a/manager/src/main/resources/templates/mailAlarm.html +++ b/manager/src/main/resources/templates/mailAlarm.html @@ -700,7 +700,7 @@ 登入控制台