|
|
|
@ -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,6 +59,7 @@ public class AlertDao extends AbstractBaseDao {
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* insert alert |
|
|
|
|
* |
|
|
|
|
* @param alert alert |
|
|
|
|
* @return add alert result |
|
|
|
|
*/ |
|
|
|
@ -65,6 +69,7 @@ public class AlertDao extends AbstractBaseDao {
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* update alert |
|
|
|
|
* |
|
|
|
|
* @param alertStatus alertStatus |
|
|
|
|
* @param log log |
|
|
|
|
* @param id id |
|
|
|
@ -80,6 +85,7 @@ public class AlertDao extends AbstractBaseDao {
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* query user list by alert group id |
|
|
|
|
* |
|
|
|
|
* @param alerGroupId alerGroupId |
|
|
|
|
* @return user list |
|
|
|
|
*/ |
|
|
|
@ -90,20 +96,28 @@ public class AlertDao extends AbstractBaseDao {
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* MasterServer or WorkerServer stoped |
|
|
|
|
* |
|
|
|
|
* @param alertgroupId alertgroupId |
|
|
|
|
* @param host host |
|
|
|
|
* @param serverType 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 |
|
|
|
|
*/ |
|
|
|
@ -112,8 +126,14 @@ public class AlertDao extends AbstractBaseDao {
|
|
|
|
|
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); |
|
|
|
|
} |
|
|
|
@ -135,9 +155,9 @@ public class AlertDao extends AbstractBaseDao {
|
|
|
|
|
alertMapper.insert(alert); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* task timeout warn |
|
|
|
|
* |
|
|
|
|
* @param alertgroupId alertgroupId |
|
|
|
|
* @param receivers receivers |
|
|
|
|
* @param receiversCc receiversCc |
|
|
|
@ -149,14 +169,23 @@ public class AlertDao extends AbstractBaseDao {
|
|
|
|
|
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() { |
|
|
|
@ -165,6 +194,7 @@ public class AlertDao extends AbstractBaseDao {
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* list user information by alert group id |
|
|
|
|
* |
|
|
|
|
* @param alertgroupId alertgroupId |
|
|
|
|
* @return user list |
|
|
|
|
*/ |
|
|
|
@ -174,6 +204,7 @@ public class AlertDao extends AbstractBaseDao {
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* for test |
|
|
|
|
* |
|
|
|
|
* @return AlertMapper |
|
|
|
|
*/ |
|
|
|
|
public AlertMapper getAlertMapper() { |
|
|
|
|