Skip frontend functions

This commit is contained in:
Alexander Zobnin
2021-05-25 18:12:36 +03:00
parent 51e487deab
commit ff16e2fe8d
3 changed files with 22 additions and 6 deletions

View File

@@ -18,8 +18,14 @@ var errParsingFunctionParam = func(err error) error {
type DataProcessingFunc = func(series timeseries.TimeSeries, params ...string) (timeseries.TimeSeries, error) type DataProcessingFunc = func(series timeseries.TimeSeries, params ...string) (timeseries.TimeSeries, error)
type MetaDataProcessingFunc = func(series *timeseries.TimeSeriesData, params ...string) (*timeseries.TimeSeriesData, error)
var funcMap map[string]DataProcessingFunc var funcMap map[string]DataProcessingFunc
var metaFuncMap map[string]MetaDataProcessingFunc
var frontendFuncMap map[string]bool
func init() { func init() {
funcMap = map[string]DataProcessingFunc{ funcMap = map[string]DataProcessingFunc{
"groupBy": applyGroupBy, "groupBy": applyGroupBy,
@@ -27,6 +33,12 @@ func init() {
"offset": applyOffset, "offset": applyOffset,
} }
// Functions processing on the frontend
frontendFuncMap = map[string]bool{
"setAlias": true,
"replaceAlias": true,
"setAliasByRegex": true,
}
} }
func applyFunctions(series []*timeseries.TimeSeriesData, functions []QueryFunction) ([]*timeseries.TimeSeriesData, error) { func applyFunctions(series []*timeseries.TimeSeriesData, functions []QueryFunction) ([]*timeseries.TimeSeriesData, error) {
@@ -39,6 +51,8 @@ func applyFunctions(series []*timeseries.TimeSeriesData, functions []QueryFuncti
} }
s.TS = result s.TS = result
} }
} else if _, ok := frontendFuncMap[f.Def.Name]; ok {
continue
} else { } else {
err := errFunctionNotSupported(f.Def.Name) err := errFunctionNotSupported(f.Def.Name)
return series, err return series, err

View File

@@ -26,7 +26,13 @@ func convertHistoryToTimeSeries(history zabbix.History, items []*zabbix.Item) []
} }
pointSeries := seriesMap[point.ItemID] pointSeries := seriesMap[point.ItemID]
if pointSeries.Meta.Item == nil { if pointSeries.Meta.Item == nil {
itemName := pointItem.ExpandItemName()
pointSeries.Meta.Item = pointItem pointSeries.Meta.Item = pointItem
pointSeries.Meta.Item.Name = itemName
pointSeries.Meta.Name = itemName
if len(pointItem.Hosts) > 0 {
pointSeries.Meta.Name = fmt.Sprintf("%s: %s", pointItem.Hosts[0].Name, itemName)
}
} }
value := point.Value value := point.Value
@@ -51,12 +57,7 @@ func convertTimeSeriesToDataFrame(series []*timeseries.TimeSeriesData) *data.Fra
for _, s := range series { for _, s := range series {
field := data.NewFieldFromFieldType(data.FieldTypeNullableFloat64, 0) field := data.NewFieldFromFieldType(data.FieldTypeNullableFloat64, 0)
item := s.Meta.Item field.Name = s.Meta.Name
if len(item.Hosts) > 0 {
field.Name = fmt.Sprintf("%s: %s", item.Hosts[0].Name, item.ExpandItemName())
} else {
field.Name = item.ExpandItemName()
}
frame.Fields = append(frame.Fields, field) frame.Fields = append(frame.Fields, field)
} }

View File

@@ -27,6 +27,7 @@ type TimeSeriesData struct {
} }
type TimeSeriesMeta struct { type TimeSeriesMeta struct {
Name string
Item *zabbix.Item Item *zabbix.Item
} }