「java邮件报警」JAVA 发邮件

博主:adminadmin 2023-01-27 06:39:05 325

本篇文章给大家谈谈java邮件报警,以及JAVA 发邮件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Jenkins 自动构建部署tomcat项目

Jenkins 是一个开源的、功能强大的应用程序,可持续集成并且持续交付项目。Jenkins自动构建项目的流程原理如下图所示:

用户通过将源码push到svn或者git等仓库上,然后Jenkins会定期pull检查仓库中的源码是否有变化。如发生变化则会重新构建测试项目并打包生成相应的文件存放在指定的目录,这过程中的完成情况可设置以邮件的形式反馈给管理员,并且管理员可登陆到Jenkins上查看相应项目的构建情况。接着项目构建成功后,Jenkins会把相应的项目包推送到指定的服务器上的指定目录下, 然后执行相应的命令进行项目的部署。

接着我们就来看看如何使用Jenkins完成tomcat项目的自动构建部署。

Jenkins的安装可参考:

在Jenkinsweb界面中的系统管理-系统配置 添加相应的SSH Servers:

如上图所示,添加相应的SSH Server的Ip、用户密码等信息,并设置远程主目录为根目录,也可以配置SSH key 实现免密认证访问。

因为本次实验中我需要构建 此项目,因此在构建之前需要保证Jenkins能够连接上GitHub。此实验中,我的Jenkins运行在tomcat应用上,因此其运行用户为tomcat,所以需要使用tomcat用户生成相应的ssh key 然后设置到github 的 setting中。

把上述的id_rsa.pub内容复制粘贴到github的setting中的SSH and GPG keys上:

配置完成后,能够出现下述信息,说明tomcat 用户连接到github已经成功。

在系统管理-系统设置中找到下图的设置,并配置相关的邮件服务器信息

点击新建任务,输入项目名后选择构建一个自由风格的软件项目并确定保存。

在源码管理中添加git作为源码仓库。

设置轮询SCM为每15分钟轮询一次,此处的编写规则遵循crontab 任务的周期编写规则。

在构建增加调用顶层Maven模板的步骤,添加目标为clean package,用于将相应的java项目打包成war包,存放在target目录下。

在构建后的步骤中,新增Editable Email Notification,并在高级中配置触发邮件报警的条件:

此处设置的recipient List 为上一步设置的收件人列表

继续在构建后操作添加步骤:Send build artifacts over SSH

配置完成后点击保存即可

在Gameoflife任务的工作空间中,点击立即构建按钮触发新的构建,点击Build history可查看相应的构建情况:

另外在相应的构建任务中点击查看控制台输出,能够查看构建的结果及相应信息输出,有助于排查错误。

从下图看到,报警邮件也触发成功了。

最后,此时如果用户对修改相应的git仓库的中源码,在下一次git轮询Jenkins会自动触发相应的项目构建并进行推送部署,用户可查看相应的git轮询日志来查看轮询的情况。

网上110怎么报警

以北京为例:可以发电子邮件,也可以去110的网站,各地区110网站是不同的,具体可以去网上搜索。

联系方式:

1、信件联络方式

北京市公安局110信箱收,(免贴邮票),邮编100740

2、110网站

3、电子邮件

E-mail:110@bjgaj.gov.cn

XXL-JOB告警消息推送改造

目前JOB的调度框架非常多,由于之前一直在用XXL-JOB这个轻量级的调度框架,所以这么多年也一直用,不过对于JOB调度来说,我们很多时候需要对JOB的执行情况进行监控,框架默认带了邮件的报警,不过由于使用习惯的问题,邮件报警不太习惯,所以这里改造为通过钉钉的机器人进行告警推送。

Step1、创建钉钉的群的机器人,这里就不截图了,这里选择的验证方式是签名验证(不同的方式改动会略有差异)

Step2、将相关配置写入到配置文件

找到xxl-job-admin的application.properties,在最下面增加配置:

