Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
java-devop-sentry
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhouzihao
java-devop-sentry
Commits
01443501
Commit
01443501
authored
Mar 17, 2020
by
zhouzihao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dev-添加邮件处理器(需要被测试)
parent
b4386d8d
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
152 additions
and
12 deletions
+152
-12
pom.xml
pom.xml
+5
-0
src/main/java/com/vandyo/sentry/core/Tmp.java
src/main/java/com/vandyo/sentry/core/Tmp.java
+12
-4
src/main/java/com/vandyo/sentry/core/cases/EmptyCase.java
src/main/java/com/vandyo/sentry/core/cases/EmptyCase.java
+1
-0
src/main/java/com/vandyo/sentry/core/collectionMachine/CollectionDealer.java
...andyo/sentry/core/collectionMachine/CollectionDealer.java
+24
-0
src/main/java/com/vandyo/sentry/core/collectionMachine/CollectionMachine.java
...ndyo/sentry/core/collectionMachine/CollectionMachine.java
+31
-2
src/main/java/com/vandyo/sentry/core/collectionMachine/DataClearDealer.java
...vandyo/sentry/core/collectionMachine/DataClearDealer.java
+21
-0
src/main/java/com/vandyo/sentry/core/collectionMachine/EmailDealer.java
...com/vandyo/sentry/core/collectionMachine/EmailDealer.java
+27
-0
src/main/java/com/vandyo/sentry/core/dto/ErrStatus.java
src/main/java/com/vandyo/sentry/core/dto/ErrStatus.java
+15
-5
src/main/resources/application.yaml
src/main/resources/application.yaml
+16
-1
No files found.
pom.xml
View file @
01443501
...
@@ -63,6 +63,11 @@
...
@@ -63,6 +63,11 @@
<version>
RELEASE
</version>
<version>
RELEASE
</version>
<scope>
compile
</scope>
<scope>
compile
</scope>
</dependency>
</dependency>
<!-- 邮件相关 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-mail
</artifactId>
</dependency>
</dependencies>
</dependencies>
<dependencyManagement>
<dependencyManagement>
...
...
src/main/java/com/vandyo/sentry/core/Tmp.java
View file @
01443501
...
@@ -2,7 +2,9 @@ package com.vandyo.sentry.core;
...
@@ -2,7 +2,9 @@ package com.vandyo.sentry.core;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.vandyo.sentry.core.cases.*
;
import
com.vandyo.sentry.core.cases.*
;
import
com.vandyo.sentry.core.collectionMachine.CollectionDealer
;
import
com.vandyo.sentry.core.collectionMachine.CollectionMachine
;
import
com.vandyo.sentry.core.collectionMachine.CollectionMachine
;
import
com.vandyo.sentry.core.collectionMachine.EmailDealer
;
import
com.vandyo.sentry.core.config.MapConfig
;
import
com.vandyo.sentry.core.config.MapConfig
;
import
com.vandyo.sentry.core.dto.ErrStatus
;
import
com.vandyo.sentry.core.dto.ErrStatus
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
...
@@ -12,6 +14,8 @@ import org.springframework.beans.factory.annotation.Value;
...
@@ -12,6 +14,8 @@ import org.springframework.beans.factory.annotation.Value;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
@Component
@Component
...
@@ -30,9 +34,10 @@ public class Tmp {
...
@@ -30,9 +34,10 @@ public class Tmp {
@Autowired
@Autowired
private
MapConfig
mapConfig
;
private
MapConfig
mapConfig
;
@Autowired
private
EmailDealer
emailDealer
;
@Scheduled
(
fixedRate
=
5000
)
@Scheduled
(
fixedRate
=
1000
)
public
void
test
()
{
public
void
test
()
{
log
.
info
(
"we run it {} times"
,
++
times
);
log
.
info
(
"we run it {} times"
,
++
times
);
Case
case1
=
null
;
Case
case1
=
null
;
...
@@ -49,13 +54,16 @@ public class Tmp {
...
@@ -49,13 +54,16 @@ public class Tmp {
log
.
info
(
"over!"
);
log
.
info
(
"over!"
);
}
}
@Scheduled
(
fixedRate
=
500
0
)
@Scheduled
(
fixedRate
=
1000
*
6
0
)
public
void
check
()
{
public
void
check
()
{
Map
<
String
,
Map
<
ErrStatus
,
Long
>>
data
=
CollectionMachine
.
checkRule
(
5
);
Map
<
String
,
Map
<
ErrStatus
,
Long
>>
data
=
CollectionMachine
.
checkRule
(
5
);
String
info
=
JSONUtil
.
parseFromMap
(
data
).
toStringPretty
();
String
info
=
JSONUtil
.
parseFromMap
(
data
).
toStringPretty
();
// log.warn(info);
// 查看是否 符合规则 Using timeMap
// 查看是否 符合规则 Using timeMap
Map
<
String
,
Integer
>
timeMap
=
mapConfig
.
getTimeMap
();
Map
<
String
,
Integer
>
timeMap
=
mapConfig
.
getTimeMap
();
log
.
info
(
"start to check rule!"
);
log
.
info
(
"start to check rule!"
);
List
<
CollectionDealer
>
list
=
new
ArrayList
<>(
1
);
list
.
add
(
emailDealer
);
// FIXME: 添加其他处理
CollectionMachine
.
checkTimes
(
timeMap
,
data
,
list
);
}
}
}
}
src/main/java/com/vandyo/sentry/core/cases/EmptyCase.java
View file @
01443501
...
@@ -26,6 +26,7 @@ public class EmptyCase extends Case {
...
@@ -26,6 +26,7 @@ public class EmptyCase extends Case {
res
.
setSuccess
(
true
);
res
.
setSuccess
(
true
);
// 这里的请求结果进行跳过
// 这里的请求结果进行跳过
res
.
setIgnore
(
true
);
res
.
setIgnore
(
true
);
res
.
setKey
(
"test"
);
CollectionMachine
.
post
(
res
);
CollectionMachine
.
post
(
res
);
return
res
;
return
res
;
}
}
...
...
src/main/java/com/vandyo/sentry/core/collectionMachine/CollectionDealer.java
0 → 100644
View file @
01443501
package
com
.
vandyo
.
sentry
.
core
.
collectionMachine
;
import
com.vandyo.sentry.core.dto.ErrStatus
;
import
java.util.Map
;
/**
* 收集数据处理器
*/
public
interface
CollectionDealer
{
/**
* 错误面板处理函数
* @param data 错误面板
*/
void
deal
(
Map
<
String
,
Map
<
ErrStatus
,
Long
>>
data
);
/**
* 错误面板格式化
* @param data
* @return
*/
String
formatData
(
Map
<
String
,
Map
<
ErrStatus
,
Long
>>
data
);
}
src/main/java/com/vandyo/sentry/core/collectionMachine/CollectionMachine.java
View file @
01443501
...
@@ -20,7 +20,7 @@ public class CollectionMachine {
...
@@ -20,7 +20,7 @@ public class CollectionMachine {
public
static
void
post
(
Res
<
Map
<
String
,
String
>>
log
)
{
public
static
void
post
(
Res
<
Map
<
String
,
String
>>
log
)
{
// 应该对于不同的请求统一管理 还是 每个单独管理呢?
// 应该对于不同的请求统一管理 还是 每个单独管理呢?
logger
.
info
(
"temp long is {}"
,
temp
.
size
());
logger
.
info
(
"temp long is {}"
,
temp
.
size
());
if
(
log
.
getIgnore
()
||
log
.
getSuccess
())
{
if
(
log
.
getIgnore
()
||
log
.
getSuccess
())
{
//pass
//pass
}
else
{
}
else
{
...
@@ -83,7 +83,7 @@ public class CollectionMachine {
...
@@ -83,7 +83,7 @@ public class CollectionMachine {
while
(
iterator
.
hasNext
())
{
while
(
iterator
.
hasNext
())
{
Long
key
=
iterator
.
next
();
Long
key
=
iterator
.
next
();
if
(
key
<
System
.
currentTimeMillis
()
-
1000
*
60
*
min
)
{
if
(
key
<
System
.
currentTimeMillis
()
-
1000
*
60
*
min
)
{
logger
.
error
(
"remove key {}"
,
key
);
logger
.
error
(
"remove key {}"
,
key
);
iterator
.
remove
();
iterator
.
remove
();
temp
.
remove
(
key
);
temp
.
remove
(
key
);
}
else
{
}
else
{
...
@@ -91,4 +91,33 @@ public class CollectionMachine {
...
@@ -91,4 +91,33 @@ public class CollectionMachine {
}
}
}
}
}
}
/**
* 检查处理
*
* @param timeMap 时间映射
* @param data 一分钟内错误数据
* @param dealers 处理器
*/
public
static
void
checkTimes
(
Map
<
String
,
Integer
>
timeMap
,
Map
<
String
,
Map
<
ErrStatus
,
Long
>>
data
,
List
<
CollectionDealer
>
dealers
)
{
for
(
Map
.
Entry
<
String
,
Map
<
ErrStatus
,
Long
>>
entry:
data
.
entrySet
()){
String
key
=
entry
.
getKey
();
if
(!
timeMap
.
containsKey
(
key
)){
continue
;
}
Map
<
ErrStatus
,
Long
>
value
=
entry
.
getValue
();
int
sum
=
0
;
for
(
Map
.
Entry
<
ErrStatus
,
Long
>
i:
value
.
entrySet
()){
sum
+=
i
.
getValue
().
intValue
();
}
if
(
sum
>=
timeMap
.
get
(
key
)){
//打印 阈值 进行处理
for
(
CollectionDealer
dealer:
dealers
){
dealer
.
deal
(
data
);
}
break
;
}
}
}
}
}
src/main/java/com/vandyo/sentry/core/collectionMachine/DataClearDealer.java
0 → 100644
View file @
01443501
package
com
.
vandyo
.
sentry
.
core
.
collectionMachine
;
import
com.vandyo.sentry.core.dto.ErrStatus
;
import
java.util.Map
;
public
abstract
class
DataClearDealer
implements
CollectionDealer
{
@Override
public
String
formatData
(
Map
<
String
,
Map
<
ErrStatus
,
Long
>>
data
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
append
(
"接口报错:\n"
);
for
(
Map
.
Entry
<
String
,
Map
<
ErrStatus
,
Long
>>
entry:
data
.
entrySet
()){
builder
.
append
(
entry
.
getKey
()+
" :\n"
);
Map
<
ErrStatus
,
Long
>
value
=
entry
.
getValue
();
for
(
Map
.
Entry
<
ErrStatus
,
Long
>
i:
value
.
entrySet
()){
builder
.
append
(
"\t"
+
i
.
getKey
().
getDes
()+
":"
+
i
.
getValue
()+
"次。\n"
);
}
}
return
builder
.
toString
();
}
}
src/main/java/com/vandyo/sentry/core/collectionMachine/EmailDealer.java
0 → 100644
View file @
01443501
package
com
.
vandyo
.
sentry
.
core
.
collectionMachine
;
import
com.vandyo.sentry.core.dto.ErrStatus
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.mail.SimpleMailMessage
;
import
org.springframework.mail.javamail.JavaMailSender
;
import
org.springframework.stereotype.Component
;
import
java.util.Map
;
@Component
public
class
EmailDealer
extends
DataClearDealer
{
@Autowired
private
JavaMailSender
javaMailSender
;
@Override
public
void
deal
(
Map
<
String
,
Map
<
ErrStatus
,
Long
>>
data
)
{
String
content
=
formatData
(
data
);
SimpleMailMessage
message
=
new
SimpleMailMessage
();
message
.
setFrom
(
"zhouzihao@vandyo.com"
);
message
.
setTo
(
"1042181618@qq.com"
);
message
.
setSubject
(
"服务报错"
);
message
.
setText
(
content
);
javaMailSender
.
send
(
message
);
}
}
src/main/java/com/vandyo/sentry/core/dto/ErrStatus.java
View file @
01443501
...
@@ -4,21 +4,31 @@ public enum ErrStatus {
...
@@ -4,21 +4,31 @@ public enum ErrStatus {
/**
/**
* 500错误
* 500错误
*/
*/
Err5xx
,
Err5xx
(
"5xx 错误"
)
,
/**
/**
* 400错误
* 400错误
*/
*/
Err4xx
,
Err4xx
(
"4xx 错误"
)
,
/**
/**
* 超时错误 408
* 超时错误 408
*/
*/
ErrTimeout
,
ErrTimeout
(
"请求超时"
)
,
/**
/**
* 没有预期的返回值
* 没有预期的返回值
*/
*/
ErrUnexpected
,
ErrUnexpected
(
"没有预期返回值"
)
,
/**
/**
* 未知错误
* 未知错误
*/
*/
ErrUnknown
;
ErrUnknown
(
"未知异常"
);
private
String
des
;
ErrStatus
(
String
des
)
{
this
.
des
=
des
;
}
public
String
getDes
()
{
return
des
;
}
}
}
src/main/resources/application.yaml
View file @
01443501
...
@@ -7,5 +7,20 @@ vandyo:
...
@@ -7,5 +7,20 @@ vandyo:
checkmeta
:
checkmeta
:
desMap
:
desMap
:
"
[/car/my_car/info]"
:
车辆信息
"
[/car/my_car/info]"
:
车辆信息
test
:
测试接口
timeMap
:
timeMap
:
"
[/car/my_car/info]"
:
6
"
[/car/my_car/info]"
:
6
test
:
2
spring
:
mail
:
host
:
imap.exmail.qq.com
default-encoding
:
UTF-8
username
:
zhouzihao
password
:
zzhcool123
port
:
993
properties
:
mail
:
smtp
:
ssl
:
enable
:
true
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment