diff options
| author | LAPTOP-CUUVN8AS\wk <[email protected]> | 2020-09-18 17:34:54 +0800 |
|---|---|---|
| committer | LAPTOP-CUUVN8AS\wk <[email protected]> | 2020-09-18 17:34:54 +0800 |
| commit | d068af9ebe059bb6df98f10d81dcc0fb0a3552a8 (patch) | |
| tree | f6298ad8e62bce44f64183f1bb22136fd914a134 /src/main | |
| parent | 37f0bc3d31ccacce76ff0ac9ed9c77fa99cdf9fb (diff) | |
普罗米修斯监控增加两个自定义参数
Diffstat (limited to 'src/main')
9 files changed, 246 insertions, 54 deletions
diff --git a/src/main/java/com/mesa/reportservice/controller/ScheduledResultController.java b/src/main/java/com/mesa/reportservice/controller/ScheduledResultController.java index a6b53b2..245ece3 100644 --- a/src/main/java/com/mesa/reportservice/controller/ScheduledResultController.java +++ b/src/main/java/com/mesa/reportservice/controller/ScheduledResultController.java @@ -3,10 +3,7 @@ package com.mesa.reportservice.controller; import com.mesa.reportservice.bean.JobEntity; import com.mesa.reportservice.configuration.GlobelConfig; import com.mesa.reportservice.configuration.HttpClientPool; -import com.mesa.reportservice.service.ExcuteProcessService; -import com.mesa.reportservice.service.ExcuteService; -import com.mesa.reportservice.service.MysqlService; -import com.mesa.reportservice.service.ZkService; +import com.mesa.reportservice.service.*; import org.apache.commons.codec.digest.DigestUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.EnableScheduling; diff --git a/src/main/java/com/mesa/reportservice/service/MonitorService.java b/src/main/java/com/mesa/reportservice/service/MonitorService.java new file mode 100644 index 0000000..88dc242 --- /dev/null +++ b/src/main/java/com/mesa/reportservice/service/MonitorService.java @@ -0,0 +1,14 @@ +package com.mesa.reportservice.service; + + +import org.springframework.stereotype.Service; + +/** + * Created by wk1 on 2020/1/6. + */ +public interface MonitorService { + + + void addSuccess(); + void addFail(); +}
\ No newline at end of file diff --git a/src/main/java/com/mesa/reportservice/service/MysqlService.java b/src/main/java/com/mesa/reportservice/service/MysqlService.java index e4db468..e1402cf 100644 --- a/src/main/java/com/mesa/reportservice/service/MysqlService.java +++ b/src/main/java/com/mesa/reportservice/service/MysqlService.java @@ -9,15 +9,15 @@ import java.util.List; public interface MysqlService { - List<JobEntity> getJobForExcute(); + List<JobEntity> getJobForExcute() throws Exception; - List<JobEntity> getJobTask(int Rows); + List<JobEntity> getJobTask(int Rows) throws Exception; int updateProcesses(JobEntity job); - int updateStatue(JobEntity job) ; + int updateStatue(JobEntity job); } diff --git a/src/main/java/com/mesa/reportservice/service/impl/ExcuteProcessServiceImpl.java b/src/main/java/com/mesa/reportservice/service/impl/ExcuteProcessServiceImpl.java index b203ed5..8d849e5 100644 --- a/src/main/java/com/mesa/reportservice/service/impl/ExcuteProcessServiceImpl.java +++ b/src/main/java/com/mesa/reportservice/service/impl/ExcuteProcessServiceImpl.java @@ -5,10 +5,7 @@ import com.mesa.reportservice.bean.HttpResult; import com.mesa.reportservice.bean.JobEntity; import com.mesa.reportservice.configuration.ClickhouseConfig; import com.mesa.reportservice.configuration.GlobelConfig; -import com.mesa.reportservice.service.ClickhouseService; -import com.mesa.reportservice.service.ExcuteProcessService; -import com.mesa.reportservice.service.HbaseService; -import com.mesa.reportservice.service.MysqlService; +import com.mesa.reportservice.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -30,7 +27,8 @@ public class ExcuteProcessServiceImpl implements ExcuteProcessService { private MysqlService ms; @Autowired private HbaseService hs; - + @Autowired + private MonitorService mons; @Override public void updateResultMessage(JobEntity je) { @@ -50,10 +48,12 @@ public class ExcuteProcessServiceImpl implements ExcuteProcessService { je.setExcuteDetail("SUCCESS"); je.setExcuteProcess(100); je.setStatus(2); + mons.addSuccess(); logger.info("success save to hbase resultid =" + je.getResultId() + " excutesql=" + je.getQuerySql()); } else { je.setStatus(5); je.setExcuteDetail("Write Data Error"); + mons.addFail(); logger.error("save hbase error resultid =" + je.getResultId() + " excutesql=" + je.getQuerySql()); } break; @@ -81,12 +81,12 @@ public class ExcuteProcessServiceImpl implements ExcuteProcessService { case 555999: je.setStatus(7); je.setExcuteDetail("Unknow Error"); - logger.error("unknow error resultid =" + je.getResultId() + " excutesql=" + je.getQuerySql()); + logger.error("Unknow Error resultid =" + je.getResultId() + " excutesql=" + je.getQuerySql()); break; default: je.setStatus(8); je.setExcuteDetail("System Error"); - logger.error("system error resultid =" + je.getResultId() + " excutesql=" + je.getQuerySql()); + logger.error("System Error resultid =" + je.getResultId() + " excutesql=" + je.getQuerySql()); } } @@ -98,7 +98,9 @@ public class ExcuteProcessServiceImpl implements ExcuteProcessService { } while (number != 1 && z >= 0); } catch (Exception e) { - // updateErrorMessage(je.getResultId(), 6, "Result Write To Database Error"); + je.setStatus(10); + je.setExcuteDetail("Database Error"); + ms.updateProcesses(je); logger.error("save database error queryid=" + je.getResultId() + e.toString()); } finally { diff --git a/src/main/java/com/mesa/reportservice/service/impl/MonitorServiceImpl.java b/src/main/java/com/mesa/reportservice/service/impl/MonitorServiceImpl.java new file mode 100644 index 0000000..2ab4170 --- /dev/null +++ b/src/main/java/com/mesa/reportservice/service/impl/MonitorServiceImpl.java @@ -0,0 +1,71 @@ +package com.mesa.reportservice.service.impl; + +import com.mesa.reportservice.configuration.GlobelConfig; +import com.mesa.reportservice.configuration.ZkProperties; +import com.mesa.reportservice.service.MonitorService; +import com.mesa.reportservice.service.ZkService; +import com.mesa.reportservice.util.Logs; +import io.micrometer.core.instrument.*; +import org.apache.commons.collections.map.HashedMap; +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.api.ExistsBuilder; +import org.apache.zookeeper.CreateMode; +import org.apache.zookeeper.data.Stat; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import javax.annotation.PostConstruct; +import java.net.InetAddress; +import java.util.List; +import java.util.Map; + +/** + * Created by wk1 on 2020/1/6. + */ +@Service +public class MonitorServiceImpl implements MonitorService { + + private final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(this.getClass()); + + @Autowired + MeterRegistry registry; + + private Counter counter_report_success; + private Counter counter_report_fail; + + @PostConstruct + public void init(){ + + counter_report_success = registry.counter("report_success_count", "reportJob", "report_success"); + + counter_report_fail = registry.counter("report_fail_count", "reportJob", "report_error"); + } + @Override + public void addSuccess() { + + try{ + counter_report_success.increment(); + } catch (Exception e) { + logger.error(e.toString()); + } + } + @Override + public void addFail() { + + try{ + counter_report_fail.increment(); + } catch (Exception e) { + logger.error(e.toString()); + } + } + + + public MeterRegistry getRegistry() { + return registry; + } + + public void setRegistry(MeterRegistry registry) { + this.registry = registry; + } +} diff --git a/src/main/java/com/mesa/reportservice/service/impl/MysqlServiceImpl.java b/src/main/java/com/mesa/reportservice/service/impl/MysqlServiceImpl.java index 1b216b2..efee435 100644 --- a/src/main/java/com/mesa/reportservice/service/impl/MysqlServiceImpl.java +++ b/src/main/java/com/mesa/reportservice/service/impl/MysqlServiceImpl.java @@ -19,19 +19,20 @@ import java.util.List; */ @Service public class MysqlServiceImpl implements MysqlService { + private final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(this.getClass()); @Autowired public ReportResultMapper rrm; @Override - public List<JobEntity> getJobForExcute() { + public List<JobEntity> getJobForExcute() throws Exception{ return rrm.getJobForExcute(); } @Override - public List<JobEntity> getJobTask(int rows) { + public List<JobEntity> getJobTask(int rows) throws Exception{ String current_time = DateUtil.getDate(); @@ -44,24 +45,35 @@ public class MysqlServiceImpl implements MysqlService { } @Override - public int updateProcesses(JobEntity job) { - - Date currentTime = new Date(); - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String sDate = formatter.format(currentTime); - java.sql.Timestamp nowTime = java.sql.Timestamp.valueOf(sDate); - job.setOpTime(sDate); - return rrm.updateProcesses(job); + public int updateProcesses(JobEntity job){ + + try { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String sDate = formatter.format(currentTime); + java.sql.Timestamp nowTime = java.sql.Timestamp.valueOf(sDate); + job.setOpTime(sDate); + return rrm.updateProcesses(job); + } + catch(Exception e){ + logger.error(e.toString()); + return 0; + } } @Override public int updateStatue(JobEntity job) { - - Date currentTime = new Date(); - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String sDate = formatter.format(currentTime); - java.sql.Timestamp nowTime = java.sql.Timestamp.valueOf(sDate); - job.setOpTime(sDate); - return rrm.updateStatue(job); + try { + Date currentTime = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String sDate = formatter.format(currentTime); + java.sql.Timestamp nowTime = java.sql.Timestamp.valueOf(sDate); + job.setOpTime(sDate); + return rrm.updateStatue(job); + } + catch(Exception e){ + logger.error(e.toString()); + return 0; + } } }
\ No newline at end of file diff --git a/src/main/resources/config/application.properties b/src/main/resources/config/application.properties index 1d5bffa..538c39f 100644 --- a/src/main/resources/config/application.properties +++ b/src/main/resources/config/application.properties @@ -111,7 +111,7 @@ spring.datasource.druid.stat-view-servlet.login-password=admin #Spring��أ����ڲ����ӿڵ��õļ��,��Ҫ����aop��ذ� spring.datasource.druid.aop-patterns=com.mesa.reportservice.controller.*,com.mesa.reportservice.service.*,com.mesa.reportservice.mapper.* - +logging.config: classpath:./config/log4j2-dev.xml mybatis.typeAliasesPackage=com.mesa.reportservice.bean mybatis.mapperLocations=classpath*:/mappers/*.xml diff --git a/src/main/resources/config/log4j2-dev.xml b/src/main/resources/config/log4j2-dev.xml new file mode 100644 index 0000000..eeeeed1 --- /dev/null +++ b/src/main/resources/config/log4j2-dev.xml @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + status : 这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成TRACE时,会看到log4j2内部各种详细输出 + monitorInterval : Log4j能够自动检测修改配置文件和重新配置本身, 设置间隔秒数。此处表示每隔几秒重读一次配置文件. + 日志级别:TRACE < DEBUG < INFO < WARN < ERROR < FATAL + 如果设置为WARN,则低于WARN的信息都不会输出 +--> +<Configuration status="INFO" monitorInterval="30"> + + <!-- 参数配置 --> + <Properties> + <!-- 配置日志文件输出目录 --> + <Property name="LOG_HOME">./logs</Property> + <!-- 日志输出文件名 --> + <property name="FILE_NAME">galaxy-qgw-service</property> + <!-- 日志格式化 --> + <property name="console_pattern_layout"> + [%d{yyyy-MM-dd HH:mm:ss}] [%p] [Thread:%t] %l %x - %m%n + </property> + <property name="pattern_layout"> + [%d{yyyy-MM-dd HH:mm:ss}] [%p] [Thread:%t] %l %x - %m%n + </property> + </Properties> + + <!-- 日志配置Appender --> + <Appenders> + <!-- 输出控制台的配置 --> + <Console name="Console" target="SYSTEM_OUT"> + <!-- ThresholdFilter:配置的日志过滤 + 如果要输出的日志级别在当前级别及以上,则为match,否则走mismatch + ACCEPT: 执行日志输出;DENY: 不执行日志输出,结束过滤;NEUTRAL: 不执行日志输出,执行下一个过滤器 --> + <!--<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>--> + <!-- 日志输出的格式 + %d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间,输出到毫秒的时间 + %-5p (level) : 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0 + %c (logger) : logger的名称(%logger) + %t (thread) : 输出当前线程名称 + %m : 日志内容,即 logger.info("message") + %n : 换行符 + %C : Java类名(%F) + %L : 行号 + %M : 方法名 + %l : 输出语句所在的行数, 包括类名、方法名、文件名、行数 + hostName : 本地机器名 + hostAddress : 本地ip地址 + --> + <PatternLayout pattern="${console_pattern_layout}"/> + </Console> + + <!-- 文件输出配置,文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用 --> + <!--<File name="log" fileName="log/test.log" append="false"> + <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> + </File>--> + + <!-- + 循环日志文件配置:日志文件大于阀值的时候,就开始写一个新的日志文件 + 这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 + + fileName : 指定当前日志文件的位置和文件名称 + filePattern : 指定当发生Rolling时,文件的转移和重命名规则 + SizeBasedTriggeringPolicy : 指定当文件体积大于size指定的值时,触发Rolling + DefaultRolloverStrategy : 指定最多保存的文件个数 + TimeBasedTriggeringPolicy : 这个配置需要和filePattern结合使用 + 注意filePattern中配置的文件重命名规则是${FILE_NAME}_%d{yyyy-MM-dd}_%i,最小的时间粒度是dd,即天, + TimeBasedTriggeringPolicy指定的size是1,结合起来就是每1天生成一个新文件 + --> + <RollingRandomAccessFile name="ALL" + fileName="${LOG_HOME}/${FILE_NAME}.log" + filePattern="${LOG_HOME}/${FILE_NAME}.log.%d{yyyy-MM-dd}_%i"> + <!--<Filters> + <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> + </Filters>--> + <PatternLayout pattern="${pattern_layout}"/> + <Policies> + <TimeBasedTriggeringPolicy interval="1"/> + <!--<SizeBasedTriggeringPolicy size="100MB"/>--> + </Policies> + <DefaultRolloverStrategy max="20"/> + </RollingRandomAccessFile> + + <!-- 异步日志配置 --> + <Async name="AsyncAll"> + <AppenderRef ref="Console"/> + <AppenderRef ref="ALL"/> + </Async> + + </Appenders> + + <!-- 日志记录Logger --> + <Loggers> + + <Logger name="druid.sql" level="INFO" additivity="false"> + <AppenderRef ref="AsyncAll"/> + </Logger> + <Logger name="druid.sql.Connection" level="INFO" additivity="false"> + <AppenderRef ref="AsyncAll"/> + </Logger> + <Logger name="net.sf.ehcache" level="INFO" additivity="false"> + <AppenderRef ref="AsyncAll"/> + </Logger> + + <!-- + Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。 + level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF. + name:用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点. + AppenderRef:Logger的子节点,用来指定该日志输出到哪个Appender,如果没有指定,就会默认继承自Root. + 如果指定了,那么会在指定的这个Appender和Root的Appender中都会输出, + 此时我们可以设置Logger的additivity="false"只在自定义的Appender中进行输出。 + --> + <Root level="INFO"> + <AppenderRef ref="Console"/> + <AppenderRef ref="ALL"/> + </Root> + </Loggers> + +</Configuration>
\ No newline at end of file diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties deleted file mode 100644 index 8dcd9c9..0000000 --- a/src/main/resources/log4j.properties +++ /dev/null @@ -1,21 +0,0 @@ -######################### logger ############################## -log4j.logger.org.apache.http=OFF -log4j.logger.org.apache.http.wire=OFF -#Log4j -log4j.rootLogger=info,console,file -# ����̨��־���� -log4j.appender.console=org.apache.log4j.ConsoleAppender -log4j.appender.console.Threshold=info -log4j.appender.console.layout=org.apache.log4j.PatternLayout -log4j.appender.console.layout.ConversionPattern=[%d{yyyy-MM-dd HH\:mm\:ss}] [%-5p] [Thread\:%t] %l %x - <%m>%n -# �ļ���־���� -log4j.appender.file=org.apache.log4j.DailyRollingFileAppender -log4j.appender.file.Threshold=info -log4j.appender.file.encoding=UTF-8 -log4j.appender.file.Append=true -#·���������·����������ز��������Ӧ��Ŀ�� -log4j.appender.file.file=./logs/galaxy-report-service.log -log4j.appender.file.DatePattern='.'yyyy-MM-dd -log4j.appender.file.layout=org.apache.log4j.PatternLayout -#log4j.appender.file.layout.ConversionPattern=%d{HH:mm:ss} %X{ip} [%t] %5p %c{1} %m%n -log4j.appender.file.layout.ConversionPattern=[%d{yyyy-MM-dd HH\:mm\:ss}] [%-5p] %X{ip} [Thread\:%t] %l %x - %m%n
\ No newline at end of file |
