Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
tke-eos
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
QA
tke-eos
Commits
6938c627
Commit
6938c627
authored
Jun 13, 2019
by
智勇
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://git.quantgroup.cn/QA/tke-eos
parents
a3d0f27e
33634ff8
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
91 additions
and
2 deletions
+91
-2
index.js
app/index.js
+3
-2
schedule.js
app/schedule.js
+88
-0
No files found.
app/index.js
View file @
6938c627
...
@@ -2,7 +2,7 @@ const Koa = require('koa')
...
@@ -2,7 +2,7 @@ const Koa = require('koa')
const
Router
=
require
(
'
koa-router
'
)
const
Router
=
require
(
'
koa-router
'
)
const
bodyParser
=
require
(
'
koa-bodyparser
'
)
const
bodyParser
=
require
(
'
koa-bodyparser
'
)
const
log4js
=
require
(
'
koa-log4
'
)
const
log4js
=
require
(
'
koa-log4
'
)
const
schedule
=
require
(
'
./schedule
'
)
const
logConf
=
require
(
'
../config/logger
'
)
const
logConf
=
require
(
'
../config/logger
'
)
const
error
=
require
(
'
../middleware/error
'
)
const
error
=
require
(
'
../middleware/error
'
)
const
result
=
require
(
'
../middleware/result
'
)
const
result
=
require
(
'
../middleware/result
'
)
...
@@ -49,7 +49,8 @@ exports.start = function () {
...
@@ -49,7 +49,8 @@ exports.start = function () {
// 加载各种服务
// 加载各种服务
const
app
=
new
Koa
()
const
app
=
new
Koa
()
const
router
=
new
Router
()
const
router
=
new
Router
()
// 开启定时任务 每分钟检查一次
schedule
(
'
0 */1 * * * ?
'
)
// 加载所有路由
// 加载所有路由
loadRoutes
(
router
)
loadRoutes
(
router
)
app
.
use
(
log4js
.
koaLogger
(
log4js
.
getLogger
(
'
http
'
),
{
level
:
'
auto
'
,
format
:
logFormat
}))
app
.
use
(
log4js
.
koaLogger
(
log4js
.
getLogger
(
'
http
'
),
{
level
:
'
auto
'
,
format
:
logFormat
}))
...
...
app/schedule.js
0 → 100644
View file @
6938c627
const
schedule
=
require
(
'
node-schedule
'
)
const
request
=
require
(
'
request
'
)
const
moment
=
require
(
'
moment
'
)
const
Redis
=
require
(
'
ioredis
'
)
const
logger
=
require
(
'
koa-log4
'
).
getLogger
()
const
{
podGetstatus
}
=
require
(
'
../kubeService/service
'
)
const
redis
=
new
Redis
(
6380
,
'
172.30.220.22
'
)
const
awaitRequest
=
function
(
options
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
request
(
options
,
(
error
,
res
,
body
)
=>
{
if
(
error
)
{
reject
(
error
)
}
else
{
resolve
(
body
)
}
})
})
}
const
dingTalkPush
=
async
function
(
item
)
{
const
status
=
Object
.
keys
(
item
.
status
.
containerStatuses
[
0
].
state
)[
0
]
let
message
=
''
if
(
status
===
'
running
'
)
{
message
=
'
服务启动可能出现错误,请及时查看
'
}
else
{
message
=
item
.
status
.
containerStatuses
[
0
].
state
[
status
].
reason
}
const
dingData
=
{
msgtype
:
'
markdown
'
,
markdown
:
{
title
:
'
pipeline项目添加信息如下
'
,
text
:
'
> 描述信息: 腾讯云服务异常提醒通知
\n\n
'
+
`> 项目名称 :
${
item
.
metadata
.
labels
[
'
qcloud-app
'
]}
\n\n`
+
`> 项目类型 :
${
item
.
metadata
.
labels
.
type
}
\n\n`
+
`> 命名空间 :
${
item
.
metadata
.
namespace
}
\n\n`
+
`> 异常原因 :
${
message
}
\n\n`
+
`> 时间戳 :
${
moment
().
format
(
'
YYYY-MM-DD HH:mm:ss
'
)}
\n\n`
,
},
}
const
res
=
await
awaitRequest
({
url
:
'
https://oapi.dingtalk.com/robot/send?access_token=8e0cdbbb980da00a2c56fdf1724692f8cb4daa0c5d6d90b02c739b4dbd05464d
'
,
method
:
'
POST
'
,
headers
:
{
'
Content-Type
'
:
'
application/json;charset=utf-8
'
,
},
body
:
JSON
.
stringify
(
dingData
),
})
if
(
JSON
.
parse
(
res
).
errcode
===
0
)
{
await
redis
.
set
(
`
${
item
.
metadata
.
namespace
}
:
${
item
.
metadata
.
name
}
`
,
'
send
'
)
}
else
{
logger
.
error
(
res
.
errmsg
)
}
}
const
job
=
async
()
=>
{
const
listPods
=
await
podGetstatus
()
listPods
.
body
.
items
.
forEach
((
item
)
=>
{
item
.
status
.
conditions
.
forEach
(
async
(
value
)
=>
{
if
(
value
.
status
!==
'
True
'
)
{
const
res
=
await
redis
.
get
(
`
${
item
.
metadata
.
namespace
}
:
${
item
.
metadata
.
name
}
`
)
if
(
res
!=
null
)
{
if
(
res
===
'
send
'
)
{
logger
.
info
(
item
.
metadata
.
name
,
'
:已到达阈值并已发送钉钉提醒服务
'
)
}
else
{
const
counter
=
Number
(
res
)
if
(
counter
>
5
)
{
await
redis
.
set
(
`
${
item
.
metadata
.
namespace
}
:
${
item
.
metadata
.
name
}
`
,
counter
+
1
)
// const res = await podlog(item.metadata.namespace, item.metadata.name)
dingTalkPush
(
item
,
counter
)
}
else
{
await
redis
.
set
(
`
${
item
.
metadata
.
namespace
}
:
${
item
.
metadata
.
name
}
`
,
counter
+
1
)
}
}
}
else
{
await
redis
.
set
(
`
${
item
.
metadata
.
namespace
}
:
${
item
.
metadata
.
name
}
`
,
1
)
// 提醒的推送通知一天重置一次,避免多次提醒。
await
redis
.
expire
(
`
${
item
.
metadata
.
namespace
}
:
${
item
.
metadata
.
name
}
`
,
3600
*
24
)
}
}
})
})
}
module
.
exports
=
(
cron
)
=>
{
schedule
.
scheduleJob
(
cron
,
()
=>
{
job
()
});
}
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