|
|
|
@ -14,15 +14,14 @@
|
|
|
|
|
* See the License for the specific language governing permissions and |
|
|
|
|
* limitations under the License. |
|
|
|
|
*/ |
|
|
|
|
package org.apache.dolphinscheduler.dao; |
|
|
|
|
|
|
|
|
|
package org.apache.dolphinscheduler.dao; |
|
|
|
|
|
|
|
|
|
import org.apache.dolphinscheduler.common.utils.StringUtils; |
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
import org.springframework.stereotype.Component; |
|
|
|
|
import org.apache.dolphinscheduler.common.enums.AlertStatus; |
|
|
|
|
import org.apache.dolphinscheduler.common.enums.AlertType; |
|
|
|
|
import org.apache.dolphinscheduler.common.enums.ShowType; |
|
|
|
|
import org.apache.dolphinscheduler.common.utils.JSONUtils; |
|
|
|
|
import org.apache.dolphinscheduler.common.utils.StringUtils; |
|
|
|
|
import org.apache.dolphinscheduler.dao.datasource.ConnectionFactory; |
|
|
|
|
import org.apache.dolphinscheduler.dao.entity.Alert; |
|
|
|
|
import org.apache.dolphinscheduler.dao.entity.ProcessDefinition; |
|
|
|
@ -30,13 +29,17 @@ import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
|
|
|
|
|
import org.apache.dolphinscheduler.dao.entity.User; |
|
|
|
|
import org.apache.dolphinscheduler.dao.mapper.AlertMapper; |
|
|
|
|
import org.apache.dolphinscheduler.dao.mapper.UserAlertGroupMapper; |
|
|
|
|
import org.slf4j.Logger; |
|
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.Date; |
|
|
|
|
import java.util.LinkedHashMap; |
|
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
|
import org.slf4j.Logger; |
|
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
import org.springframework.stereotype.Component; |
|
|
|
|
|
|
|
|
|
@Component |
|
|
|
|
public class AlertDao extends AbstractBaseDao { |
|
|
|
|
|
|
|
|
@ -56,21 +59,23 @@ public class AlertDao extends AbstractBaseDao {
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* insert alert |
|
|
|
|
* |
|
|
|
|
* @param alert alert |
|
|
|
|
* @return add alert result |
|
|
|
|
*/ |
|
|
|
|
public int addAlert(Alert alert){ |
|
|
|
|
public int addAlert(Alert alert) { |
|
|
|
|
return alertMapper.insert(alert); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* update alert |
|
|
|
|
* |
|
|
|
|
* @param alertStatus alertStatus |
|
|
|
|
* @param log log |
|
|
|
|
* @param id id |
|
|
|
|
* @return update alert result |
|
|
|
|
*/ |
|
|
|
|
public int updateAlert(AlertStatus alertStatus,String log,int id){ |
|
|
|
|
public int updateAlert(AlertStatus alertStatus, String log, int id) { |
|
|
|
|
Alert alert = alertMapper.selectById(id); |
|
|
|
|
alert.setAlertStatus(alertStatus); |
|
|
|
|
alert.setUpdateTime(new Date()); |
|
|
|
@ -80,46 +85,61 @@ public class AlertDao extends AbstractBaseDao {
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* query user list by alert group id |
|
|
|
|
* |
|
|
|
|
* @param alerGroupId alerGroupId |
|
|
|
|
* @return user list |
|
|
|
|
*/ |
|
|
|
|
public List<User> queryUserByAlertGroupId(int alerGroupId){ |
|
|
|
|
public List<User> queryUserByAlertGroupId(int alerGroupId) { |
|
|
|
|
|
|
|
|
|
return userAlertGroupMapper.listUserByAlertgroupId(alerGroupId); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* MasterServer or WorkerServer stoped |
|
|
|
|
* |
|
|
|
|
* @param alertgroupId alertgroupId |
|
|
|
|
* @param host host |
|
|
|
|
* @param serverType serverType |
|
|
|
|
*/ |
|
|
|
|
public void sendServerStopedAlert(int alertgroupId,String host,String serverType){ |
|
|
|
|
public void sendServerStopedAlert(int alertgroupId, String host, String serverType) { |
|
|
|
|
Alert alert = new Alert(); |
|
|
|
|
String content = String.format("[{'type':'%s','host':'%s','event':'server down','warning level':'serious'}]", |
|
|
|
|
serverType, host); |
|
|
|
|
List<LinkedHashMap> serverStopList = new ArrayList<>(1); |
|
|
|
|
LinkedHashMap<String, String> serverStopedMap = new LinkedHashMap(); |
|
|
|
|
serverStopedMap.put("type", serverType); |
|
|
|
|
serverStopedMap.put("host", host); |
|
|
|
|
serverStopedMap.put("event", "server down"); |
|
|
|
|
serverStopedMap.put("warning level", "serious"); |
|
|
|
|
serverStopList.add(serverStopedMap); |
|
|
|
|
String content = JSONUtils.toJsonString(serverStopList); |
|
|
|
|
alert.setTitle("Fault tolerance warning"); |
|
|
|
|
saveTaskTimeoutAlert(alert, content, alertgroupId, null, null); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* process time out alert |
|
|
|
|
* |
|
|
|
|
* @param processInstance processInstance |
|
|
|
|
* @param processDefinition processDefinition |
|
|
|
|
*/ |
|
|
|
|
public void sendProcessTimeoutAlert(ProcessInstance processInstance, ProcessDefinition processDefinition){ |
|
|
|
|
public void sendProcessTimeoutAlert(ProcessInstance processInstance, ProcessDefinition processDefinition) { |
|
|
|
|
int alertgroupId = processInstance.getWarningGroupId(); |
|
|
|
|
String receivers = processDefinition.getReceivers(); |
|
|
|
|
String receiversCc = processDefinition.getReceiversCc(); |
|
|
|
|
Alert alert = new Alert(); |
|
|
|
|
String content = String.format("[{'id':'%d','name':'%s','event':'timeout','warnLevel':'middle'}]", |
|
|
|
|
processInstance.getId(), processInstance.getName()); |
|
|
|
|
List<LinkedHashMap> processTimeoutList = new ArrayList<>(1); |
|
|
|
|
LinkedHashMap<String, String> processTimeoutMap = new LinkedHashMap(); |
|
|
|
|
processTimeoutMap.put("id", String.valueOf(processInstance.getId())); |
|
|
|
|
processTimeoutMap.put("name", processInstance.getName()); |
|
|
|
|
processTimeoutMap.put("event", "timeout"); |
|
|
|
|
processTimeoutMap.put("warnLevel", "middle"); |
|
|
|
|
processTimeoutList.add(processTimeoutMap); |
|
|
|
|
String content = JSONUtils.toJsonString(processTimeoutList); |
|
|
|
|
alert.setTitle("Process Timeout Warn"); |
|
|
|
|
saveTaskTimeoutAlert(alert, content, alertgroupId, receivers, receiversCc); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void saveTaskTimeoutAlert(Alert alert, String content, int alertgroupId, |
|
|
|
|
String receivers, String receiversCc){ |
|
|
|
|
private void saveTaskTimeoutAlert(Alert alert, String content, int alertgroupId, |
|
|
|
|
String receivers, String receiversCc) { |
|
|
|
|
alert.setShowType(ShowType.TABLE); |
|
|
|
|
alert.setContent(content); |
|
|
|
|
alert.setAlertType(AlertType.EMAIL); |
|
|
|
@ -135,9 +155,9 @@ public class AlertDao extends AbstractBaseDao {
|
|
|
|
|
alertMapper.insert(alert); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* task timeout warn |
|
|
|
|
* |
|
|
|
|
* @param alertgroupId alertgroupId |
|
|
|
|
* @param receivers receivers |
|
|
|
|
* @param receiversCc receiversCc |
|
|
|
@ -146,34 +166,45 @@ public class AlertDao extends AbstractBaseDao {
|
|
|
|
|
* @param taskId taskId |
|
|
|
|
* @param taskName taskName |
|
|
|
|
*/ |
|
|
|
|
public void sendTaskTimeoutAlert(int alertgroupId,String receivers,String receiversCc, int processInstanceId, |
|
|
|
|
String processInstanceName, int taskId,String taskName){ |
|
|
|
|
public void sendTaskTimeoutAlert(int alertgroupId, String receivers, String receiversCc, int processInstanceId, |
|
|
|
|
String processInstanceName, int taskId, String taskName) { |
|
|
|
|
Alert alert = new Alert(); |
|
|
|
|
String content = String.format("[{'process instance id':'%d','task name':'%s','task id':'%d','task name':'%s'," + |
|
|
|
|
"'event':'timeout','warnLevel':'middle'}]", processInstanceId, processInstanceName, taskId, taskName); |
|
|
|
|
List<LinkedHashMap> taskTimeoutList = new ArrayList<>(1); |
|
|
|
|
LinkedHashMap<String, String> taskTimeoutMap = new LinkedHashMap(); |
|
|
|
|
taskTimeoutMap.put("process instance id", String.valueOf(processInstanceId)); |
|
|
|
|
taskTimeoutMap.put("process name", processInstanceName); |
|
|
|
|
taskTimeoutMap.put("task id", String.valueOf(taskId)); |
|
|
|
|
taskTimeoutMap.put("task name", taskName); |
|
|
|
|
taskTimeoutMap.put("event", "timeout"); |
|
|
|
|
taskTimeoutMap.put("warnLevel", "middle"); |
|
|
|
|
taskTimeoutList.add(taskTimeoutMap); |
|
|
|
|
String content = JSONUtils.toJsonString(taskTimeoutList); |
|
|
|
|
alert.setTitle("Task Timeout Warn"); |
|
|
|
|
saveTaskTimeoutAlert(alert, content, alertgroupId, receivers, receiversCc); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* list the alert information of waiting to be executed |
|
|
|
|
* |
|
|
|
|
* @return alert list |
|
|
|
|
*/ |
|
|
|
|
public List<Alert> listWaitExecutionAlert(){ |
|
|
|
|
public List<Alert> listWaitExecutionAlert() { |
|
|
|
|
return alertMapper.listAlertByStatus(AlertStatus.WAIT_EXECUTION); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* list user information by alert group id |
|
|
|
|
* |
|
|
|
|
* @param alertgroupId alertgroupId |
|
|
|
|
* @return user list |
|
|
|
|
*/ |
|
|
|
|
public List<User> listUserByAlertgroupId(int alertgroupId){ |
|
|
|
|
public List<User> listUserByAlertgroupId(int alertgroupId) { |
|
|
|
|
return userAlertGroupMapper.listUserByAlertgroupId(alertgroupId); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* for test |
|
|
|
|
* |
|
|
|
|
* @return AlertMapper |
|
|
|
|
*/ |
|
|
|
|
public AlertMapper getAlertMapper() { |
|
|
|
|