Add host name only if result contains multiple hosts, fixes #1335

This commit is contained in:
Alexander Zobnin
2023-08-01 15:25:37 +02:00
parent 873947ca2e
commit e33812427e

View File

@@ -15,6 +15,7 @@ import (
func convertHistoryToTimeSeries(history zabbix.History, items []*zabbix.Item) []*timeseries.TimeSeriesData { func convertHistoryToTimeSeries(history zabbix.History, items []*zabbix.Item) []*timeseries.TimeSeriesData {
seriesMap := make(map[string]*timeseries.TimeSeriesData, len(items)) seriesMap := make(map[string]*timeseries.TimeSeriesData, len(items))
hostsCount := getHostsCount(items)
itemsMap := make(map[string]*zabbix.Item, len(items)) itemsMap := make(map[string]*zabbix.Item, len(items))
for _, item := range items { for _, item := range items {
@@ -32,7 +33,7 @@ func convertHistoryToTimeSeries(history zabbix.History, items []*zabbix.Item) []
pointSeries.Meta.Item = pointItem pointSeries.Meta.Item = pointItem
pointSeries.Meta.Item.Name = itemName pointSeries.Meta.Item.Name = itemName
pointSeries.Meta.Name = itemName pointSeries.Meta.Name = itemName
if len(pointItem.Hosts) > 0 { if hostsCount > 1 {
pointSeries.Meta.Name = fmt.Sprintf("%s: %s", pointItem.Hosts[0].Name, itemName) pointSeries.Meta.Name = fmt.Sprintf("%s: %s", pointItem.Hosts[0].Name, itemName)
} }
pointSeries.Meta.Interval = parseItemUpdateInterval(pointItem.Delay) pointSeries.Meta.Interval = parseItemUpdateInterval(pointItem.Delay)
@@ -215,3 +216,14 @@ func getValueMapping(item zabbix.Item, valueMaps []zabbix.ValueMap) data.ValueMa
} }
return mappings return mappings
} }
// Returns number of uniq hosts for given items
func getHostsCount(items []*zabbix.Item) int {
hostsMap := make(map[string]bool, 0)
for _, item := range items {
for _, host := range item.Hosts {
hostsMap[host.ID] = true
}
}
return len(hostsMap)
}