mirror of
https://github.com/didi/KnowStreaming.git
synced 2026-01-03 02:52:08 +08:00
193 lines
5.4 KiB
TypeScript
193 lines
5.4 KiB
TypeScript
import { observable, action } from 'mobx';
|
|
import { message } from 'component/antd';
|
|
import { IMonitorStrategies, IMonitorAlerts, IMonitorSilences, IMonitorGroups, IAlertsDetail, IMonitorAlert, IMonitorMetric, IMonitorType } from 'types/base-type';
|
|
import { getMonitorStrategies, deteleMonitorStrategies, getMonitorAlerts, getAlertsDetail, createSilences, getMonitorSilences, modifyMask, getSilencesDetail, deleteSilences, getMonitorType, addMonitorStrategy, getMonitorDetail, modifyMonitorStrategy, getMonitorNotifyGroups } from 'lib/api';
|
|
import { getMonitorMetricOption } from 'lib/line-charts-config';
|
|
import { IRequestParams, IMonitorStrategyDetail, IMonitorMetricType, IMetricType } from 'types/alarm';
|
|
import { urlPrefix } from 'constants/left-menu';
|
|
|
|
class Alarm {
|
|
|
|
@observable
|
|
public loading: boolean = false;
|
|
|
|
@observable
|
|
public monitorStrategies: IMonitorStrategies[] = [];
|
|
|
|
@observable
|
|
public monitorAlerts: IMonitorAlerts[] = [];
|
|
|
|
@observable
|
|
public alertsDetail: IAlertsDetail;
|
|
|
|
@observable
|
|
public monitorAlert: IMonitorAlert;
|
|
|
|
@observable
|
|
public monitorMetric: IMonitorMetric;
|
|
|
|
@observable
|
|
public monitorSilences: IMonitorSilences[] = [];
|
|
|
|
@observable
|
|
public silencesDetail: IMonitorSilences;
|
|
|
|
@observable
|
|
public monitorGroups: IMonitorGroups[] = [];
|
|
|
|
@observable
|
|
public monitorType: string = '';
|
|
|
|
@observable
|
|
public currentTopic: string = '';
|
|
|
|
@observable
|
|
public monitorTypeList: IMetricType[] = [];
|
|
|
|
@observable
|
|
public monitorStrategyDetail: IMonitorStrategyDetail = {} as IMonitorStrategyDetail;
|
|
|
|
@action.bound
|
|
public setLoading(value: boolean) {
|
|
this.loading = value;
|
|
}
|
|
|
|
@action.bound
|
|
public changeMonitorStrategyType(type: string) {
|
|
this.monitorType = type;
|
|
}
|
|
|
|
@action.bound
|
|
public changeTopic(topic: string) {
|
|
this.currentTopic = topic;
|
|
}
|
|
|
|
@action.bound
|
|
public setMonitorStrategies(data: IMonitorStrategies[]) {
|
|
this.monitorStrategies = data ? data.map((item, index) => {
|
|
item.key = index;
|
|
return item;
|
|
}) : [];
|
|
}
|
|
|
|
@action.bound
|
|
public setMonitorAlerts(data: IMonitorAlerts[]) {
|
|
this.monitorAlerts = data ? data.map((item, index) => {
|
|
item.key = index;
|
|
return item;
|
|
}) : [];
|
|
this.setLoading(false);
|
|
}
|
|
|
|
@action.bound
|
|
public setAlertsDetail(data: IAlertsDetail) {
|
|
this.alertsDetail = data;
|
|
this.monitorAlert = data.monitorAlert;
|
|
this.monitorMetric = data.monitorMetric;
|
|
}
|
|
|
|
@action.bound
|
|
public setMonitorSilences(data: IMonitorSilences[]) {
|
|
this.monitorSilences = data ? data.map((item, index) => {
|
|
item.key = index;
|
|
return item;
|
|
}) : [];
|
|
}
|
|
@action.bound
|
|
public setMonitorType(data: IMonitorMetricType) {
|
|
this.monitorTypeList = data.metricNames || [];
|
|
// this.monitorType = this.monitorTypeList[0].metricName;
|
|
this.monitorType = '';
|
|
}
|
|
|
|
@action.bound
|
|
public setMonitorStrategyDetail(data: IMonitorStrategyDetail) {
|
|
this.monitorStrategyDetail = data || {} as IMonitorStrategyDetail;
|
|
}
|
|
|
|
@action.bound
|
|
public setSilencesDetail(data: IMonitorSilences) {
|
|
this.silencesDetail = data;
|
|
}
|
|
|
|
@action.bound
|
|
public setMonitorGroups(data: IMonitorGroups[]) {
|
|
this.monitorGroups = data;
|
|
}
|
|
|
|
public getMetircHistoryChartOptions = () => {
|
|
return getMonitorMetricOption(this.monitorMetric.metric, this.monitorMetric.values);
|
|
}
|
|
|
|
public getMonitorStrategies() {
|
|
getMonitorStrategies().then(this.setMonitorStrategies);
|
|
}
|
|
|
|
public deteleMonitorStrategies(monitorId: number) {
|
|
return deteleMonitorStrategies(monitorId).then(() => this.getMonitorStrategies());
|
|
}
|
|
|
|
public getMonitorAlerts(monitorId: number, startTime: number, endTime: number) {
|
|
this.setLoading(true);
|
|
getMonitorAlerts(monitorId, startTime, endTime).then(this.setMonitorAlerts);
|
|
}
|
|
|
|
public getAlertsDetail(alertId: number) {
|
|
return getAlertsDetail(alertId).then(this.setAlertsDetail);
|
|
}
|
|
|
|
public createSilences(params: IMonitorSilences, monitorId: number) {
|
|
return createSilences(params).then(() => {
|
|
this.getMonitorSilences(monitorId);
|
|
});
|
|
}
|
|
|
|
public getMonitorSilences(monitorId: number) {
|
|
getMonitorSilences(monitorId).then(this.setMonitorSilences);
|
|
}
|
|
|
|
public modifyMask(params: IMonitorSilences, monitorId: number) {
|
|
return modifyMask(params).then(() => {
|
|
this.getMonitorSilences(monitorId);
|
|
});
|
|
}
|
|
|
|
public getSilencesDetail(silenceId: number) {
|
|
return getSilencesDetail(silenceId).then(this.setSilencesDetail);
|
|
}
|
|
|
|
public deleteSilences(monitorId: number, silenceId: number) {
|
|
return deleteSilences(monitorId, silenceId).then(() => {
|
|
this.getMonitorSilences(monitorId);
|
|
});
|
|
}
|
|
|
|
public getMonitorType() {
|
|
return getMonitorType().then(this.setMonitorType);
|
|
}
|
|
|
|
public addMonitorStategy(params: IRequestParams) {
|
|
this.setLoading(true);
|
|
return addMonitorStrategy(params).then(() => {
|
|
message.success('操作成功');
|
|
window.location.href = `${urlPrefix}/alarm`;
|
|
}).finally(() => this.setLoading(false));
|
|
}
|
|
|
|
public async getMonitorDetail(id: number) {
|
|
return getMonitorDetail(id).then(this.setMonitorStrategyDetail);
|
|
}
|
|
|
|
public modifyMonitorStrategy(params: IRequestParams) {
|
|
return modifyMonitorStrategy(params).then(() => {
|
|
message.success('操作成功');
|
|
window.location.href = `${urlPrefix}/alarm`;
|
|
}).finally(() => this.setLoading(false));
|
|
}
|
|
|
|
public getMonitorGroups() {
|
|
return getMonitorNotifyGroups(); // this.setMonitorGroups
|
|
}
|
|
}
|
|
export const alarm = new Alarm();
|