problem panels: get problem actions
This commit is contained in:
@@ -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) {
|
getAlerts(itemids, timeFrom, timeTo) {
|
||||||
var params = {
|
var params = {
|
||||||
output: 'extend',
|
output: 'extend',
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ import { ZabbixNotImplemented } from './connectors/dbConnector';
|
|||||||
|
|
||||||
const REQUESTS_TO_PROXYFY = [
|
const REQUESTS_TO_PROXYFY = [
|
||||||
'getHistory', 'getTrend', 'getGroups', 'getHosts', 'getApps', 'getItems', 'getMacros', 'getItemsByIDs',
|
'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 = [
|
const REQUESTS_TO_CACHE = [
|
||||||
@@ -17,7 +18,7 @@ const REQUESTS_TO_CACHE = [
|
|||||||
|
|
||||||
const REQUESTS_TO_BIND = [
|
const REQUESTS_TO_BIND = [
|
||||||
'getHistory', 'getTrend', 'getMacros', 'getItemsByIDs', 'getEvents', 'getAlerts', 'getHostAlerts',
|
'getHistory', 'getTrend', 'getMacros', 'getItemsByIDs', 'getEvents', 'getAlerts', 'getHostAlerts',
|
||||||
'getAcknowledges', 'getITService', 'getVersion', 'login', 'acknowledgeEvent', 'getProxies'
|
'getAcknowledges', 'getITService', 'getVersion', 'login', 'acknowledgeEvent', 'getProxies', 'getEventAlerts'
|
||||||
];
|
];
|
||||||
|
|
||||||
export class Zabbix {
|
export class Zabbix {
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ export class ProblemList extends PureComponent<ProblemListProps, ProblemListStat
|
|||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
// console.log(this.props.problems, this.props.panelOptions);
|
console.log(this.props.problems);
|
||||||
const columns = this.buildColumns();
|
const columns = this.buildColumns();
|
||||||
this.rootWidth = this.rootRef && this.rootRef.clientWidth;
|
this.rootWidth = this.rootRef && this.rootRef.clientWidth;
|
||||||
|
|
||||||
|
|||||||
@@ -233,7 +233,19 @@ export class TriggerPanelCtrl extends PanelCtrl {
|
|||||||
]);
|
]);
|
||||||
}).then(([triggers, sourceProxies]) => {
|
}).then(([triggers, sourceProxies]) => {
|
||||||
proxies = _.keyBy(sourceProxies, 'proxyid');
|
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.setMaintenanceStatus(triggers))
|
||||||
.then(triggers => this.filterTriggersPre(triggers, ds))
|
.then(triggers => this.filterTriggersPre(triggers, ds))
|
||||||
@@ -245,32 +257,23 @@ export class TriggerPanelCtrl extends PanelCtrl {
|
|||||||
.then(results => _.flatten(results));
|
.then(results => _.flatten(results));
|
||||||
}
|
}
|
||||||
|
|
||||||
getAcknowledges(triggerList, ds) {
|
addAcknowledges(events, triggers) {
|
||||||
// Request acknowledges for trigger
|
// Map events to triggers
|
||||||
var eventids = _.map(triggerList, trigger => {
|
_.each(triggers, trigger => {
|
||||||
return trigger.lastEvent.eventid;
|
var event = _.find(events, event => {
|
||||||
});
|
return event.eventid === 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;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return triggerList;
|
if (event) {
|
||||||
|
trigger.acknowledges = _.map(event.acknowledges, this.formatAcknowledge.bind(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!trigger.lastEvent.eventid) {
|
||||||
|
trigger.lastEvent = null;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return triggers;
|
||||||
}
|
}
|
||||||
|
|
||||||
formatAcknowledge(ack) {
|
formatAcknowledge(ack) {
|
||||||
@@ -288,6 +291,18 @@ export class TriggerPanelCtrl extends PanelCtrl {
|
|||||||
return ack;
|
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) {
|
filterTriggersPre(triggerList, ds) {
|
||||||
// Filter triggers by description
|
// Filter triggers by description
|
||||||
let triggerFilter = this.panel.targets[ds].trigger.filter;
|
let triggerFilter = this.panel.targets[ds].trigger.filter;
|
||||||
|
|||||||
Reference in New Issue
Block a user