refactor AllMetrics to support external reference
Signed-off-by: ChenQingya <qingya.chen520@gmail.com>
This commit is contained in:
parent
9251e327b9
commit
e49c397a3b
24
cadvisor.go
24
cadvisor.go
@ -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
|
|
||||||
}
|
}
|
||||||
|
@ -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])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user