From c12e7da042f9734540d9393fd75e18bfed02d6c9 Mon Sep 17 00:00:00 2001 From: tomsun28 Date: Sat, 18 Dec 2021 10:20:54 +0800 Subject: [PATCH] =?UTF-8?q?[manager]=20=E5=91=8A=E8=AD=A6=E4=BF=A1?= =?UTF-8?q?=E6=81=AFWebhook=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/alerter/DispatchAlarm.java | 24 +++++++++++-- .../config/HeaderRequestInterceptor.java | 31 ++++++++++++++++ .../manager/config/RestTemplateConfig.java | 35 +++++++++++++++++++ manager/src/main/resources/logback-spring.xml | 3 +- .../alert-notice/alert-notice.component.html | 9 +++++ 5 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 manager/src/main/java/com/usthe/manager/config/HeaderRequestInterceptor.java create mode 100644 manager/src/main/java/com/usthe/manager/config/RestTemplateConfig.java 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 9345752..0f36507 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 @@ -10,9 +10,16 @@ import com.usthe.manager.pojo.entity.NoticeReceiver; import com.usthe.manager.service.MonitorService; import com.usthe.manager.service.NoticeConfigService; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Component; +import org.springframework.web.client.ResourceAccessException; +import org.springframework.web.client.RestTemplate; import java.util.Date; import java.util.List; @@ -32,16 +39,18 @@ public class DispatchAlarm { private MonitorService monitorService; private NoticeConfigService noticeConfigService; private JavaMailSender javaMailSender; + private RestTemplate restTemplate; public DispatchAlarm(AlerterWorkerPool workerPool, AlerterDataQueue dataQueue, JavaMailSender javaMailSender,NoticeConfigService noticeConfigService, - AlertService alertService, MonitorService monitorService) { + AlertService alertService, MonitorService monitorService, RestTemplate restTemplate) { this.workerPool = workerPool; this.dataQueue = dataQueue; this.alertService = alertService; this.monitorService = monitorService; this.noticeConfigService = noticeConfigService; this.javaMailSender = javaMailSender; + this.restTemplate = restTemplate; startDispatch(); } @@ -117,7 +126,18 @@ public class DispatchAlarm { } private void sendWebHookAlert(NoticeReceiver receiver, Alert alert) { - + try { + ResponseEntity entity = restTemplate.postForEntity(receiver.getHookUrl(), alert, String.class); + if (entity.getStatusCode().value() < HttpStatus.BAD_REQUEST.value()) { + log.debug("Send WebHook: {} Success", receiver.getHookUrl()); + } else { + log.warn("Send WebHook: {} Failed", receiver.getHookUrl()); + } + } catch (ResourceAccessException e) { + log.warn("Send WebHook: {} Failed: {}.", receiver.getHookUrl(), e.getMessage()); + } catch (Exception e) { + log.error(e.getMessage(), e); + } } private void sendEmailAlert(NoticeReceiver receiver, Alert alert) { diff --git a/manager/src/main/java/com/usthe/manager/config/HeaderRequestInterceptor.java b/manager/src/main/java/com/usthe/manager/config/HeaderRequestInterceptor.java new file mode 100644 index 0000000..43daa98 --- /dev/null +++ b/manager/src/main/java/com/usthe/manager/config/HeaderRequestInterceptor.java @@ -0,0 +1,31 @@ +package com.usthe.manager.config; + +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpRequest; +import org.springframework.http.MediaType; +import org.springframework.http.client.ClientHttpRequestExecution; +import org.springframework.http.client.ClientHttpRequestInterceptor; +import org.springframework.http.client.ClientHttpResponse; + +import java.io.IOException; + +import static java.net.Proxy.Type.HTTP; + +/** + * restTemplate拦截器添加请求头信息 + * @author tom + */ +public class HeaderRequestInterceptor implements ClientHttpRequestInterceptor { + + @Override + public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) + throws IOException { + // 默认发送json + if (request.getHeaders().getContentType() == null) { + request.getHeaders().setContentType(MediaType.APPLICATION_JSON); + } + // 使用短链接 + request.getHeaders().add(HttpHeaders.CONNECTION, "close"); + return execution.execute(request, body); + } +} \ No newline at end of file diff --git a/manager/src/main/java/com/usthe/manager/config/RestTemplateConfig.java b/manager/src/main/java/com/usthe/manager/config/RestTemplateConfig.java new file mode 100644 index 0000000..7eaaa74 --- /dev/null +++ b/manager/src/main/java/com/usthe/manager/config/RestTemplateConfig.java @@ -0,0 +1,35 @@ +package com.usthe.manager.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.client.ClientHttpRequestFactory; +import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + +import java.util.Collections; + +/** + * restTemplate config + * todo 连接池 + * @author tom + * @date 2021/12/18 08:46 + */ +@Configuration +public class RestTemplateConfig { + + @Bean + public RestTemplate restTemplate(ClientHttpRequestFactory factory){ + RestTemplate restTemplate = new RestTemplate(factory); + restTemplate.setInterceptors(Collections.singletonList(new HeaderRequestInterceptor())); + return restTemplate; + } + + @Bean + public ClientHttpRequestFactory simpleClientHttpRequestFactory(){ + SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); + factory.setConnectTimeout(5000); + factory.setReadTimeout(5000); + return factory; + } + +} diff --git a/manager/src/main/resources/logback-spring.xml b/manager/src/main/resources/logback-spring.xml index 90e6569..8bd0ed4 100644 --- a/manager/src/main/resources/logback-spring.xml +++ b/manager/src/main/resources/logback-spring.xml @@ -57,6 +57,7 @@ + @@ -69,7 +70,7 @@ - + diff --git a/web-app/src/app/routes/alert/alert-notice/alert-notice.component.html b/web-app/src/app/routes/alert/alert-notice/alert-notice.component.html index ebf1679..1335d8c 100644 --- a/web-app/src/app/routes/alert/alert-notice/alert-notice.component.html +++ b/web-app/src/app/routes/alert/alert-notice/alert-notice.component.html @@ -94,6 +94,7 @@ 策略名称 接收人 转发所有 + 是否启用 最新修改时间 操作 @@ -114,6 +115,14 @@ + + + 开启 + + + 关闭 + + {{ data.gmtUpdate? data.gmtUpdate : data.gmtCreate }}