Skip to content
This repository was archived by the owner on Dec 1, 2018. It is now read-only.

Commit df92080

Browse files
authored
Merge pull request #1885 from kawych/more_new_metrics
Fix few bugs in Heapster exporting metrics for new Stackdriver resource model
2 parents 1c27bc2 + 7e78bf8 commit df92080

5 files changed

Lines changed: 42 additions & 54 deletions

File tree

metrics/core/labels.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,10 @@ var (
8989
Key: "schedulable",
9090
Description: "Node schedulable status.",
9191
}
92+
LabelVolumeName = LabelDescriptor{
93+
Key: "volume_name",
94+
Description: "The name of the volume.",
95+
}
9296
)
9397

9498
type LabelDescriptor struct {

metrics/core/metrics.go

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -685,28 +685,6 @@ var MetricFilesystemAvailable = Metric{
685685
},
686686
}
687687

688-
var MetricVolumeTotal = Metric{
689-
MetricDescriptor: MetricDescriptor{
690-
Name: "volume/total_bytes",
691-
Description: "Total bytes reserved for a volume",
692-
Type: MetricGauge,
693-
ValueType: ValueInt64,
694-
Units: UnitsBytes,
695-
Labels: metricLabels,
696-
},
697-
}
698-
699-
var MetricVolumeUsage = Metric{
700-
MetricDescriptor: MetricDescriptor{
701-
Name: "volume/used_bytes",
702-
Description: "Usage bytes reserved for a volume",
703-
Type: MetricGauge,
704-
ValueType: ValueInt64,
705-
Units: UnitsBytes,
706-
Labels: metricLabels,
707-
},
708-
}
709-
710688
var MetricFilesystemInodes = Metric{
711689
MetricDescriptor: MetricDescriptor{
712690
Name: "filesystem/inodes",

metrics/sinks/stackdriver/metadata.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ var (
3434
cpuRequestedCoresMD = &metricMetadata{
3535
MetricKind: "GAUGE",
3636
ValueType: "DOUBLE",
37-
Name: "kubernetes.io/container/cpu/requested_cores",
37+
Name: "kubernetes.io/container/cpu/request_cores",
3838
}
3939

4040
cpuLimitCoresMD = &metricMetadata{
@@ -52,7 +52,7 @@ var (
5252
memoryRequestedBytesMD = &metricMetadata{
5353
MetricKind: "GAUGE",
5454
ValueType: "INT64",
55-
Name: "kubernetes.io/container/memory/requested_bytes",
55+
Name: "kubernetes.io/container/memory/request_bytes",
5656
}
5757

5858
memoryLimitBytesMD = &metricMetadata{
@@ -75,22 +75,22 @@ var (
7575
Name: "kubernetes.io/pod/volume/used_bytes",
7676
}
7777

78-
volumeRequestedBytesMD = &metricMetadata{
78+
volumeTotalBytesMD = &metricMetadata{
7979
MetricKind: "GAUGE",
8080
ValueType: "INT64",
81-
Name: "kubernetes.io/pod/volume/requested_bytes",
81+
Name: "kubernetes.io/pod/volume/total_bytes",
8282
}
8383

84-
networkPodRxMD = &metricMetadata{
84+
networkPodReceivedBytesMD = &metricMetadata{
8585
MetricKind: "CUMULATIVE",
8686
ValueType: "INT64",
87-
Name: "kubernetes.io/pod/network/bytes_rx",
87+
Name: "kubernetes.io/pod/network/received_bytes_count",
8888
}
8989

90-
networkPodTxMD = &metricMetadata{
90+
networkPodSentBytesMD = &metricMetadata{
9191
MetricKind: "CUMULATIVE",
9292
ValueType: "INT64",
93-
Name: "kubernetes.io/pod/network/bytes_tx",
93+
Name: "kubernetes.io/pod/network/sent_bytes_count",
9494
}
9595

9696
// Node metrics
@@ -131,16 +131,16 @@ var (
131131
Name: "kubernetes.io/node/memory/allocatable_bytes",
132132
}
133133

134-
networkNodeRxMD = &metricMetadata{
134+
networkNodeReceivedBytesMD = &metricMetadata{
135135
MetricKind: "CUMULATIVE",
136136
ValueType: "INT64",
137-
Name: "kubernetes.io/node/network/bytes_rx",
137+
Name: "kubernetes.io/node/network/received_bytes_count",
138138
}
139139

140-
networkNodeTxMD = &metricMetadata{
140+
networkNodeSentBytesMD = &metricMetadata{
141141
MetricKind: "CUMULATIVE",
142142
ValueType: "INT64",
143-
Name: "kubernetes.io/node/network/bytes_tx",
143+
Name: "kubernetes.io/node/network/sent_bytes_count",
144144
}
145145

146146
cpuNodeDaemonCoreUsageTimeMD = &metricMetadata{

metrics/sinks/stackdriver/stackdriver.go

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
sd_api "google.golang.org/api/monitoring/v3"
3333
gce_util "k8s.io/heapster/common/gce"
3434
"k8s.io/heapster/metrics/core"
35+
"strings"
3536
)
3637

3738
const (
@@ -310,7 +311,6 @@ func (sink *StackdriverSink) sendOneRequest(req *sd_api.CreateTimeSeriesRequest)
310311
WithLabelValues(strconv.Itoa(responseCode)).
311312
Add(float64(len(req.TimeSeries)))
312313
requestLatency.Observe(time.Since(startTime).Seconds() / time.Millisecond.Seconds())
313-
314314
}
315315

316316
func CreateStackdriverSink(uri *url.URL) (core.DataSink, error) {
@@ -531,18 +531,18 @@ func (sink *StackdriverSink) TranslateLabeledMetric(timestamp time.Time, labels
531531
case core.MetricSetTypePod:
532532
podLabels := sink.getPodResourceLabels(labels)
533533
switch metric.Name {
534-
case core.MetricVolumeUsage.MetricDescriptor.Name:
534+
case core.MetricFilesystemUsage.MetricDescriptor.Name:
535535
point := sink.intPoint(timestamp, timestamp, metric.MetricValue.IntValue)
536536
ts := createTimeSeries("k8s_pod", podLabels, volumeUsedBytesMD, point)
537537
ts.Metric.Labels = map[string]string{
538-
"name": metric.Labels[core.LabelResourceID.Key],
538+
core.LabelVolumeName.Key: strings.TrimPrefix(metric.Labels[core.LabelResourceID.Key], "Volume:"),
539539
}
540540
return ts
541-
case core.MetricVolumeTotal.MetricDescriptor.Name:
541+
case core.MetricFilesystemLimit.MetricDescriptor.Name:
542542
point := sink.intPoint(timestamp, timestamp, metric.MetricValue.IntValue)
543-
ts := createTimeSeries("k8s_pod", podLabels, volumeRequestedBytesMD, point)
543+
ts := createTimeSeries("k8s_pod", podLabels, volumeTotalBytesMD, point)
544544
ts.Metric.Labels = map[string]string{
545-
"name": metric.Labels[core.LabelResourceID.Key],
545+
core.LabelVolumeName.Key: strings.TrimPrefix(metric.Labels[core.LabelResourceID.Key], "Volume:"),
546546
}
547547
return ts
548548
}
@@ -601,10 +601,10 @@ func (sink *StackdriverSink) TranslateMetric(timestamp time.Time, labels map[str
601601
switch name {
602602
case core.MetricNetworkRx.MetricDescriptor.Name:
603603
point := sink.intPoint(timestamp, createTime, value.IntValue)
604-
return createTimeSeries("k8s_pod", podLabels, networkPodRxMD, point)
604+
return createTimeSeries("k8s_pod", podLabels, networkPodReceivedBytesMD, point)
605605
case core.MetricNetworkTx.MetricDescriptor.Name:
606606
point := sink.intPoint(timestamp, createTime, value.IntValue)
607-
return createTimeSeries("k8s_pod", podLabels, networkPodTxMD, point)
607+
return createTimeSeries("k8s_pod", podLabels, networkPodSentBytesMD, point)
608608
}
609609
case core.MetricSetTypeNode:
610610
nodeLabels := sink.getNodeResourceLabels(labels)
@@ -640,10 +640,10 @@ func (sink *StackdriverSink) TranslateMetric(timestamp time.Time, labels map[str
640640
return ts
641641
case core.MetricNetworkRx.MetricDescriptor.Name:
642642
point := sink.intPoint(timestamp, createTime, value.IntValue)
643-
return createTimeSeries("k8s_node", nodeLabels, networkNodeRxMD, point)
643+
return createTimeSeries("k8s_node", nodeLabels, networkNodeReceivedBytesMD, point)
644644
case core.MetricNetworkTx.MetricDescriptor.Name:
645645
point := sink.intPoint(timestamp, createTime, value.IntValue)
646-
return createTimeSeries("k8s_node", nodeLabels, networkNodeTxMD, point)
646+
return createTimeSeries("k8s_node", nodeLabels, networkNodeSentBytesMD, point)
647647
}
648648
case core.MetricSetTypeSystemContainer:
649649
nodeLabels := sink.getNodeResourceLabels(labels)
@@ -652,19 +652,25 @@ func (sink *StackdriverSink) TranslateMetric(timestamp time.Time, labels map[str
652652
point := sink.intPoint(timestamp, timestamp, value.IntValue)
653653
ts := createTimeSeries("k8s_node", nodeLabels, memoryNodeDaemonUsedBytesMD, point)
654654
ts.Metric.Labels = map[string]string{
655+
"component": labels[core.LabelContainerName.Key],
655656
"memory_type": "evictable",
656657
}
657658
return ts
658659
case core.MetricMemoryWorkingSet.MetricDescriptor.Name:
659660
point := sink.intPoint(timestamp, timestamp, value.IntValue)
660661
ts := createTimeSeries("k8s_node", nodeLabels, memoryNodeDaemonUsedBytesMD, point)
661662
ts.Metric.Labels = map[string]string{
663+
"component": labels[core.LabelContainerName.Key],
662664
"memory_type": "non-evictable",
663665
}
664666
return ts
665667
case core.MetricCpuUsage.MetricDescriptor.Name:
666668
point := sink.doublePoint(timestamp, createTime, float64(value.IntValue)/float64(time.Second/time.Nanosecond))
667-
return createTimeSeries("k8s_node", nodeLabels, cpuNodeDaemonCoreUsageTimeMD, point)
669+
ts := createTimeSeries("k8s_node", nodeLabels, cpuNodeDaemonCoreUsageTimeMD, point)
670+
ts.Metric.Labels = map[string]string{
671+
"component": labels[core.LabelContainerName.Key],
672+
}
673+
return ts
668674
}
669675
}
670676
return nil

metrics/sinks/stackdriver/stackdriver_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ var (
3737
containerLabels = map[string]string{"type": "pod_container"}
3838
podLabels = map[string]string{"type": "pod"}
3939
nodeLabels = map[string]string{"type": "node"}
40-
nodeDaemonLabels = map[string]string{"type": "sys_container"}
40+
nodeDaemonLabels = map[string]string{"type": "sys_container", "container_name": "kubelet"}
4141
)
4242

4343
func generateIntMetric(value int64) core.MetricValue {
@@ -291,24 +291,24 @@ func TestTranslateMetricSet(t *testing.T) {
291291

292292
containerUptime := testTranslateMetric(as, generateIntMetric(1000), containerLabels, "uptime", "kubernetes.io/container/uptime")
293293
containerCpuUsage := testTranslateMetric(as, generateIntMetric(2000000000), containerLabels, "cpu/usage", "kubernetes.io/container/cpu/core_usage_time")
294-
containerCpuRequest := testTranslateMetric(as, generateIntMetric(3000), containerLabels, "cpu/request", "kubernetes.io/container/cpu/requested_cores")
294+
containerCpuRequest := testTranslateMetric(as, generateIntMetric(3000), containerLabels, "cpu/request", "kubernetes.io/container/cpu/request_cores")
295295
containerCpuLimit := testTranslateMetric(as, generateIntMetric(4000), containerLabels, "cpu/limit", "kubernetes.io/container/cpu/limit_cores")
296296
containerMemoryUsage := testTranslateMetric(as, generateIntMetric(5), containerLabels, "memory/bytes_used", "kubernetes.io/container/memory/used_bytes")
297-
containerMemoryRequest := testTranslateMetric(as, generateIntMetric(6), containerLabels, "memory/request", "kubernetes.io/container/memory/requested_bytes")
297+
containerMemoryRequest := testTranslateMetric(as, generateIntMetric(6), containerLabels, "memory/request", "kubernetes.io/container/memory/request_bytes")
298298
containerMemoryLimit := testTranslateMetric(as, generateIntMetric(7), containerLabels, "memory/limit", "kubernetes.io/container/memory/limit_bytes")
299299
containerRestartCount := testTranslateMetric(as, generateIntMetric(8), containerLabels, "restart_count", "kubernetes.io/container/restart_count")
300-
podNetworkBytesRx := testTranslateMetric(as, generateIntMetric(9), podLabels, "network/rx", "kubernetes.io/pod/network/bytes_rx")
301-
podNetworkBytesTx := testTranslateMetric(as, generateIntMetric(10), podLabels, "network/tx", "kubernetes.io/pod/network/bytes_tx")
302-
podVolumeTotal := testTranslateLabeledMetric(as, podLabels, generateLabeledIntMetric(11, map[string]string{}, "volume/total_bytes"), "kubernetes.io/pod/volume/requested_bytes")
303-
podVolumeUsed := testTranslateLabeledMetric(as, podLabels, generateLabeledIntMetric(12, map[string]string{}, "volume/used_bytes"), "kubernetes.io/pod/volume/used_bytes")
300+
podNetworkBytesRx := testTranslateMetric(as, generateIntMetric(9), podLabels, "network/rx", "kubernetes.io/pod/network/received_bytes_count")
301+
podNetworkBytesTx := testTranslateMetric(as, generateIntMetric(10), podLabels, "network/tx", "kubernetes.io/pod/network/sent_bytes_count")
302+
podVolumeTotal := testTranslateLabeledMetric(as, podLabels, generateLabeledIntMetric(11, map[string]string{}, "filesystem/limit"), "kubernetes.io/pod/volume/total_bytes")
303+
podVolumeUsed := testTranslateLabeledMetric(as, podLabels, generateLabeledIntMetric(12, map[string]string{}, "filesystem/usage"), "kubernetes.io/pod/volume/used_bytes")
304304
nodeCpuUsage := testTranslateMetric(as, generateIntMetric(13000000000), nodeLabels, "cpu/usage", "kubernetes.io/node/cpu/core_usage_time")
305305
nodeCpuTotal := testTranslateMetric(as, generateFloatMetric(14), nodeLabels, "cpu/node_capacity", "kubernetes.io/node/cpu/total_cores")
306306
nodeCpuAllocatable := testTranslateMetric(as, generateFloatMetric(15), nodeLabels, "cpu/node_allocatable", "kubernetes.io/node/cpu/allocatable_cores")
307307
nodeMemoryUsage := testTranslateMetric(as, generateIntMetric(16), nodeLabels, "memory/bytes_used", "kubernetes.io/node/memory/used_bytes")
308308
nodeMemoryTotal := testTranslateMetric(as, generateIntMetric(17), nodeLabels, "memory/node_capacity", "kubernetes.io/node/memory/total_bytes")
309309
nodeMemoryAllocatable := testTranslateMetric(as, generateIntMetric(18), nodeLabels, "memory/node_allocatable", "kubernetes.io/node/memory/allocatable_bytes")
310-
nodeNetworkBytesRx := testTranslateMetric(as, generateIntMetric(19), nodeLabels, "network/rx", "kubernetes.io/node/network/bytes_rx")
311-
nodeNetworkBytesTx := testTranslateMetric(as, generateIntMetric(20), nodeLabels, "network/tx", "kubernetes.io/node/network/bytes_tx")
310+
nodeNetworkBytesRx := testTranslateMetric(as, generateIntMetric(19), nodeLabels, "network/rx", "kubernetes.io/node/network/received_bytes_count")
311+
nodeNetworkBytesTx := testTranslateMetric(as, generateIntMetric(20), nodeLabels, "network/tx", "kubernetes.io/node/network/sent_bytes_count")
312312
nodeDaemonCpuUsage := testTranslateMetric(as, generateIntMetric(21000000000), nodeDaemonLabels, "cpu/usage", "kubernetes.io/node_daemon/cpu/core_usage_time")
313313
nodeDaemonMemoryUsage := testTranslateMetric(as, generateIntMetric(22), nodeDaemonLabels, "memory/bytes_used", "kubernetes.io/node_daemon/memory/used_bytes")
314314

0 commit comments

Comments
 (0)