triggers mode: filter results by group, fix #709

This commit is contained in:
Alexander Zobnin
2019-04-23 19:53:38 +03:00
parent f76cff2b89
commit c5453041ac
2 changed files with 16 additions and 9 deletions

View File

@@ -330,7 +330,7 @@ export class ZabbixDatasource {
queryTriggersData(target, timeRange) { queryTriggersData(target, timeRange) {
let [timeFrom, timeTo] = timeRange; let [timeFrom, timeTo] = timeRange;
return this.zabbix.getHostsFromTarget(target) return this.zabbix.getHostsFromTarget(target)
.then((results) => { .then(results => {
let [hosts, apps] = results; let [hosts, apps] = results;
if (hosts.length) { if (hosts.length) {
let hostids = _.map(hosts, 'hostid'); let hostids = _.map(hosts, 'hostid');
@@ -342,9 +342,13 @@ export class ZabbixDatasource {
timeFrom: timeFrom, timeFrom: timeFrom,
timeTo: timeTo timeTo: timeTo
}; };
return this.zabbix.getHostAlerts(hostids, appids, options) const groupFilter = target.group.filter;
.then((triggers) => { return Promise.all([
return responseHandler.handleTriggersResponse(triggers, timeRange); this.zabbix.getHostAlerts(hostids, appids, options),
this.zabbix.getGroups(groupFilter)
])
.then(([triggers, groups]) => {
return responseHandler.handleTriggersResponse(triggers, groups, timeRange);
}); });
} else { } else {
return Promise.resolve([]); return Promise.resolve([]);

View File

@@ -143,7 +143,7 @@ function handleSLAResponse(itservice, slaProperty, slaObject) {
} }
} }
function handleTriggersResponse(triggers, timeRange) { function handleTriggersResponse(triggers, groups, timeRange) {
if (_.isNumber(triggers)) { if (_.isNumber(triggers)) {
return { return {
target: "triggers count", target: "triggers count",
@@ -152,16 +152,19 @@ function handleTriggersResponse(triggers, timeRange) {
] ]
}; };
} else { } else {
let stats = getTriggerStats(triggers); const stats = getTriggerStats(triggers);
const groupNames = _.map(groups, 'name');
let table = new TableModel(); let table = new TableModel();
table.addColumn({text: 'Host group'}); table.addColumn({text: 'Host group'});
_.each(_.orderBy(c.TRIGGER_SEVERITY, ['val'], ['desc']), (severity) => { _.each(_.orderBy(c.TRIGGER_SEVERITY, ['val'], ['desc']), (severity) => {
table.addColumn({text: severity.text}); table.addColumn({text: severity.text});
}); });
_.each(stats, (severity_stats, group) => { _.each(stats, (severity_stats, group) => {
if (_.includes(groupNames, group)) {
let row = _.map(_.orderBy(_.toPairs(severity_stats), (s) => s[0], ['desc']), (s) => s[1]); let row = _.map(_.orderBy(_.toPairs(severity_stats), (s) => s[0], ['desc']), (s) => s[1]);
row = _.concat([group], ...row); row = _.concat([group], ...row);
table.rows.push(row); table.rows.push(row);
}
}); });
return table; return table;
} }