Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
AppMonitorSubscriber
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nongyingchen
AppMonitorSubscriber
Commits
183cc78d
Commit
183cc78d
authored
May 05, 2019
by
trace
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
日报添加下线统计
parent
949549d4
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
24 additions
and
18 deletions
+24
-18
play.js
+24
-18
No files found.
play.js
View file @
183cc78d
...
...
@@ -22,20 +22,20 @@ let sleepTime = isTest() && (sec * 2) || (sec * 5) // 每个请求间隔5秒
let
requestTimeout
=
sec
*
20
let
requestTopAppNum
=
isTest
()
&&
1
||
100
let
aliveTime
=
9
// 多少点后开始发送邮件
let
theDaySendList
=
[
1
,
2
,
3
,
4
,
5
,
6
,
7
]
// 发送列表的时间(周几)
let
theDaySendList
=
[
1
,
2
,
3
,
4
,
5
,
6
,
7
]
// 发送列表的时间(周几)
let
aliveInterval
=
isTest
()
&&
0.1
||
3
// 发送邮件间隔时间
let
start
=
true
// 是否开始爬取监控
let
dailyOnlineStartHours
=
7
let
dailyOnlineEndHours
=
9
let
crabName
=
`东南亚现金贷App监控
${
isTest
()
&&
'(Test)'
||
''
}
`
let
monitorRegion
=
{
'vn'
:
'越南'
,
'ph'
:
'菲律宾'
,
'id'
:
'印尼'
}
let
monitorType
=
{
'FINANCE'
:
'财务'
}
let
monitorRegion
=
{
'vn'
:
'越南'
,
'ph'
:
'菲律宾'
,
'id'
:
'印尼'
}
let
monitorType
=
{
'FINANCE'
:
'财务'
}
let
statusFile
=
`
${
process
.
cwd
()}
/status.json`
let
monitorApps
=
`
${
process
.
cwd
()}
/google-play-monitor-apps.json`
let
base_gp_url
=
'https://play.google.com/store/apps/details?id='
let
developer
=
[
'yingchen.nong@starwin.com'
]
let
developer
=
[
'yingchen.nong@starwin.com'
]
let
notifyEmail
=
developer
let
daichaoApps
=
[]
...
...
@@ -50,7 +50,7 @@ let isTimeToAppendOurApp = (apps) => {
// 需求变更, 是首次加入判断超过12小时就监控, 非每次12小时
// 遍历所有自有 app, 看当前时间与加入时间, 超过12小时就加入返回list
let
needMonitorApps
=
[]
for
(
let
i
in
apps
)
{
for
(
let
i
in
apps
)
{
let
key
=
apps
[
i
]
let
timeIn
=
status
[
key
]
&&
status
[
key
].
timeIn
if
(
!
timeIn
)
{
...
...
@@ -156,14 +156,19 @@ async function startMonitor() {
// 每日在线列表报告
if
(
!
isInTimeInRangeToday
(
dailyOnlineStartHours
,
dailyOnlineEndHours
))
{
log
(
'今天不在时间段或者已发过当日在线 app 列表'
)
dingDing
(
`今天不在时间段或者已发过当日在线 app 列表\n time:
${
new
Date
().
toLocaleTimeString
}
`
)
return
}
let
onlineApps
=
ourAppIds
.
filter
(
val
=>
status
[
val
]
&&
status
[
val
].
status
||
false
)
let
offlineApps
=
ourAppIds
.
filter
(
val
=>
!
onlineApps
.
includes
(
val
))
let
daichaoOnlines
=
daichaoApps
.
filter
(
val
=>
status
[
val
]
&&
status
[
val
].
status
||
false
)
let
daichaoOfflines
=
daichaoApps
.
filter
(
val
=>
!
daichaoOnlines
.
includes
(
val
))
let
content
=
''
content
+=
wrapSummary
(
`Gitlab 在线 app (
${
onlineApps
.
length
}
/
${
ourAppIds
.
length
}
)`
,
onlineApps
.
map
(
val
=>
link
(
val
)))
content
+=
wrapSummary
(
`Gitlab 下线 app (
${
offlineApps
.
length
}
/
${
ourAppIds
.
length
}
)`
,
offlineApps
.
map
(
val
=>
link
(
val
)))
content
+=
wrapSummary
(
`贷超在线 App (
${
daichaoOnlines
.
length
}
/
${
daichaoApps
.
length
}
)`
,
daichaoOnlines
.
map
(
val
=>
link
(
val
)))
content
+=
wrapSummary
(
`贷超下线 App (
${
daichaoOfflines
.
length
}
/
${
daichaoApps
.
length
}
)`
,
daichaoOfflines
.
map
(
val
=>
link
(
val
)))
sendEmail
(
content
)
})
.
then
(()
=>
{
...
...
@@ -235,13 +240,13 @@ async function getConfig() {
ourApps
=
dataes
.
ourApps
||
{}
ourAppIds
=
Object
.
keys
(
ourApps
)
if
(
ourAppIds
.
length
==
0
)
{
ourApps
=
{
"com.globe.gcash.android"
:
"测试我的"
}
ourApps
=
{
"com.globe.gcash.android"
:
"测试我的"
}
ourAppIds
=
[
"com.globe.gcash.android"
]
}
monitorNames
[
"ourApps"
]
=
ourAppIds
ourAppIds
.
forEach
(
id
=>
{
// 添加进状态文件, 设置上名字 (因为后面的能知道名字的操作只有获取前100的时候, 获取权限是不知道名字的)
status
[
id
]
=
{
...(
status
[
id
]
||
{}),
appName
:
ourApps
[
id
]
}
status
[
id
]
=
{
...(
status
[
id
]
||
{}),
appName
:
ourApps
[
id
]
}
if
(
!
status
[
id
].
timeIn
)
{
// 如果没有记录加入时间, 记录, 加入时间只记录一次, 在 isTimeToAppendOurApp 中判断记录时间, 超过12小时就开始监控
status
[
id
]
=
{
...
status
[
id
],
timeIn
:
Date
()
}
...
...
@@ -256,10 +261,10 @@ async function getConfig() {
monitorNames
[
"ourApps"
]
=
ourAppIds
ourAppIds
.
forEach
(
id
=>
{
// 添加进状态文件, 设置上名字 (因为后面的能知道名字的操作只有获取前100的时候, 获取权限是不知道名字的)
status
[
id
]
=
{
...(
status
[
id
]
||
{}),
appName
:
ourApps
[
id
]
}
status
[
id
]
=
{
...(
status
[
id
]
||
{}),
appName
:
ourApps
[
id
]
}
if
(
!
status
[
id
].
timeIn
)
{
// 如果没有记录加入时间, 记录, 加入时间只记录一次, 在 isTimeToAppendOurApp 中判断记录时间, 超过12小时就开始监控
status
[
id
]
=
{
...
status
[
id
],
timeIn
:
Date
()
}
status
[
id
]
=
{
...
status
[
id
],
timeIn
:
Date
()
}
}
})
...
...
@@ -305,7 +310,7 @@ async function getTop100() {
let
type
=
types
[
t
]
log
(
`分类:
${
type
}
`
)
// 数量分页
let
getTimes
=
Math
.
floor
(
requestTopAppNum
/
120
)
+
1
let
getTimes
=
Math
.
floor
(
requestTopAppNum
/
120
)
+
1
let
lastGetNum
=
requestTopAppNum
%
120
if
(
getTimes
>
5
)
{
if
(
getTimes
>
6
)
{
...
...
@@ -328,7 +333,7 @@ async function getTop100() {
requestOptions
:
{
timeout
:
requestTimeout
}
})
.
then
(
res
=>
{
console
.
log
(
`获取到 <
${
monitorRegion
[
region
]}
>[
${
monitorType
[
type
]}
]排名:
${
i
*
120
}
~
${
i
*
120
+
getNum
}
`
)
console
.
log
(
`获取到 <
${
monitorRegion
[
region
]}
>[
${
monitorType
[
type
]}
]排名:
${
i
*
120
}
~
${
i
*
120
+
getNum
}
`
)
if
(
res
&&
res
.
length
&&
res
.
length
>
0
)
{
res
.
forEach
(
app
=>
{
...
...
@@ -605,14 +610,14 @@ function getPermissionChangeContent(id, obj, title) {
}
function
setPermissionHis
(
name
,
obj
)
{
status
[
name
].
permissionHis
=
{
adds
:
obj
.
adds
,
deletes
:
obj
.
deletes
,
stills
:
obj
.
stills
}
status
[
name
].
permissionHis
=
{
adds
:
obj
.
adds
,
deletes
:
obj
.
deletes
,
stills
:
obj
.
stills
}
}
function
aliveContent
(
date
,
lastSend
)
{
let
emailContent
=
''
emailContent
+=
`<div>现在是:
${
date
.
toLocaleString
()}
, 监控还活着</div>`
let
allN
=
allNames
(
monitorNames
).
length
emailContent
+=
`<div>当前总监控:
${
allN
}
, \n设置间隔时间:
${(
lastIntervalTime
/
minute
)}
\n上次记录存活时间:
${
lastSend
.
toLocaleString
()}
</div>`
emailContent
+=
`<div>当前总监控:
${
allN
}
, \n设置间隔时间:
${(
lastIntervalTime
/
minute
)}
\n上次记录存活时间:
${
lastSend
.
toLocaleString
()}
</div>`
log
(
emailContent
)
return
emailContent
}
...
...
@@ -686,14 +691,14 @@ function sendEmail(content, to = notifyEmail) {
hitDaichao
=
0
hitOurs
=
0
}
function
dingDing
(
content
,
toDing
=
debugDingding
)
{
function
dingDing
(
content
,
toDing
=
debugDingding
)
{
log
(
`发送钉钉~`
)
content
=
`
${
crabName
}
\n`
+
content
request
.
post
(
toDing
,
{
headers
:
{
'content-type'
:
'application/json;charset=utf-8'
},
headers
:
{
'content-type'
:
'application/json;charset=utf-8'
},
body
:
JSON
.
stringify
({
msgtype
:
'text'
,
text
:
{
content
:
content
}
text
:
{
content
:
content
}
})
},
(
err
,
param
)
=>
param
.
statusCode
!=
200
&&
log
(
`Error:
${
err
}
\nParam:
${
JSON
.
stringify
(
param
)}
`
))
}
...
...
@@ -756,7 +761,7 @@ function judgePermissionChanged(name, newPermission) {
}
}
function
wrapSummary
(
title
,
list
,
color
=
'black'
)
{
function
wrapSummary
(
title
,
list
,
color
=
'black'
)
{
let
emailContent
=
''
emailContent
+=
`<details style="color:
${
color
}
">`
emailContent
+=
`<summary>
${
title
}
: </summary>`
...
...
@@ -774,7 +779,8 @@ function isInTimeInRangeToday(start, end) {
let
now
=
new
Date
()
let
lastDate
=
new
Date
(
status
[
dayKey
]
||
'Tue Jan 29 2019 19:32:24 GMT+0800 (CST)'
)
lastDate
.
setHours
(
lastDate
.
getHours
()
+
24
)
if
(
start
<
now
.
getHours
()
&&
now
.
getHours
()
<
end
&&
now
>
lastDate
)
{
// 去掉范围的验证, 只要大于某一时间就发, 且只发一次
if
(
start
<
now
.
getHours
()
&&
now
>
lastDate
)
{
status
[
dayKey
]
=
Date
()
return
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