Impoved query for text items - get only last value.

This commit is contained in:
Alexander Zobnin
2016-02-01 16:22:11 +03:00
parent 2b91f417f4
commit efc51fdcf6
2 changed files with 43 additions and 21 deletions

View File

@@ -191,31 +191,33 @@ function (angular, _, dateMath, utils, metricFunctions) {
// Query text data // Query text data
else if (target.mode === 2) { else if (target.mode === 2) {
// Find items by item names and perform queries
return self.queryProcessor.build(groupFilter, hostFilter, appFilter, itemFilter) return self.queryProcessor.build(groupFilter, hostFilter, appFilter, itemFilter)
.then(function(items) { .then(function(items) {
return self.zabbixCache.getHistory(items, from, to).then(function(history) { var deferred = $q.defer();
return { if (items.length) {
target: target.item.name, self.zabbixAPI.getLastValue(items[0].itemid).then(function(lastvalue) {
datapoints: _.map(history, function (p) { if (target.textFilter) {
var value = p.value; var text_extract_pattern = new RegExp(templateSrv.replace(target.textFilter, options.scopedVars));
if (target.textFilter) { var result = text_extract_pattern.exec(lastvalue);
var text_extract_pattern = new RegExp(templateSrv.replace(target.textFilter, options.scopedVars)); if (result) {
//var text_extract_pattern = new RegExp(target.textFilter); if (target.useCaptureGroups) {
var result = text_extract_pattern.exec(value); result = result[1];
if (result) {
if (target.useCaptureGroups) {
value = result[1];
} else {
value = result[0];
}
} else { } else {
value = null; result = result[0];
} }
} }
return [value, p.clock * 1000]; deferred.resolve(result);
}) } else {
deferred.resolve(lastvalue);
}
});
} else {
deferred.resolve(null);
}
return deferred.promise.then(function(text) {
return {
target: target.item.name,
datapoints: [[text, to * 1000]]
}; };
}); });
}); });

View File

@@ -132,7 +132,13 @@ function (angular, _) {
p.getItems = function() { p.getItems = function() {
var params = { var params = {
output: ['name', 'key_', 'value_type', 'hostid', 'status', 'state'], output: [
'name', 'key_',
'value_type',
'hostid',
'status',
'state'
],
sortfield: 'name', sortfield: 'name',
selectApplications: [] selectApplications: []
}; };
@@ -140,6 +146,20 @@ function (angular, _) {
return this.request('item.get', params); return this.request('item.get', params);
}; };
p.getLastValue = function(itemid) {
var params = {
output: ['lastvalue'],
itemids: itemid
};
return this.request('item.get', params).then(function(items) {
if (items.length) {
return items[0].lastvalue;
} else {
return null;
}
});
};
/** /**
* Perform history query from Zabbix API * Perform history query from Zabbix API
* *