feat: 钉钉告警可配置

dev
huangfeng 1 year ago
parent e746addf17
commit 0e2d09270c

@ -28,6 +28,8 @@ public class RuleCheckTask {
DataService dataService; DataService dataService;
@Resource @Resource
WarningRepository warningRepository; WarningRepository warningRepository;
@Resource
DingTalkPushUtil dingTalkPushUtil;
@Scheduled(initialDelay = 90000, fixedDelay = 60000) @Scheduled(initialDelay = 90000, fixedDelay = 60000)
private void checkAll() { private void checkAll() {
@ -88,7 +90,7 @@ public class RuleCheckTask {
warningRepository.save(warning); warningRepository.save(warning);
String str = warning.getZsbName() + "-" + warning.getWarnDesc() String str = warning.getZsbName() + "-" + warning.getWarnDesc()
+ ", 采集时间:" + dateStr + ", 当前值:" + value + " " + warning.getTriggerDesc(); + ", 采集时间:" + dateStr + ", 当前值:" + value + " " + warning.getTriggerDesc();
DingTalkPushUtil.pushText(str); dingTalkPushUtil.pushText(str);
} }
} }

@ -6,6 +6,8 @@ import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.response.OapiRobotSendResponse; import com.dingtalk.api.response.OapiRobotSendResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.crypto.Mac; import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec; import javax.crypto.spec.SecretKeySpec;
@ -14,38 +16,45 @@ import java.net.URLEncoder;
/** /**
* *
*/ */
@Component
@Slf4j @Slf4j
public class DingTalkPushUtil { public class DingTalkPushUtil {
public static final String CUSTOM_ROBOT_TOKEN = "e65e730cba22e320e16926fd4ff19ce787fa2162d065792bb6562c6d4a4cf328"; @Value("${cac.dingding.send}")
public static final String SECRET = "SEC72e5fb1b4ce7f9fed55386040d599035c50f8d2a181ad66bd1277549f0716124"; public boolean send;
public static final String KEY_WORD = "运维告警: "; @Value("${cac.dingding.token}")
public String token;
@Value("${cac.dingding.secret}")
public static void pushText(String content) { public String secret;
try { public String KEY_WORD = "运维告警: ";
Long timestamp = System.currentTimeMillis();
String stringToSign = timestamp + "\n" + SECRET;
Mac mac = Mac.getInstance("HmacSHA256"); public void pushText(String content) {
mac.init(new SecretKeySpec(SECRET.getBytes("UTF-8"), "HmacSHA256")); if (send) {
byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); try {
String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); Long timestamp = System.currentTimeMillis();
String stringToSign = timestamp + "\n" + secret;
//sign字段和timestamp字段必须拼接到请求URL上否则会出现 310000 的错误信息 Mac mac = Mac.getInstance("HmacSHA256");
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?sign=" + sign + "&timestamp=" + timestamp); mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
OapiRobotSendRequest req = new OapiRobotSendRequest(); byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
/** String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
*
*/ //sign字段和timestamp字段必须拼接到请求URL上否则会出现 310000 的错误信息
//定义文本内容 DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?sign=" + sign + "&timestamp=" + timestamp);
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text(); OapiRobotSendRequest req = new OapiRobotSendRequest();
text.setContent(KEY_WORD + content); /**
//设置消息类型 *
req.setMsgtype("text"); */
req.setText(text); //定义文本内容
OapiRobotSendResponse rsp = client.execute(req, CUSTOM_ROBOT_TOKEN); OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
} catch (Exception e) { text.setContent(KEY_WORD + content);
log.error("钉钉发送失败", e); //设置消息类型
req.setMsgtype("text");
req.setText(text);
OapiRobotSendResponse rsp = client.execute(req, token);
} catch (Exception e) {
log.error("钉钉发送失败", e);
}
} }
} }

@ -26,4 +26,8 @@ spring:
max-request-size: 100MB max-request-size: 100MB
cac: cac:
dingding:
send: true
token: e65e730cba22e320e16926fd4ff19ce787fa2162d065792bb6562c6d4a4cf328
secret: SEC72e5fb1b4ce7f9fed55386040d599035c50f8d2a181ad66bd1277549f0716124
rsakey: MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKNPuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gAkM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWowcSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99EcvDQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthhYhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3UP8iWi1Qw0Y= rsakey: MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKNPuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gAkM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWowcSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99EcvDQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthhYhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3UP8iWi1Qw0Y=

@ -26,4 +26,8 @@ spring:
max-request-size: 100MB max-request-size: 100MB
cac: cac:
dingding:
send: false
token: e65e730cba22e320e16926fd4ff19ce787fa2162d065792bb6562c6d4a4cf328
secret: SEC72e5fb1b4ce7f9fed55386040d599035c50f8d2a181ad66bd1277549f0716124
rsakey: MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKNPuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gAkM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWowcSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99EcvDQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthhYhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3UP8iWi1Qw0Y= rsakey: MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKNPuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gAkM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWowcSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99EcvDQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthhYhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3UP8iWi1Qw0Y=

Loading…
Cancel
Save