Fix using units from Zabbix, #1321

This commit is contained in:
Alexander Zobnin
2022-02-17 16:17:49 +03:00
parent 0a4714f9e9
commit afb90c9643
3 changed files with 26 additions and 0 deletions

View File

@@ -129,6 +129,7 @@ func seriesToDataFrame(series *timeseries.TimeSeriesData, valuemaps []zabbix.Val
valueField.Config = &data.FieldConfig{
Custom: map[string]interface{}{
"scopedVars": scopedVars,
"units": item.Units,
},
}

View File

@@ -188,6 +188,7 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
const resp = toDataQueryResponse(rsp);
this.sortByRefId(resp);
this.applyFrontendFunctions(resp, request);
responseHandler.convertZabbixUnits(resp);
if (responseHandler.isConvertibleToWide(resp.data)) {
console.log('Converting response to the wide format');
resp.data = responseHandler.convertToWide(resp.data);

View File

@@ -7,6 +7,7 @@ import {
DataFrame,
dataFrameFromJSON,
DataFrameJSON,
DataQueryResponse,
Field,
FieldType,
getTimeField,
@@ -210,6 +211,28 @@ export function dataResponseToTimeSeries(response: DataFrameJSON[], items, reque
return series;
}
// Get units from Zabbix
export function convertZabbixUnits(response: DataQueryResponse) {
for (let i = 0; i < response.data.length; i++) {
const frame: DataFrame = response.data[i];
for (const field of frame.fields) {
const zabbixUnits = field.config.custom?.units;
if (zabbixUnits) {
const unit = utils.convertZabbixUnit(zabbixUnits);
if (unit) {
field.config.unit = unit;
if (unit === 'percent') {
field.config.min = 0;
field.config.max = 100;
}
}
}
}
}
return response;
}
export function itServiceResponseToTimeSeries(response: any, interval) {
const series = [];
if (response.length === 0) {
@@ -569,4 +592,5 @@ export default {
isConvertibleToWide,
convertToWide,
alignFrames,
convertZabbixUnits,
};