summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorLAPTOP-CUUVN8AS\wk <[email protected]>2020-09-18 17:34:54 +0800
committerLAPTOP-CUUVN8AS\wk <[email protected]>2020-09-18 17:34:54 +0800
commitd068af9ebe059bb6df98f10d81dcc0fb0a3552a8 (patch)
treef6298ad8e62bce44f64183f1bb22136fd914a134 /src/main
parent37f0bc3d31ccacce76ff0ac9ed9c77fa99cdf9fb (diff)
普罗米修斯监控增加两个自定义参数
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/mesa/reportservice/controller/ScheduledResultController.java5
-rw-r--r--src/main/java/com/mesa/reportservice/service/MonitorService.java14
-rw-r--r--src/main/java/com/mesa/reportservice/service/MysqlService.java6
-rw-r--r--src/main/java/com/mesa/reportservice/service/impl/ExcuteProcessServiceImpl.java18
-rw-r--r--src/main/java/com/mesa/reportservice/service/impl/MonitorServiceImpl.java71
-rw-r--r--src/main/java/com/mesa/reportservice/service/impl/MysqlServiceImpl.java46
-rw-r--r--src/main/resources/config/application.properties2
-rw-r--r--src/main/resources/config/log4j2-dev.xml117
-rw-r--r--src/main/resources/log4j.properties21
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