Impoved query for text items - get only last value.
This commit is contained in:
@@ -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]]
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user