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
33634ff8
Commit
33634ff8
authored
Jun 11, 2019
by
薛智杰
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'jiakewei' into 'master'
Jiakewei See merge request !21
parents
21dc1789
9e0ed0b1
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 @
33634ff8
...
...
@@ -2,7 +2,7 @@ const Koa = require('koa')
const
Router
=
require
(
'
koa-router
'
)
const
bodyParser
=
require
(
'
koa-bodyparser
'
)
const
log4js
=
require
(
'
koa-log4
'
)
const
schedule
=
require
(
'
./schedule
'
)
const
logConf
=
require
(
'
../config/logger
'
)
const
error
=
require
(
'
../middleware/error
'
)
const
result
=
require
(
'
../middleware/result
'
)
...
...
@@ -49,7 +49,8 @@ exports.start = function () {
// 加载各种服务
const
app
=
new
Koa
()
const
router
=
new
Router
()
// 开启定时任务 每分钟检查一次
schedule
(
'
0 */1 * * * ?
'
)
// 加载所有路由
loadRoutes
(
router
)
app
.
use
(
log4js
.
koaLogger
(
log4js
.
getLogger
(
'
http
'
),
{
level
:
'
auto
'
,
format
:
logFormat
}))
...
...
app/schedule.js
0 → 100644
View file @
33634ff8
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