problem panels: get problem actions

This commit is contained in:
Alexander Zobnin
2018-12-08 17:56:31 +03:00
parent 9e4bf88195
commit 198110e2af
4 changed files with 53 additions and 27 deletions

View File

@@ -398,6 +398,16 @@ export class ZabbixAPIConnector {
});
}
getEventAlerts(eventids) {
const params = {
eventids: eventids,
output: 'extend',
selectUsers: true,
};
return this.request('alert.get', params);
}
getAlerts(itemids, timeFrom, timeTo) {
var params = {
output: 'extend',

View File

@@ -8,7 +8,8 @@ import { ZabbixNotImplemented } from './connectors/dbConnector';
const REQUESTS_TO_PROXYFY = [
'getHistory', 'getTrend', 'getGroups', 'getHosts', 'getApps', 'getItems', 'getMacros', 'getItemsByIDs',
'getEvents', 'getAlerts', 'getHostAlerts', 'getAcknowledges', 'getITService', 'getSLA', 'getVersion', 'getProxies'
'getEvents', 'getAlerts', 'getHostAlerts', 'getAcknowledges', 'getITService', 'getSLA', 'getVersion', 'getProxies',
'getEventAlerts'
];
const REQUESTS_TO_CACHE = [
@@ -17,7 +18,7 @@ const REQUESTS_TO_CACHE = [
const REQUESTS_TO_BIND = [
'getHistory', 'getTrend', 'getMacros', 'getItemsByIDs', 'getEvents', 'getAlerts', 'getHostAlerts',
'getAcknowledges', 'getITService', 'getVersion', 'login', 'acknowledgeEvent', 'getProxies'
'getAcknowledges', 'getITService', 'getVersion', 'login', 'acknowledgeEvent', 'getProxies', 'getEventAlerts'
];
export class Zabbix {

View File

@@ -82,7 +82,7 @@ export class ProblemList extends PureComponent<ProblemListProps, ProblemListStat
}
render() {
// console.log(this.props.problems, this.props.panelOptions);
console.log(this.props.problems);
const columns = this.buildColumns();
this.rootWidth = this.rootRef && this.rootRef.clientWidth;

View File

@@ -233,7 +233,19 @@ export class TriggerPanelCtrl extends PanelCtrl {
]);
}).then(([triggers, sourceProxies]) => {
proxies = _.keyBy(sourceProxies, 'proxyid');
return this.getAcknowledges(triggers, ds);
const eventids = _.compact(triggers.map(trigger => {
return trigger.lastEvent.eventid;
}));
return Promise.all([
this.datasources[ds].zabbix.getAcknowledges(eventids),
this.datasources[ds].zabbix.getEventAlerts(eventids),
Promise.resolve(triggers)
]);
})
.then(([events, alerts, triggers]) => {
this.addAcknowledges(events, triggers);
this.addEventAlerts(alerts, triggers);
return triggers;
})
.then(triggers => this.setMaintenanceStatus(triggers))
.then(triggers => this.filterTriggersPre(triggers, ds))
@@ -245,32 +257,23 @@ export class TriggerPanelCtrl extends PanelCtrl {
.then(results => _.flatten(results));
}
getAcknowledges(triggerList, ds) {
// Request acknowledges for trigger
var eventids = _.map(triggerList, trigger => {
return trigger.lastEvent.eventid;
});
return this.datasources[ds].zabbix.getAcknowledges(eventids)
.then(events => {
// Map events to triggers
_.each(triggerList, trigger => {
var event = _.find(events, event => {
return event.eventid === trigger.lastEvent.eventid;
});
if (event) {
trigger.acknowledges = _.map(event.acknowledges, this.formatAcknowledge.bind(this));
}
if (!trigger.lastEvent.eventid) {
trigger.lastEvent = null;
}
addAcknowledges(events, triggers) {
// Map events to triggers
_.each(triggers, trigger => {
var event = _.find(events, event => {
return event.eventid === trigger.lastEvent.eventid;
});
return triggerList;
if (event) {
trigger.acknowledges = _.map(event.acknowledges, this.formatAcknowledge.bind(this));
}
if (!trigger.lastEvent.eventid) {
trigger.lastEvent = null;
}
});
return triggers;
}
formatAcknowledge(ack) {
@@ -288,6 +291,18 @@ export class TriggerPanelCtrl extends PanelCtrl {
return ack;
}
addEventAlerts(alerts, triggers) {
alerts.forEach(alert => {
const trigger = _.find(triggers, t => {
return t.lastEvent && alert.eventid === t.lastEvent.eventid;
});
if (trigger) {
trigger.alerts = trigger.alerts ? trigger.alerts.concat(alert) : [alert];
}
});
return triggers;
}
filterTriggersPre(triggerList, ds) {
// Filter triggers by description
let triggerFilter = this.panel.targets[ds].trigger.filter;