Skip to content

Commit cb5f88b

Browse files
authored
Merge pull request #1845 from lantingchiang/lease
Allow Lease metrics to be exported across all namespaces
2 parents 12402a5 + 29e043e commit cb5f88b

File tree

3 files changed

+46
-12
lines changed

3 files changed

+46
-12
lines changed

docs/lease-metrics.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Lease Metrics
22

3-
| Metric name| Metric type | Labels/tags | Status |
4-
| ---------- | ----------- | ----------- | ----------- |
5-
| kube_lease_owner | Gauge | `lease`=&lt;lease-name&gt; <br> `owner_kind`=&lt;onwer kind&gt; <br> `owner_name`=&lt;owner name&gt; | EXPERIMENTAL |
6-
| kube_lease_renew_time | Gauge | `lease`=&lt;lease-name&gt; | EXPERIMENTAL |
3+
| Metric name| Metric type | Labels/tags | Status |
4+
| ---------- | ----------- |-------------------------------------------------------------------------------------------------------------------------------------------| ----------- |
5+
| kube_lease_owner | Gauge | `lease`=&lt;lease-name&gt; <br> `owner_kind`=&lt;onwer kind&gt; <br> `owner_name`=&lt;owner name&gt; <br> `namespace` = &lt;namespace&gt; <br> `lease_holder`=&lt;lease holder name&gt;| EXPERIMENTAL |
6+
| kube_lease_renew_time | Gauge | `lease`=&lt;lease-name&gt; | EXPERIMENTAL |

internal/store/lease.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,20 @@ var (
4040
metric.Gauge,
4141
"",
4242
wrapLeaseFunc(func(l *coordinationv1.Lease) *metric.Family {
43-
labelKeys := []string{"owner_kind", "owner_name"}
43+
labelKeys := []string{"owner_kind", "owner_name", "namespace", "lease_holder"}
44+
45+
var holder string
46+
if l.Spec.HolderIdentity != nil {
47+
holder = *l.Spec.HolderIdentity
48+
}
4449

4550
owners := l.GetOwnerReferences()
4651
if len(owners) == 0 {
4752
return &metric.Family{
4853
Metrics: []*metric.Metric{
4954
{
5055
LabelKeys: labelKeys,
51-
LabelValues: []string{"<none>", "<none>"},
56+
LabelValues: []string{"<none>", "<none>", l.Namespace, holder},
5257
Value: 1,
5358
},
5459
},
@@ -59,7 +64,7 @@ var (
5964
for i, owner := range owners {
6065
ms[i] = &metric.Metric{
6166
LabelKeys: labelKeys,
62-
LabelValues: []string{owner.Kind, owner.Name},
67+
LabelValues: []string{owner.Kind, owner.Name, l.Namespace, holder},
6368
Value: 1,
6469
}
6570
}
@@ -107,10 +112,10 @@ func wrapLeaseFunc(f func(*coordinationv1.Lease) *metric.Family) func(interface{
107112
func createLeaseListWatch(kubeClient clientset.Interface, _ string, _ string) cache.ListerWatcher {
108113
return &cache.ListWatch{
109114
ListFunc: func(opts metav1.ListOptions) (runtime.Object, error) {
110-
return kubeClient.CoordinationV1().Leases("kube-node-lease").List(context.TODO(), opts)
115+
return kubeClient.CoordinationV1().Leases("").List(context.TODO(), opts)
111116
},
112117
WatchFunc: func(opts metav1.ListOptions) (watch.Interface, error) {
113-
return kubeClient.CoordinationV1().Leases("kube-node-lease").Watch(context.TODO(), opts)
118+
return kubeClient.CoordinationV1().Leases("").Watch(context.TODO(), opts)
114119
},
115120
}
116121
}

internal/store/lease_test.go

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,48 @@ func TestLeaseStore(t *testing.T) {
3333
# HELP kube_lease_renew_time Kube lease renew time.
3434
# TYPE kube_lease_renew_time gauge
3535
`
36-
36+
leaseOwner := "kube-master"
3737
var (
3838
cases = []generateMetricsTestCase{
3939
{
4040
Obj: &coordinationv1.Lease{
4141
ObjectMeta: metav1.ObjectMeta{
4242
Generation: 2,
4343
Name: "kube-master",
44+
Namespace: "default",
45+
CreationTimestamp: metav1.Time{Time: time.Unix(1500000000, 0)},
46+
OwnerReferences: []metav1.OwnerReference{
47+
{
48+
Kind: "Node",
49+
Name: leaseOwner,
50+
},
51+
},
52+
},
53+
Spec: coordinationv1.LeaseSpec{
54+
RenewTime: &metav1.MicroTime{Time: time.Unix(1500000000, 0)},
55+
HolderIdentity: &leaseOwner,
56+
},
57+
},
58+
Want: metadata + `
59+
kube_lease_owner{lease="kube-master",owner_kind="Node",owner_name="kube-master",namespace="default",lease_holder="kube-master"} 1
60+
kube_lease_renew_time{lease="kube-master"} 1.5e+09
61+
`,
62+
MetricNames: []string{
63+
"kube_lease_owner",
64+
"kube_lease_renew_time",
65+
},
66+
},
67+
{
68+
Obj: &coordinationv1.Lease{
69+
ObjectMeta: metav1.ObjectMeta{
70+
Generation: 2,
71+
Name: "kube-master",
72+
Namespace: "default",
4473
CreationTimestamp: metav1.Time{Time: time.Unix(1500000000, 0)},
4574
OwnerReferences: []metav1.OwnerReference{
4675
{
4776
Kind: "Node",
48-
Name: "kube-master",
77+
Name: leaseOwner,
4978
},
5079
},
5180
},
@@ -54,7 +83,7 @@ func TestLeaseStore(t *testing.T) {
5483
},
5584
},
5685
Want: metadata + `
57-
kube_lease_owner{lease="kube-master",owner_kind="Node",owner_name="kube-master"} 1
86+
kube_lease_owner{lease="kube-master",owner_kind="Node",owner_name="kube-master",namespace="default",lease_holder=""} 1
5887
kube_lease_renew_time{lease="kube-master"} 1.5e+09
5988
`,
6089
MetricNames: []string{

0 commit comments

Comments
 (0)