代码接入lark报警工具类
作者原创,转摘请注明原地址,感谢 。
接入LarK报警实体类:
package model; import lombok.*; import java.io.Serializable; /** * @version: java version 1.8+ * @Author : Eillot * @Explain : * @contact: * @Time : 2019/7/19 2:28 PM * @File : AlertModel * @Software: IntelliJ IDEA 2018.1.8 */ @Data @Builder public class AlertModel implements Serializable{ private static final long serialVersionUID = -484663548726471548L; /** * 报警内容 */ private String message; /** * 报警名称 */ private String ruleName; /** * 报警地址 可以指定自己系统的一个url */ private String ruleUrl; /** * alerting 告警;ok 恢复 */ private String state; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getRuleName() { return ruleName; } public void setRuleName(String ruleName) { this.ruleName = ruleName; } public String getRuleUrl() { return ruleUrl; } public void setRuleUrl(String ruleUrl) { this.ruleUrl = ruleUrl; } public AlertModel(){} public AlertModel(String message, String ruleName, String ruleUrl, String state) { this.message = message; this.ruleName = ruleName; this.ruleUrl = ruleUrl; this.state = state; } @Getter public enum StateEnum{ ALERTING("alerting"), OK("ok"), ; private String msg; StateEnum(String msg){ this.msg = msg; } } }
实操上代码
package report; import cn.hutool.http.Header; import cn.hutool.http.HttpRequest; import com.alibaba.dubbo.common.json.JSON; import lombok.extern.slf4j.Slf4j; import model.AlertModel; import org.modelmapper.ModelMapper; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.web.client.RestTemplate; import java.util.HashMap; /** * @version: java version 1.8+ * @Author : Eillot * @Explain : * @contact: * @Time : 2019/7/19 10:22 AM * @File : SendLarkNotification * @Software: IntelliJ IDEA 2018.1.8 */ @Slf4j public class SendLarkNotification { /** * 功能:接入Lark通知 * @param ruleName 报警名称 * @param ruleUrl 报警规则地址 * @param url Lark 配置地址 * @param alertMessage 告警内容 * @return */ public static boolean alert(String ruleName,String ruleUrl, String url,String alertMessage) { RestTemplate restTemplate= new RestTemplate(); /** if (StringUtils.isNotEmpty(alertMessage) && alertMessage.length() > 40000) { alertMessage = StringUtils.substring(alertMessage, 0, 40000); }**/ AlertModel alertModel = AlertModel.builder() .message(alertMessage) .ruleName(ruleName) .ruleUrl(ruleUrl) .state(AlertModel.StateEnum.ALERTING.getMsg()).build(); log.warn("http alert param={}", alertModel); HttpHeaders httpHeaders = new HttpHeaders(); MediaType mediaType = MediaType.parseMediaType("application/json;charset=UTF-8"); httpHeaders.setContentType(mediaType); httpHeaders.add("Accept", MediaType.APPLICATION_JSON.toString()); HttpEntity<AlertModel> httpEntity = new HttpEntity<>(alertModel, httpHeaders); try { HashMap<String, Object> map = new ModelMapper().map(alertModel, HashMap.class); /** * header信息,header属性信息可以多次调用此方法进行设置即可 */ String result = HttpRequest.post(url) .header(Header.CONTENT_TYPE, "application/json;charset=UTF-8") .header(Header.ACCEPT, MediaType.APPLICATION_JSON.toString()) .body(JSON.json(alertModel)) .timeout(20000) .execute().body(); System.out.println(result); log.info("http alert [OK], alertModel={}, result={}", alertModel, result); }catch (Exception e){ log.error("http alert [ERROR] {}", e.getMessage(), e); return false; } return true; } /** * 测试代码 * @param args */ /** public static void main(String[] args) { //接入Lark的应用地址 String url = "xxxx";//改为自己的应用部署的地址 String alertMessage="1122334455"; String ruleName = "我是测试呀"; String ruleUrl = "我是测试的url呀"; Boolean b = alert(ruleName,ruleUrl,url,alertMessage); System.out.println(b); }*/ }
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号