triggers mode: filter results by group, fix #709
This commit is contained in:
@@ -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([]);
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user