1.场景:
线上会出现接口不下发具体的应用信息,出现这种情况时希望能实现自动发送报警邮件以便于有问题及时关注。
2.使用的工具:
jmeter
3.目录结构、:
![](https://img-blog.csdnimg.cn/img_convert/123021ff600c9897722282aaa2a8405b.png)
4.步骤:
1.定义用户定义的变量
![](https://img-blog.csdnimg.cn/img_convert/8c2877f93951618b3ed09e50be849d96.png)
添加一个beanshell断言----编写beanShell断言
获取请求参数,响应结果和响应时间是为了后续邮件输出
发送报警邮件的条件是包括响应结果中的特有字段和响应时间不能超过2s(time的值在用户定义变量中已赋值)
log.info("------开启beanshell判断--------");
//获取请求参数
String request=prev.getSamplerData();
vars.put("resquest",request);
//获取响应结果
String respone=prev.getResponseDataAsString();
vars.put("respdata",respone);
//响应状态码
String code = SampleResult.getResponseCode();
vars.put("respcode",code);
//计算响应时间
rst=prev.getEndTime()-prev.getStartTime();
vars.put("resptime",rst.toString());
log.info("时间差:"+rst);
InetAddress ia=InetAddress.getLocalHost();
String IP =ia.getHostAddress();
String HostName=ia.getHostName();
vars.put("IP",IP);
vars.put("HostName",HostName);
if(respone.contains("app_infos")&&rst<${time})
{
vars.put("sendemail","no");
}else{
vars.put("sendemail","yes");
log.error("--------Do you send sendemail ? :"+vars.get("sendemail"));
}
添加一个如果if控制器
作用是判断是否发送邮件 条件为"${sendemail}"=="yes"
![](https://img-blog.csdnimg.cn/img_convert/906aa81224c41bd0b3ceba863069ac3e.png)
然后在添加一个smtp取样器
这块主要是邮箱服务器信息,注意:这一块的password是有些邮箱类型的授权码!比如@163.com邮箱
![](https://img-blog.csdnimg.cn/img_convert/ad5cc8989f438d880c66a1a8d0f0b9cf.png)
这一块是邮件的主要内容
![](https://img-blog.csdnimg.cn/img_convert/c54bd7312c37db285faa29af08b68560.png)
具体效果
![](https://img-blog.csdnimg.cn/img_convert/edfb8be1b66db7c135bf8dd760922757.png)