diff --git a/etc/collector.yml b/etc/collector.yml index 8ba85351..6746f9e5 100644 --- a/etc/collector.yml +++ b/etc/collector.yml @@ -16,7 +16,7 @@ sys: mountPoint: [] mountIgnorePrefix: - /var/lib - + ignoreMetrics: - cpu.core.idle - cpu.core.util diff --git a/src/modules/collector/cache/cache.go b/src/modules/collector/cache/cache.go index 86e2046d..642dd0a3 100644 --- a/src/modules/collector/cache/cache.go +++ b/src/modules/collector/cache/cache.go @@ -56,7 +56,7 @@ func (h *History) clean() { defer h.Unlock() now := time.Now().Unix() for key, item := range h.Data { - if now-item.Timestamp > 2*item.Step { + if now-item.Timestamp > 10*item.Step { delete(h.Data, key) } } diff --git a/src/modules/collector/sys/funcs/push.go b/src/modules/collector/sys/funcs/push.go index 743da28b..a22ba72b 100644 --- a/src/modules/collector/sys/funcs/push.go +++ b/src/modules/collector/sys/funcs/push.go @@ -96,17 +96,23 @@ func Push(metricItems []*dataobj.MetricValue) error { func CounterToGauge(item *dataobj.MetricValue) error { key := item.PK() + old, exists := cache.MetricHistory.Get(key) + cache.MetricHistory.Set(key, *item) + if !exists { - cache.MetricHistory.Set(key, *item) return fmt.Errorf("not found old item:%v", item) } - cache.MetricHistory.Set(key, *item) if old.Value > item.Value { return fmt.Errorf("item:%v old value:%v greater than new value:%v", item, old.Value, item.Value) } - item.ValueUntyped = item.Value - old.Value + + if old.Timestamp > item.Timestamp { + return fmt.Errorf("item:%v old timestamp:%v greater than new timestamp:%v", item, old.Timestamp, item.Timestamp) + } + + item.ValueUntyped = (item.Value - old.Value) / float64(item.Timestamp-old.Timestamp) item.CounterType = dataobj.GAUGE return nil }