```

dingding.accesstoken=你的钉钉机器人的token

dingding.key=机器人的SECkey,开头是“SEC”

dingding.url=

```

Step3、读取application.properties的配置

找到com.xxl.job.admin.core.conf.XxlJobAdminConfig文件,读取出刚才的配置

Step4、在JobAlarmer增加钉钉机器人告警的方法

```

/**

* job alarm 通过钉钉机器人推送job告警

*

* @param info

* @param jobLog

* @return

*/

public boolean DingRobotalarm(XxlJobInfo info, XxlJobLog jobLog) {

boolean result =false;

    if (jobAlarmList!=null jobAlarmList.size()0) {

result =true;  // success means all-success

        for (JobAlarm alarm:jobAlarmList) {

boolean resultItem =false;

            try {

DDMsg ddMsg=new DDMsg();

                resultItem = ddMsg.PushRobotMsg(info, jobLog); //发送告警信息

            }catch (Exception e) {

logger.error(e.getMessage(), e);

            }

if (!resultItem) {

result =false;

            }

}

}

return result;

}

```

Step5、增加DDMsg.java 类

```

package com.xxl.job.admin.core.alarm;

import com.xxl.job.admin.core.conf.XxlJobAdminConfig;

import com.xxl.job.admin.core.model.XxlJobInfo;

import com.xxl.job.admin.core.model.XxlJobLog;

import javax.crypto.Mac;

import javax.crypto.spec.SecretKeySpec;

import com.xxl.job.admin.core.util.HttpRequest;

import org.apache.tomcat.util.codec.binary.Base64;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.context.annotation.Configuration;

import org.springframework.stereotype.Component;

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

import java.security.InvalidKeyException;

import java.security.NoSuchAlgorithmException;

/**

* @PROJECT xxl-job

* @ClassName DDMsg

* @Author 唐尘

* @date 2021/3/23

* @time 11:56

* @Description: TODO

* @return

*/

@Configuration

@Component

//@PropertySource({"classpath:application.properties"})

public class DDMsg {

private static Loggerlogger = LoggerFactory.getLogger(DDMsg.class);

    public boolean PushRobotMsg(XxlJobInfo info, XxlJobLog jobLog)throws Exception {

String dingdingaccesstoken=XxlJobAdminConfig.getAdminConfig().getDingdingaccesstoken();

        String url=XxlJobAdminConfig.getAdminConfig().getDingdingurl();

        // 获取logid

        String logid = String.valueOf(jobLog.getId());

        // todo 根据id读取错误日志 ,这里后续再完善

        Long timestamp = System.currentTimeMillis();

        String signres =sign(timestamp);

        String DingDingRobotUrl = url + dingdingaccesstoken +"timestamp=" + timestamp +"sign=" + signres;

        String msgbody ="任务ID:" + jobLog.getJobId() +",任务描述:" + info.getJobDesc() +"执行出错,请及时处理!LogId:" + jobLog.getId() +",出错信息:" + jobLog.getHandleMsg();

        String msg ="{\"msgtype\": \"text\",\"text\": {\"content\": \"" + msgbody +"\"}}";

        logger.info(msgbody);

        try {

HttpRequest.postBody(DingDingRobotUrl, msg);

return true;

        }catch (Exception e){

return false;

        }

}

public static Stringsign(Long timestamp)throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {

String key=XxlJobAdminConfig.getAdminConfig().getDingdingkey();

        String stringToSign = timestamp +"\n" + key;

        Mac mac = Mac.getInstance("HmacSHA256");

        mac.init(new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256"));

        byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));

        String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");

        return sign;

    }

}

```

Step6、修改默认的钉钉的告警方法

找到类文件JobFailMonitorHelper.java,修改如下:

然后重新构建发布即可

java邮件报警的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于JAVA 发邮件、java邮件报警的信息别忘了在本站进行查找喔。