internal/ecsservicediscovery/processorstats.go (53 lines of code) (raw):
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: MIT
package ecsservicediscovery
import (
"log"
"sort"
"time"
)
const (
AWSAPIDescribeContainerInstances = "AWSCLI_DescribeContainerInstances"
AWSCLIDescribeInstancesRequest = "AWSCLI_DescribeInstancesRequest"
AWSCLIDescribeTaskDefinition = "AWSCLI_DescribeTaskDefinition"
AWSCLIListServices = "AWSCLI_ListServices"
AWSCLIListTasks = "AWSCLI_ListTasks"
AWSCLIDescribeTasks = "AWSCLI_DescribeTasks"
LRUCacheGetEC2MetaData = "LRUCache_Get_EC2MetaData"
LRUCacheGetTaskDefinition = "LRUCache_Get_TaskDefinition"
LRUCacheSizeContainerInstance = "LRUCache_Size_ContainerInstance"
LRUCacheSizeTaskDefinition = "LRUCache_Size_TaskDefinition"
ExporterDiscoveredTargetCount = "Exporter_DiscoveredTargetCount"
)
type ProcessorStats struct {
stats map[string]int
startTime time.Time
}
func (sd *ProcessorStats) AddStats(name string) {
sd.AddStatsCount(name, 1)
}
func (sd *ProcessorStats) GetStats(name string) int {
if v, ok := sd.stats[name]; ok {
return v
}
return 0
}
func (sd *ProcessorStats) AddStatsCount(name string, count int) {
if sd.stats == nil {
sd.ResetStats()
}
sd.stats[name] += count
}
func (sd *ProcessorStats) ResetStats() {
sd.stats = make(map[string]int)
sd.startTime = time.Now()
}
func (sd *ProcessorStats) ShowStats() {
var keys []string
for k := range sd.stats {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
log.Printf("D! ECS_SD_Stats: %v: %v\n", k, sd.stats[k])
}
log.Printf("D! ECS_SD_Stats: Latency: %v\n", time.Since(sd.startTime))
}