fix alias variables with direct DB connection, closes #965

This commit is contained in:
Alexander Zobnin
2020-05-27 15:26:22 +03:00
parent d2a1a7797b
commit 91b4dd6fd9

View File

@@ -123,22 +123,36 @@ export class ZabbixNotImplemented {
*/ */
function convertGrafanaTSResponse(time_series, items, addHostName) { function convertGrafanaTSResponse(time_series, items, addHostName) {
//uniqBy is needed to deduplicate //uniqBy is needed to deduplicate
var hosts = _.uniqBy(_.flatten(_.map(items, 'hosts')), 'hostid'); const hosts = _.uniqBy(_.flatten(_.map(items, 'hosts')), 'hostid');
let grafanaSeries = _.map(_.compact(time_series), series => { let grafanaSeries = _.map(_.compact(time_series), series => {
let itemid = series.name; const itemid = series.name;
var item = _.find(items, {'itemid': itemid}); const item = _.find(items, {'itemid': itemid});
var alias = item.name; let alias = item.name;
//only when actual multi hosts selected
if (_.keys(hosts).length > 1 && addHostName) { // Add scopedVars for using in alias functions
var host = _.find(hosts, {'hostid': item.hostid}); const scopedVars = {
alias = host.name + ": " + alias; '__zbx_item': { value: item.name },
'__zbx_item_name': { value: item.name },
'__zbx_item_key': { value: item.key_ },
};
if (_.keys(hosts).length > 0) {
const host = _.find(hosts, {'hostid': item.hostid});
scopedVars['__zbx_host'] = { value: host.host };
scopedVars['__zbx_host_name'] = { value: host.name };
// Only add host when multiple hosts selected
if (_.keys(hosts).length > 1 && addHostName) {
alias = host.name + ": " + alias;
}
} }
// CachingProxy deduplicates requests and returns one time series for equal queries. // CachingProxy deduplicates requests and returns one time series for equal queries.
// Clone is needed to prevent changing of series object shared between all targets. // Clone is needed to prevent changing of series object shared between all targets.
let datapoints = _.cloneDeep(series.points); const datapoints = _.cloneDeep(series.points);
return { return {
target: alias, target: alias,
datapoints: datapoints datapoints,
scopedVars,
}; };
}); });