您的位置:首页 > 科技 > 能源 > 计算机培训班包就业_德阳定制建站网站建设报价_网站收录一般多久_营销型网站建设要点

计算机培训班包就业_德阳定制建站网站建设报价_网站收录一般多久_营销型网站建设要点

2024/10/5 14:17:53 来源:https://blog.csdn.net/u012151594/article/details/142551965  浏览:    关键词:计算机培训班包就业_德阳定制建站网站建设报价_网站收录一般多久_营销型网站建设要点
计算机培训班包就业_德阳定制建站网站建设报价_网站收录一般多久_营销型网站建设要点

JMeter与大模型融合应用之JMeter日志自动检测错误并机器人发送钉钉信息

业务框架

我们需要实现的基本业务框架如下
在这里插入图片描述
需求描述
我们目前要在JMeter上实现如下功能:
在这里插入图片描述
特性1:定时任务自动轮巡检测jmeter.log日志中错在ERROR的报错信息
特性2:针对ERROR报错信息自动进行捕获,并且把错误信息发送给后端大模型
特性3:大模型针对问题进行分析,并且给出问题原因和解决方案
特性4:问题原因和解决方案显示在jmeter的日志
特性5:问题原因和解决方案同时通过DingTalk机器人同步

业务实现

jmeter.log日志读取

第一步:首先我们需要读取jmeter.log日志的内容,这样才能够获取我们的日志信息,我们可以利用JMeter自带的JMeterUtils.getJMeterHome()方法后去对应jmeter.log的日志路径。
第二步:编写我们的日志读取方法,我们这里以获取jmeter最新一个错误为例

public static String readLastErrors(){List<String> errors = new ArrayList<>();try (BufferedReader br = new BufferedReader(new FileReader(JMeterUtils.getJMeterHome() + "\\bin\\jmeter.log"))) {// 读取文件中的所有行List<String> lines = new ArrayList<>();String line;while ((line = br.readLine()) != null) {lines.add(line);}// 获取最后错误信息int numLines = lines.size();for (int i = 0; i < numLines; i++) {String currentLine = lines.get(i);if(currentLine.length() < 24)continue;currentLine = currentLine.substring(24);boolean errorLine = isErrorLine(currentLine);if (errorLine) {errors.add(currentLine);}}} catch (IOException e) {e.printStackTrace();}if (errors.isEmpty()){return "";}else{return errors.get(errors.size()-1);}}

第二步:判断每一行是否有报错信息

 public static boolean isErrorLine(String line) {// 根据您的日志格式,您可能需要自定义此方法以判断某行是否是错误信息。// 示例中,只检查包含"ERROR"关键字的行。line = line.substring(0,5);if (line.equals("ERROR")){return true;}else{return false;}}

第三步:当判断有报错信息时候,组装提示词,后续提给大模型

public String prompt(String error){String prompt = String.format("你是一个资深的java开发工程师,你在java错误问题定位非常出色。当前有如下错误信息内容:%s,请你根据你的专业知识输出符合如下格式内容。问题原因:输出问题原因解决方案:输出解决方案如下【】中的内容为参考例子:【问题原因:1.参数配置错误2.参数超过限制。解决方案:1.输入正确的参数,如a 2.输入正确范围内的参数,如不能输入b】",error.replaceAll("[\\x00-\\x1F\\x7F-\\x9F]", ""));return prompt;}

这样我们就编写完成日志读取和组装提示词相关代码,完整代码如下

import org.apache.jmeter.util.JMeterUtils;import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;public class ReadJMeterLog {public static String readLastErrors(){List<String> errors = new ArrayList<>();try (BufferedReader br = new BufferedReader(new FileReader(JMeterUtils.getJMeterHome() + "\\bin\\jmeter.log"))) {
//        try (BufferedReader br = new BufferedReader(new FileReader("D:\\JMeterOriginCode\\apache-jmeter-5.1\\jmeter.log"))) {// 读取文件中的所有行List<String> lines = new ArrayList<>();String line;while ((line = br.readLine()) != null) {lines.add(line);}// 获取最后错误信息int numLines = lines.size();for (int i = 0; i < numLines; i++) {String currentLine = lines.get(i);if(currentLine.length() < 24)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com