Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
c7de5806
Commit
c7de5806
authored
Jan 20, 2016
by
Vishnu kannan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update the Metrics test to only require the presense of a list of needed
metrics, and not fail if any new metrics are added. Signed-off-by:
Vishnu kannan
<
vishnuk@google.com
>
parent
7866ffa7
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
26 additions
and
19 deletions
+26
-19
kubelet_metrics.go
pkg/metrics/kubelet_metrics.go
+6
-4
metrics_grabber.go
pkg/metrics/metrics_grabber.go
+5
-5
metrics_grabber_test.go
test/e2e/metrics_grabber_test.go
+15
-10
No files found.
pkg/metrics/kubelet_metrics.go
View file @
c7de5806
...
...
@@ -24,7 +24,7 @@ import (
"github.com/prometheus/common/model"
)
var
Known
KubeletMetrics
=
map
[
string
][]
string
{
var
Necessary
KubeletMetrics
=
map
[
string
][]
string
{
"cadvisor_version_info"
:
{
"cadvisorRevision"
,
"cadvisorVersion"
,
"dockerVersion"
,
"kernelVersion"
,
"osVersion"
},
"container_cpu_system_seconds_total"
:
{
"id"
,
"image"
,
"kubernetes_container_name"
,
"kubernetes_namespace"
,
"kubernetes_pod_name"
,
"name"
},
"container_cpu_usage_seconds_total"
:
{
"id"
,
"image"
,
"kubernetes_container_name"
,
"kubernetes_namespace"
,
"kubernetes_pod_name"
,
"name"
,
"cpu"
},
...
...
@@ -43,6 +43,8 @@ var KnownKubeletMetrics = map[string][]string{
"container_fs_writes_merged_total"
:
{
"device"
,
"id"
,
"image"
,
"kubernetes_container_name"
,
"kubernetes_namespace"
,
"kubernetes_pod_name"
,
"name"
},
"container_fs_writes_total"
:
{
"device"
,
"id"
,
"image"
,
"kubernetes_container_name"
,
"kubernetes_namespace"
,
"kubernetes_pod_name"
,
"name"
},
"container_last_seen"
:
{
"id"
,
"image"
,
"kubernetes_container_name"
,
"kubernetes_namespace"
,
"kubernetes_pod_name"
,
"name"
},
"container_memory_cache"
:
{},
"container_memory_rss"
:
{},
"container_memory_failcnt"
:
{
"id"
,
"image"
,
"kubernetes_container_name"
,
"kubernetes_namespace"
,
"kubernetes_pod_name"
,
"name"
},
"container_memory_failures_total"
:
{
"id"
,
"image"
,
"kubernetes_container_name"
,
"kubernetes_namespace"
,
"kubernetes_pod_name"
,
"name"
,
"scope"
,
"type"
},
"container_memory_usage_bytes"
:
{
"id"
,
"image"
,
"kubernetes_container_name"
,
"kubernetes_namespace"
,
"kubernetes_pod_name"
,
"name"
},
...
...
@@ -116,15 +118,15 @@ func (m *KubeletMetrics) Equal(o KubeletMetrics) bool {
func
NewKubeletMetrics
()
KubeletMetrics
{
result
:=
NewMetrics
()
for
metric
:=
range
Known
KubeletMetrics
{
for
metric
:=
range
Necessary
KubeletMetrics
{
result
[
metric
]
=
make
(
model
.
Samples
,
0
)
}
return
KubeletMetrics
(
result
)
}
func
parseKubeletMetrics
(
data
string
,
unknownMetrics
sets
.
String
)
(
KubeletMetrics
,
error
)
{
func
parseKubeletMetrics
(
data
string
)
(
KubeletMetrics
,
error
)
{
result
:=
NewKubeletMetrics
()
if
err
:=
parseMetrics
(
data
,
KnownKubeletMetrics
,
(
*
Metrics
)(
&
result
),
unknownMetrics
);
err
!=
nil
{
if
err
:=
parseMetrics
(
data
,
NecessaryKubeletMetrics
,
(
*
Metrics
)(
&
result
),
nil
);
err
!=
nil
{
return
KubeletMetrics
{},
err
}
return
result
,
nil
...
...
pkg/metrics/metrics_grabber.go
View file @
c7de5806
...
...
@@ -85,7 +85,7 @@ func NewMetricsGrabber(c *client.Client, kubelets bool, scheduler bool, controll
},
nil
}
func
(
g
*
MetricsGrabber
)
GrabFromKubelet
(
nodeName
string
,
unknownMetrics
sets
.
String
)
(
KubeletMetrics
,
error
)
{
func
(
g
*
MetricsGrabber
)
GrabFromKubelet
(
nodeName
string
)
(
KubeletMetrics
,
error
)
{
nodes
,
err
:=
g
.
client
.
Nodes
()
.
List
(
api
.
ListOptions
{
FieldSelector
:
fields
.
Set
{
client
.
ObjectNameField
:
nodeName
}
.
AsSelector
()})
if
err
!=
nil
{
return
KubeletMetrics
{},
err
...
...
@@ -94,10 +94,10 @@ func (g *MetricsGrabber) GrabFromKubelet(nodeName string, unknownMetrics sets.St
return
KubeletMetrics
{},
fmt
.
Errorf
(
"Error listing nodes with name %v, got %v"
,
nodeName
,
nodes
.
Items
)
}
kubeletPort
:=
nodes
.
Items
[
0
]
.
Status
.
DaemonEndpoints
.
KubeletEndpoint
.
Port
return
g
.
grabFromKubeletInternal
(
nodeName
,
kubeletPort
,
unknownMetrics
)
return
g
.
grabFromKubeletInternal
(
nodeName
,
kubeletPort
)
}
func
(
g
*
MetricsGrabber
)
grabFromKubeletInternal
(
nodeName
string
,
kubeletPort
int
,
unknownMetrics
sets
.
String
)
(
KubeletMetrics
,
error
)
{
func
(
g
*
MetricsGrabber
)
grabFromKubeletInternal
(
nodeName
string
,
kubeletPort
int
)
(
KubeletMetrics
,
error
)
{
if
kubeletPort
<=
0
||
kubeletPort
>
65535
{
return
KubeletMetrics
{},
fmt
.
Errorf
(
"Invalid Kubelet port %v. Skipping Kubelet's metrics gathering."
,
kubeletPort
)
}
...
...
@@ -105,7 +105,7 @@ func (g *MetricsGrabber) grabFromKubeletInternal(nodeName string, kubeletPort in
if
err
!=
nil
{
return
KubeletMetrics
{},
err
}
return
parseKubeletMetrics
(
output
,
unknownMetrics
)
return
parseKubeletMetrics
(
output
)
}
func
(
g
*
MetricsGrabber
)
GrabFromScheduler
(
unknownMetrics
sets
.
String
)
(
SchedulerMetrics
,
error
)
{
...
...
@@ -173,7 +173,7 @@ func (g *MetricsGrabber) Grab(unknownMetrics sets.String) (MetricsCollection, er
}
else
{
for
_
,
node
:=
range
nodes
.
Items
{
kubeletPort
:=
node
.
Status
.
DaemonEndpoints
.
KubeletEndpoint
.
Port
metrics
,
err
:=
g
.
grabFromKubeletInternal
(
node
.
Name
,
kubeletPort
,
nil
)
metrics
,
err
:=
g
.
grabFromKubeletInternal
(
node
.
Name
,
kubeletPort
)
if
err
!=
nil
{
errs
=
append
(
errs
,
err
)
}
...
...
test/e2e/metrics_grabber_test.go
View file @
c7de5806
...
...
@@ -47,7 +47,7 @@ func validateLabelSet(labelSet map[string][]string, data metrics.Metrics, invali
invalidLabel
=
false
}
}
if
invalidLabel
{
if
invalidLabel
&&
invalidLabels
!=
nil
{
if
_
,
ok
:=
invalidLabels
[
metric
];
!
ok
{
invalidLabels
[
metric
]
=
sets
.
NewString
()
}
...
...
@@ -59,13 +59,21 @@ func validateLabelSet(labelSet map[string][]string, data metrics.Metrics, invali
}
}
func
checkNecessaryMetrics
(
response
metrics
.
Metrics
,
necessaryMetrics
map
[
string
][]
string
)
{
missingLabels
:=
make
(
map
[
string
]
sets
.
String
)
validateLabelSet
(
metrics
.
CommonMetrics
,
response
,
nil
,
missingLabels
)
validateLabelSet
(
necessaryMetrics
,
response
,
nil
,
missingLabels
)
Expect
(
missingLabels
)
.
To
(
BeEmpty
())
}
func
checkMetrics
(
response
metrics
.
Metrics
,
assumedMetrics
map
[
string
][]
string
)
{
invalidLabels
:=
make
(
map
[
string
]
sets
.
String
)
unknown
Labels
:=
make
(
map
[
string
]
sets
.
String
)
validateLabelSet
(
metrics
.
CommonMetrics
,
response
,
invalidLabels
,
unknown
Labels
)
validateLabelSet
(
assumedMetrics
,
response
,
invalidLabels
,
unknown
Labels
)
missing
Labels
:=
make
(
map
[
string
]
sets
.
String
)
validateLabelSet
(
metrics
.
CommonMetrics
,
response
,
invalidLabels
,
missing
Labels
)
validateLabelSet
(
assumedMetrics
,
response
,
invalidLabels
,
missing
Labels
)
Expect
(
unknown
Labels
)
.
To
(
BeEmpty
())
Expect
(
missing
Labels
)
.
To
(
BeEmpty
())
Expect
(
invalidLabels
)
.
To
(
BeEmpty
())
}
...
...
@@ -97,12 +105,9 @@ var _ = Describe("MetricsGrabber", func() {
By
(
"Connecting proxying to Node through the API server"
)
nodes
:=
ListSchedulableNodesOrDie
(
c
)
Expect
(
nodes
.
Items
)
.
NotTo
(
BeEmpty
())
unknownMetrics
:=
sets
.
NewString
()
response
,
err
:=
grabber
.
GrabFromKubelet
(
nodes
.
Items
[
0
]
.
Name
,
unknownMetrics
)
response
,
err
:=
grabber
.
GrabFromKubelet
(
nodes
.
Items
[
0
]
.
Name
)
expectNoError
(
err
)
Expect
(
unknownMetrics
)
.
To
(
BeEmpty
())
checkMetrics
(
metrics
.
Metrics
(
response
),
metrics
.
KnownKubeletMetrics
)
checkNecessaryMetrics
(
metrics
.
Metrics
(
response
),
metrics
.
NecessaryKubeletMetrics
)
}
})
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment