Skip to content

Commit

Permalink
Revert "issue open-telemetry#21715 - review comments - removing Compo…
Browse files Browse the repository at this point in the history
…siteKey struct"

This reverts commit 8e443b8.
  • Loading branch information
rajim17 committed May 19, 2023
1 parent 8e443b8 commit 6a187bc
Showing 1 changed file with 23 additions and 17 deletions.
40 changes: 23 additions & 17 deletions receiver/azuremonitorreceiver/scraper.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,20 @@ type azureResource struct {
location string
}

type metricsCompositeKey struct {
dimensions []string
timeGrain string
}

func (s metricsCompositeKey) Hash() string {
h := sha256.New()
h.Write([]byte(s.timeGrain))
h.Write([]byte(strings.Join(s.dimensions, ",")))
return string(h.Sum(nil))
}

type azureResourceMetrics struct {
dimensions []string
timeGrain string
compositeKey metricsCompositeKey
metrics []string
metricsValuesUpdated time.Time
}
Expand Down Expand Up @@ -262,6 +273,7 @@ func (s *azureScraper) getResourceMetricsDefinitions(ctx context.Context, resour

timeGrain := *v.MetricAvailabilities[0].TimeGrain
name := *v.Name.Value
compositeKey := metricsCompositeKey{timeGrain: timeGrain}

if len(v.Dimensions) > 0 {
var dimensionsSlice []string
Expand All @@ -270,30 +282,24 @@ func (s *azureScraper) getResourceMetricsDefinitions(ctx context.Context, resour
dimensionsSlice = append(dimensionsSlice, *dimension.Value)
}
}
s.storeMetricsDefinition(resourceID, name, timeGrain, dimensionsSlice)
dimensionsCompositeKey := metricsCompositeKey{timeGrain: timeGrain, dimensions: dimensionsSlice}
s.storeMetricsDefinition(resourceID, name, dimensionsCompositeKey)
} else {
s.storeMetricsDefinition(resourceID, name, timeGrain, []string{})
s.storeMetricsDefinition(resourceID, name, compositeKey)
}
}
}
s.resources[resourceID].metricsDefinitionsUpdated = time.Now()
}

func (s *azureScraper) calculateHash(timeGrain string, dimensions []string) string {
h := sha256.New()
h.Write([]byte(timeGrain))
h.Write([]byte(strings.Join(dimensions, ",")))
return string(h.Sum(nil))
}

func (s *azureScraper) storeMetricsDefinition(resourceID, name string, timeGrain string, dimensions []string) {
hash := s.calculateHash(timeGrain, dimensions)
func (s *azureScraper) storeMetricsDefinition(resourceID, name string, compositeKey metricsCompositeKey) {
hash := compositeKey.Hash()
if _, ok := s.resources[resourceID].metricsByCompositeKey[hash]; ok {
s.resources[resourceID].metricsByCompositeKey[hash].metrics = append(
s.resources[resourceID].metricsByCompositeKey[hash].metrics, name,
)
} else {
s.resources[resourceID].metricsByCompositeKey[hash] = &azureResourceMetrics{metrics: []string{name}, timeGrain: timeGrain, dimensions: dimensions}
s.resources[resourceID].metricsByCompositeKey[hash] = &azureResourceMetrics{metrics: []string{name}, compositeKey: compositeKey}
}
}

Expand All @@ -302,7 +308,7 @@ func (s *azureScraper) getResourceMetricsValues(ctx context.Context, resourceID

for _, metricsByGrain := range res.metricsByCompositeKey {

if time.Since(metricsByGrain.metricsValuesUpdated).Seconds() < float64(timeGrains[metricsByGrain.timeGrain]) {
if time.Since(metricsByGrain.metricsValuesUpdated).Seconds() < float64(timeGrains[metricsByGrain.compositeKey.timeGrain]) {
continue
}
metricsByGrain.metricsValuesUpdated = time.Now()
Expand All @@ -318,8 +324,8 @@ func (s *azureScraper) getResourceMetricsValues(ctx context.Context, resourceID

opts := getResourceMetricsValuesRequestOptions(
metricsByGrain.metrics,
metricsByGrain.dimensions,
metricsByGrain.timeGrain,
metricsByGrain.compositeKey.dimensions,
metricsByGrain.compositeKey.timeGrain,
start,
end,
)
Expand Down

0 comments on commit 6a187bc

Please sign in to comment.