feat(REQ-3824) - 业务节点长时间卡住告警
This commit is contained in:
parent
ac4088b28d
commit
2e33b3aba8
@ -10,7 +10,6 @@ import com.dingtalk.api.response.OapiRobotSendResponse;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.HashMap;
|
||||
@ -134,9 +133,9 @@ public class DingTalkUtils {
|
||||
}
|
||||
|
||||
public static void sendDingTalkForBizNodeAlter(String profile, AlterDTO alterDTO, List<String> atMobiles) {
|
||||
if (CollectionUtils.isEmpty(atMobiles)) {
|
||||
return;
|
||||
}
|
||||
// if (CollectionUtils.isEmpty(atMobiles)) {
|
||||
// return;
|
||||
// }
|
||||
String processInstanceId = alterDTO.getProcessInstanceId();
|
||||
OapiRobotSendRequest request = new OapiRobotSendRequest();
|
||||
request.setMsgtype("markdown");
|
||||
@ -145,13 +144,25 @@ public class DingTalkUtils {
|
||||
markdown.setText("#### [" + profile + "]业务节点长时间停止\n" +
|
||||
"> 节点相关信息: " + JSONUtil.toJsonStr(alterDTO) + "\n\n" +
|
||||
"> ##### [点击查看审批日志](" + getWebUrl(profile) + "/#/workflow/examples?processInstanceId=" + processInstanceId + ") \n\n" +
|
||||
"> ##### 提示:如果以上地址提示未登录,请在对应环境 OMS 系统登录后并点击审批管理的功能后,再使用。或者复制实例 ID 到 OMS 中手动查询");
|
||||
"> ##### 提示:如果以上地址提示未登录,请在对应环境 OMS 系统登录后并点击审批管理的功能后,再使用。或者复制实例 ID 到 OMS 中手动查询 \n\n" +
|
||||
mobiles(atMobiles));
|
||||
request.setMarkdown(markdown);
|
||||
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
|
||||
at.setAtMobiles(atMobiles);
|
||||
at.setIsAtAll(false);
|
||||
request.setAt(at);
|
||||
// sendDingTalk(request);
|
||||
sendDingTalk(request);
|
||||
}
|
||||
|
||||
public static String mobiles(List<String> atMobiles) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < atMobiles.size(); i++) {
|
||||
if (i != 0) {
|
||||
sb.append(",");
|
||||
}
|
||||
sb.append("@").append(atMobiles.get(i));
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static void sendDingTalkForTransferToAdminError(String profile, String processInstanceId, String taskDefinitionKey, Object orgScopes) {
|
||||
|
||||
@ -13,7 +13,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
|
||||
@MapperScan({"cn.axzo.workflow.core.**.mapper", "cn.axzo.workflow.admin.**.mapper"})
|
||||
@ComponentScan({"cn.axzo.workflow"})
|
||||
@EnableFeignClients("cn.axzo.oss")
|
||||
@EnableFeignClients({"cn.axzo.oss", "cn.axzo.riven.client.feign"})
|
||||
@SpringBootApplication(exclude = RabbitAutoConfiguration.class)
|
||||
@EnableTransactionManagement
|
||||
@EnableCaching
|
||||
|
||||
@ -1,14 +1,25 @@
|
||||
package cn.axzo.workflow.server.alter;
|
||||
|
||||
import cn.axzo.framework.jackson.utility.JSON;
|
||||
import cn.axzo.riven.client.common.enums.DingTalkMsgTypeEnum;
|
||||
import cn.axzo.riven.client.feign.DingDingMsgApi;
|
||||
import cn.axzo.riven.client.model.SampleMarkdown;
|
||||
import cn.axzo.riven.client.req.DingDingSendRebootGroupMsgReq;
|
||||
import cn.axzo.workflow.common.model.dto.AlterDTO;
|
||||
import cn.axzo.workflow.core.conf.SupportRefreshProperties;
|
||||
import cn.axzo.workflow.core.listener.Alter;
|
||||
import cn.axzo.workflow.core.util.DingTalkUtils;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Objects;
|
||||
|
||||
import static cn.axzo.workflow.core.util.DingTalkUtils.getWebUrl;
|
||||
import static cn.axzo.workflow.core.util.DingTalkUtils.mobiles;
|
||||
|
||||
/**
|
||||
* 钉钉告警实现
|
||||
@ -24,11 +35,39 @@ public class DingTalkAlter implements Alter {
|
||||
private String profile;
|
||||
@Resource
|
||||
private SupportRefreshProperties refreshProperties;
|
||||
@Resource
|
||||
private DingDingMsgApi dingDingMsgApi;
|
||||
|
||||
@Override
|
||||
public void invoke(AlterDTO alterDTO) {
|
||||
log.info("send biz node alter : {}", JSON.toJSONString(alterDTO));
|
||||
// DingTalkUtils.sendDingTalkForBizNodeAlter(profile, alterDTO, refreshProperties.getAlterMobiles());
|
||||
if (Objects.equals(profile, "master")) {
|
||||
DingTalkUtils.sendDingTalkForBizNodeAlter(profile, alterDTO, refreshProperties.getAlterMobiles());
|
||||
} else {
|
||||
rivenDingtalk(alterDTO);
|
||||
}
|
||||
}
|
||||
|
||||
private void rivenDingtalk(AlterDTO alterDTO) {
|
||||
DingDingSendRebootGroupMsgReq req = new DingDingSendRebootGroupMsgReq();
|
||||
req.setDingDingScene("WORKFLOW_ENGINE_BIZNODE_ALTER");
|
||||
String processInstanceId = alterDTO.getProcessInstanceId();
|
||||
String title = "Notice 业务节点长时间停止告警, Env: " + profile;
|
||||
String text = "#### [" + profile + "]业务节点长时间停止\n" +
|
||||
"> 节点相关信息: " + JSONUtil.toJsonStr(alterDTO) + "\n\n" +
|
||||
"> ##### [点击查看审批日志](" + getWebUrl(profile) + "/#/workflow/examples?processInstanceId=" + processInstanceId + ") \n\n" +
|
||||
"> ##### 提示:如果以上地址提示未登录,请在对应环境 OMS 系统登录后并点击审批管理的功能后,再使用。或者复制实例 ID 到 OMS 中手动查询 \n\n " +
|
||||
mobiles(refreshProperties.getAlterMobiles());
|
||||
SampleMarkdown markdown = new SampleMarkdown(title, text);
|
||||
|
||||
JSONObject markdownJson = JSONObject.parseObject(markdown.toJson());
|
||||
JSONObject atMobiles = new JSONObject();
|
||||
atMobiles.put("atMobiles", refreshProperties.getAlterMobiles());
|
||||
markdownJson.put("at", atMobiles);
|
||||
markdownJson.put("isAtAll", false);
|
||||
req.setDingDingJson(markdownJson.toJSONString());
|
||||
req.setMsgType(DingTalkMsgTypeEnum.sampleMarkdown);
|
||||
dingDingMsgApi.sendRebootGroupMsg(req);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user