Merge pull request #2429 from ctripcloud/RenameAllMetricSet

refactor AllMetrics to support external reference
This commit is contained in:
David Ashpole 2020-03-16 09:38:37 -07:00 committed by GitHub
commit 5bca5d7a8d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 67 additions and 42 deletions

View File

@ -260,27 +260,5 @@ func createCollectorHttpClient(collectorCert, collectorKey string) http.Client {
} }
func toIncludedMetrics(ignoreMetrics container.MetricSet) container.MetricSet { func toIncludedMetrics(ignoreMetrics container.MetricSet) container.MetricSet {
set := container.MetricSet{} return container.AllMetrics.Difference(ignoreMetrics)
allMetrics := []container.MetricKind{
container.CpuUsageMetrics,
container.ProcessSchedulerMetrics,
container.PerCpuUsageMetrics,
container.MemoryUsageMetrics,
container.CpuLoadMetrics,
container.DiskIOMetrics,
container.DiskUsageMetrics,
container.NetworkUsageMetrics,
container.NetworkTcpUsageMetrics,
container.NetworkAdvancedTcpUsageMetrics,
container.NetworkUdpUsageMetrics,
container.AcceleratorUsageMetrics,
container.AppMetrics,
container.ProcessMetrics,
}
for _, metric := range allMetrics {
if !ignoreMetrics.Has(metric) {
set[metric] = struct{}{}
}
}
return set
} }

View File

@ -59,3 +59,39 @@ func TestIgnoreMetrics(t *testing.T) {
} }
} }
} }
func TestToIncludedMetrics(t *testing.T) {
ignores := []container.MetricSet{
{
container.CpuUsageMetrics: struct{}{},
},
{
},
container.AllMetrics,
}
expected := []container.MetricSet{
{
container.ProcessSchedulerMetrics: struct{}{},
container.PerCpuUsageMetrics: struct{}{},
container.MemoryUsageMetrics: struct{}{},
container.CpuLoadMetrics: struct{}{},
container.DiskIOMetrics: struct{}{},
container.AcceleratorUsageMetrics: struct{}{},
container.DiskUsageMetrics: struct{}{},
container.NetworkUsageMetrics: struct{}{},
container.NetworkTcpUsageMetrics: struct{}{},
container.NetworkAdvancedTcpUsageMetrics: struct{}{},
container.NetworkUdpUsageMetrics: struct{}{},
container.ProcessMetrics: struct{}{},
container.AppMetrics: struct{}{},
},
container.AllMetrics,
{},
}
for idx, ignore := range ignores {
actual := toIncludedMetrics(ignore)
assert.Equal(t, actual, expected[idx])
}
}

View File

@ -59,6 +59,24 @@ const (
ProcessMetrics MetricKind = "process" ProcessMetrics MetricKind = "process"
) )
// AllMetrics represents all kinds of metrics that cAdvisor supported.
var AllMetrics = MetricSet{
CpuUsageMetrics: struct{}{},
ProcessSchedulerMetrics: struct{}{},
PerCpuUsageMetrics: struct{}{},
MemoryUsageMetrics: struct{}{},
CpuLoadMetrics: struct{}{},
DiskIOMetrics: struct{}{},
AcceleratorUsageMetrics: struct{}{},
DiskUsageMetrics: struct{}{},
NetworkUsageMetrics: struct{}{},
NetworkTcpUsageMetrics: struct{}{},
NetworkAdvancedTcpUsageMetrics: struct{}{},
NetworkUdpUsageMetrics: struct{}{},
ProcessMetrics: struct{}{},
AppMetrics: struct{}{},
}
func (mk MetricKind) String() string { func (mk MetricKind) String() string {
return string(mk) return string(mk)
} }
@ -74,6 +92,16 @@ func (ms MetricSet) Add(mk MetricKind) {
ms[mk] = struct{}{} ms[mk] = struct{}{}
} }
func (ms MetricSet) Difference(ms1 MetricSet) MetricSet {
result := MetricSet{}
for kind := range ms {
if !ms1.Has(kind) {
result.Add(kind)
}
}
return result
}
// All registered auth provider plugins. // All registered auth provider plugins.
var pluginsLock sync.Mutex var pluginsLock sync.Mutex
var plugins = make(map[string]Plugin) var plugins = make(map[string]Plugin)

View File

@ -48,23 +48,6 @@ func (p testSubcontainersInfoProvider) GetMachineInfo() (*info.MachineInfo, erro
}, nil }, nil
} }
var allMetrics = container.MetricSet{
container.CpuUsageMetrics: struct{}{},
container.ProcessSchedulerMetrics: struct{}{},
container.PerCpuUsageMetrics: struct{}{},
container.MemoryUsageMetrics: struct{}{},
container.CpuLoadMetrics: struct{}{},
container.DiskIOMetrics: struct{}{},
container.AcceleratorUsageMetrics: struct{}{},
container.DiskUsageMetrics: struct{}{},
container.NetworkUsageMetrics: struct{}{},
container.NetworkTcpUsageMetrics: struct{}{},
container.NetworkAdvancedTcpUsageMetrics: struct{}{},
container.NetworkUdpUsageMetrics: struct{}{},
container.ProcessMetrics: struct{}{},
container.AppMetrics: struct{}{},
}
func (p testSubcontainersInfoProvider) SubcontainersInfo(string, *info.ContainerInfoRequest) ([]*info.ContainerInfo, error) { func (p testSubcontainersInfoProvider) SubcontainersInfo(string, *info.ContainerInfoRequest) ([]*info.ContainerInfo, error) {
return []*info.ContainerInfo{ return []*info.ContainerInfo{
{ {
@ -426,7 +409,7 @@ func TestPrometheusCollector(t *testing.T) {
s := DefaultContainerLabels(container) s := DefaultContainerLabels(container)
s["zone.name"] = "hello" s["zone.name"] = "hello"
return s return s
}, allMetrics) }, container.AllMetrics)
prometheus.MustRegister(c) prometheus.MustRegister(c)
defer prometheus.Unregister(c) defer prometheus.Unregister(c)
@ -496,7 +479,7 @@ func TestPrometheusCollector_scrapeFailure(t *testing.T) {
s := DefaultContainerLabels(container) s := DefaultContainerLabels(container)
s["zone.name"] = "hello" s["zone.name"] = "hello"
return s return s
}, allMetrics) }, container.AllMetrics)
prometheus.MustRegister(c) prometheus.MustRegister(c)
defer prometheus.Unregister(c) defer prometheus.Unregister(c)