Browse Source

(*)最新动态告警类型修改

dev
wuqun 2 years ago
parent
commit
9052d80bbf
  1. 5
      api/app/lib/controllers/alarm/app.js
  2. 32
      api/app/lib/service/kafka.js
  3. 2
      api/app/lib/utils/alarmHandle.js

5
api/app/lib/controllers/alarm/app.js

@ -201,7 +201,7 @@ async function apiError(ctx) {
await models.AppAlarm.create(storageData) await models.AppAlarm.create(storageData)
//存告警记录 //存告警记录
let constTypes = { 'element': "元素异常", 'apiError': "接口报错 ", 'timeout': "加载超时" } //let constTypes = { 'element': "元素异常", 'apiError': "接口报错 ", 'timeout': "加载超时" }
let belongsTo = await models.ProjectApp.findOne({ let belongsTo = await models.ProjectApp.findOne({
where: { where: {
id: projectAppId id: projectAppId
@ -224,7 +224,8 @@ async function apiError(ctx) {
projectCorrelationId: pId, projectCorrelationId: pId,
alarmInfo: { messageMode: 'AlarmGeneration', sourceName: appName.name, content: alarmContent, type },//AlarmGeneration代表告警首次产生 alarmInfo: { messageMode: 'AlarmGeneration', sourceName: appName.name, content: alarmContent, type },//AlarmGeneration代表告警首次产生
time: now, time: now,
type: constTypes[type] type: '应用异常'
//type: constTypes[type]
} }
let r = await models.AlarmAppearRecord.create(data, { returning: true }); let r = await models.AlarmAppearRecord.create(data, { returning: true });
let dynamic = { let dynamic = {

32
api/app/lib/service/kafka.js

@ -12,6 +12,13 @@ module.exports = async function factory(app, opts) {
console.log('111111 ready 666666666666') console.log('111111 ready 666666666666')
}) })
let consumer = new Kafka.ConsumerGroup(Object.assign({}, { groupId: 'yunwei-platform-api', fromOffset: 'latest' }, { kafkaHost: opts.kafka.rootURL }), ['anxinyun_alarm'])
consumer.on('message', async function (message) {
let msg = JSON.parse(message.value)
console.log('kafka consumer----------接收到消息');
await savePullAlarm(msg);
})
const kafka = { const kafka = {
producer: producer, producer: producer,
configUpdateMessage: opts.configUpdateMessage || {} configUpdateMessage: opts.configUpdateMessage || {}
@ -45,12 +52,6 @@ module.exports = async function factory(app, opts) {
// }); // });
let consumer = new Kafka.ConsumerGroup(Object.assign({}, { groupId: 'yunwei-platform-api', fromOffset: 'latest' }, { kafkaHost: opts.kafka.rootURL }), ['anxinyun_alarm'])
consumer.on('message', async function (message) {
let msg = JSON.parse(message.value)
console.log('kafka consumer----------接收到消息');
await savePullAlarm(msg);
})
// let offset = new Kafka.Offset(client); // let offset = new Kafka.Offset(client);
// consumer.on('offsetOutOfRange', function (topic) { // consumer.on('offsetOutOfRange', function (topic) {
// console.log('offsetOutOfRange') // console.log('offsetOutOfRange')
@ -89,6 +90,13 @@ module.exports = async function factory(app, opts) {
} }
//保存告警[发现] //保存告警[发现]
let constAlarmGroups = {
1: '数据中断',
2: '数据异常',
3: '策略命中',
4: '设备异常',
5: '设备异常'
}
async function savePullAlarm(msg) { async function savePullAlarm(msg) {
const { clickHouse, utils: { sendAppearToWeb, sendConfirmToWeb } } = app.fs const { clickHouse, utils: { sendAppearToWeb, sendConfirmToWeb } } = app.fs
try { try {
@ -99,18 +107,20 @@ module.exports = async function factory(app, opts) {
const { models } = app.fs.dc const { models } = app.fs.dc
let exist = structs.find(s => s.strucId == structureId); let exist = structs.find(s => s.strucId == structureId);
if (exist) { if (exist) {
let alarmType = await clickHouse.anxinyun.query( let alarm_group = await clickHouse.anxinyun.query(
`SELECT name FROM t_alarm_type WHERE code='${alarmTypeCode}'`).toPromise() `SELECT alarm_group FROM t_alarm_code WHERE code='${alarmCode}'`).toPromise();
let type = alarmType.length ? alarmType[0].name : ''
let type = alarm_group.length ? constAlarmGroups[alarm_group[0].alarm_group] : null//告警类型
let projects = exist.pomsProject.filter(d => !d.del).map(p => p.id); let projects = exist.pomsProject.filter(d => !d.del).map(p => p.id);
if (messageMode == 'AlarmGeneration') {//告警产生--------------------------------------------------1 if (messageMode == 'AlarmGeneration') {//告警产生--------------------------------------------------1
let datas = projects.map(d => {//需要 项目,告警源,异常类型,时间 let datas = projects.map(d => {//需要 项目,告警源,异常类型,时间
return { return {
projectCorrelationId: d, projectCorrelationId: d,
alarmInfo: { messageMode, sourceName, alarmTypeCode, content }, alarmInfo: { messageMode, sourceName, alarmTypeCode, alarmCode, content },
time: time, time: time,
type//异常类型 type//告警类型
} }
}) })
let rslt = await models.AlarmAppearRecord.bulkCreate(datas, { returning: true }); let rslt = await models.AlarmAppearRecord.bulkCreate(datas, { returning: true });

2
api/app/lib/utils/alarmHandle.js

@ -25,7 +25,7 @@ module.exports = function (app, opts) {
//数据类区分alarmGroup //数据类区分alarmGroup
if (ttype == 'data') { if (ttype == 'data') {
let alarm_group = await clickHouse.anxinyun.query( let alarm_group = await clickHouse.anxinyun.query(
`SELECT alarm_group FROM t_alarm_code WHERE code='${datas[0].alarmInfo.alarmTypeCode}'`).toPromise(); `SELECT alarm_group FROM t_alarm_code WHERE code='${datas[0].alarmInfo.alarmCode}'`).toPromise();
alarmGroup = alarm_group.length ? constAlarmGroups[alarm_group[0].alarm_group] : null alarmGroup = alarm_group.length ? constAlarmGroups[alarm_group[0].alarm_group] : null
} else { } else {

Loading…
Cancel
Save