private async Task StoreGaugeAsync(TimeBucket timeBucket, AggregatedGaugeMetric gauge) { if (_logger.IsEnabled(LogLevel.Trace)) { _logger.LogTrace("Storing gauge name={Name} count={Count} total={Total} last={Last} min={Min} max={Max} time={StartTimeUtc}", gauge.Key.Name, gauge.Count, gauge.Total, gauge.Last, gauge.Min, gauge.Max, gauge.Key.StartTimeUtc); } string countKey = GetBucketKey(CacheMetricNames.Gauge, gauge.Key.Name, gauge.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Count); string totalDurationKey = GetBucketKey(CacheMetricNames.Gauge, gauge.Key.Name, gauge.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Total); string lastKey = GetBucketKey(CacheMetricNames.Gauge, gauge.Key.Name, gauge.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Last); string minKey = GetBucketKey(CacheMetricNames.Gauge, gauge.Key.Name, gauge.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Min); string maxKey = GetBucketKey(CacheMetricNames.Gauge, gauge.Key.Name, gauge.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Max); await Task.WhenAll( _cache.IncrementAsync(countKey, gauge.Count, timeBucket.Ttl), _cache.IncrementAsync(totalDurationKey, gauge.Total, timeBucket.Ttl), _cache.SetAsync(lastKey, gauge.Last, timeBucket.Ttl), _cache.SetIfLowerAsync(minKey, gauge.Min, timeBucket.Ttl), _cache.SetIfHigherAsync(maxKey, gauge.Max, timeBucket.Ttl) ).AnyContext(); if (_logger.IsEnabled(LogLevel.Trace)) { _logger.LogTrace("Done storing gauge name={Name}", gauge.Key.Name); } }
private async Task StoreGaugeAsync(TimeBucket timeBucket, AggregatedGaugeMetric gauge) { _logger.Trace(() => $"Storing gauge name={gauge.Key.Name} count={gauge.Count} total={gauge.Total} last={gauge.Last} min={gauge.Min} max={gauge.Max} time={gauge.Key.StartTimeUtc}"); string countKey = GetBucketKey(CacheMetricNames.Gauge, gauge.Key.Name, gauge.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Count); await _cache.IncrementAsync(countKey, gauge.Count, timeBucket.Ttl).AnyContext(); string totalDurationKey = GetBucketKey(CacheMetricNames.Gauge, gauge.Key.Name, gauge.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Total); await _cache.IncrementAsync(totalDurationKey, gauge.Total, timeBucket.Ttl).AnyContext(); string lastKey = GetBucketKey(CacheMetricNames.Gauge, gauge.Key.Name, gauge.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Last); await _cache.SetAsync(lastKey, gauge.Last, timeBucket.Ttl).AnyContext(); string minKey = GetBucketKey(CacheMetricNames.Gauge, gauge.Key.Name, gauge.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Min); await _cache.SetIfLowerAsync(minKey, gauge.Min, timeBucket.Ttl).AnyContext(); string maxKey = GetBucketKey(CacheMetricNames.Gauge, gauge.Key.Name, gauge.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Max); await _cache.SetIfHigherAsync(maxKey, gauge.Max, timeBucket.Ttl).AnyContext(); _logger.Trace(() => $"Done storing gauge name={gauge.Key.Name}"); }