problems: use event tags for problems instead of trigger tags, #487

This commit is contained in:
Alexander Zobnin
2019-02-11 17:30:38 +03:00
parent 496d4a8d57
commit 8809b5a9d3
3 changed files with 31 additions and 3 deletions

View File

@@ -404,6 +404,20 @@ export class ZabbixAPIConnector {
});
}
getExtendedEventData(eventids) {
var params = {
output: 'extend',
eventids: eventids,
preservekeys: true,
select_acknowledges: 'extend',
selectTags: 'extend',
sortfield: 'clock',
sortorder: 'DESC'
};
return this.request('event.get', params);
}
getEventAlerts(eventids) {
const params = {
eventids: eventids,

View File

@@ -9,7 +9,7 @@ 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',
'getEventAlerts'
'getEventAlerts', 'getExtendedEventData'
];
const REQUESTS_TO_CACHE = [
@@ -18,7 +18,8 @@ const REQUESTS_TO_CACHE = [
const REQUESTS_TO_BIND = [
'getHistory', 'getTrend', 'getMacros', 'getItemsByIDs', 'getEvents', 'getAlerts', 'getHostAlerts',
'getAcknowledges', 'getITService', 'getVersion', 'login', 'acknowledgeEvent', 'getProxies', 'getEventAlerts'
'getAcknowledges', 'getITService', 'getVersion', 'login', 'acknowledgeEvent', 'getProxies', 'getEventAlerts',
'getExtendedEventData'
];
export class Zabbix {

View File

@@ -269,12 +269,13 @@ export class TriggerPanelCtrl extends PanelCtrl {
return trigger.lastEvent.eventid;
}));
return Promise.all([
this.datasources[ds].zabbix.getAcknowledges(eventids),
this.datasources[ds].zabbix.getExtendedEventData(eventids),
this.datasources[ds].zabbix.getEventAlerts(eventids),
Promise.resolve(triggers)
]);
})
.then(([events, alerts, triggers]) => {
this.addEventTags(events, triggers);
this.addAcknowledges(events, triggers);
this.addEventAlerts(alerts, triggers);
return triggers;
@@ -323,6 +324,18 @@ export class TriggerPanelCtrl extends PanelCtrl {
return ack;
}
addEventTags(events, triggers) {
_.each(triggers, trigger => {
var event = _.find(events, event => {
return event.eventid === trigger.lastEvent.eventid;
});
if (event && event.tags && event.tags.length) {
trigger.tags = event.tags;
}
});
return triggers;
}
addEventAlerts(alerts, triggers) {
alerts.forEach(alert => {
const trigger = _.find(triggers, t => {