Commit 183cc78d by trace

日报添加下线统计

parent 949549d4
......@@ -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
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment