Use history for text data queries, fixes #250.

This commit is contained in:
Alexander Zobnin
2016-08-13 10:00:39 +03:00
parent 38aa982c01
commit a22ad010a6

View File

@@ -224,16 +224,15 @@ export class ZabbixAPIDatasource {
.build(groupFilter, hostFilter, appFilter, itemFilter, 'text') .build(groupFilter, hostFilter, appFilter, itemFilter, 'text')
.then(items => { .then(items => {
if (items.length) { if (items.length) {
var textItemsPromises = _.map(items, item => { return self.zabbixAPI.getHistory(items, timeFrom, timeTo)
return self.zabbixAPI.getLastValue(item.itemid); .then(history => {
}); return self.queryProcessor.convertHistory(history, items, false, (point) => {
return self.q.all(textItemsPromises) let extractedValue = point.value;
.then(result => {
return _.map(result, (lastvalue, index) => { // Regex-based extractor
var extractedValue;
if (target.textFilter) { if (target.textFilter) {
var text_extract_pattern = new RegExp(self.replaceTemplateVars(target.textFilter, options.scopedVars)); let text_extract_pattern = new RegExp(self.replaceTemplateVars(target.textFilter, options.scopedVars));
extractedValue = text_extract_pattern.exec(lastvalue); extractedValue = text_extract_pattern.exec(point.value);
if (extractedValue) { if (extractedValue) {
if (target.useCaptureGroups) { if (target.useCaptureGroups) {
extractedValue = extractedValue[1]; extractedValue = extractedValue[1];
@@ -241,13 +240,12 @@ export class ZabbixAPIDatasource {
extractedValue = extractedValue[0]; extractedValue = extractedValue[0];
} }
} }
} else {
extractedValue = lastvalue;
} }
return {
target: items[index].name, return [
datapoints: [[extractedValue, timeTo * 1000]] extractedValue,
}; point.clock * 1000
];
}); });
}); });
} else { } else {