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

Commit b3bf2f1

Browse files
add disk/bytes_used & disk/bytes_total metrics
1 parent 84da166 commit b3bf2f1

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

metrics/sinks/stackdriver/stackdriver.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,18 @@ var (
9898
ValueType: "INT64",
9999
Name: "container.googleapis.com/container/memory/page_fault_count",
100100
}
101+
102+
diskBytesUsedMD = &metricMetadata{
103+
MetricKind: "GAUGE",
104+
ValueType: "INT64",
105+
Name: "container.googleapis.com/container/disk/bytes_used",
106+
}
107+
108+
diskBytesTotalMD = &metricMetadata{
109+
MetricKind: "GAUGE",
110+
ValueType: "INT64",
111+
Name: "container.googleapis.com/container/disk/bytes_total",
112+
}
101113
)
102114

103115
func (sink *stackdriverSink) Name() string {
@@ -134,6 +146,18 @@ func (sink *stackdriverSink) ExportData(dataBatch *core.DataBatch) {
134146
req = getReq()
135147
}
136148
}
149+
150+
for _, metric := range metricSet.LabeledMetrics {
151+
point := sink.translateLabeledMetric(dataBatch.Timestamp, metricSet.Labels, metric, metricSet.CreateTime)
152+
153+
if point != nil {
154+
req.TimeSeries = append(req.TimeSeries, point)
155+
}
156+
if len(req.TimeSeries) >= maxTimeseriesPerRequest {
157+
sink.sendRequest(req)
158+
req = getReq()
159+
}
160+
}
137161
}
138162

139163
if len(req.TimeSeries) > 0 {
@@ -208,6 +232,28 @@ func (sink *stackdriverSink) preprocessMemoryMetrics(metricSet *core.MetricSet)
208232
metricSet.MetricValues["memory/minor_page_faults"] = minorMemoryFaults
209233
}
210234

235+
func (sink *stackdriverSink) translateLabeledMetric(timestamp time.Time, labels map[string]string, metric core.LabeledMetric, createTime time.Time) *sd_api.TimeSeries {
236+
resourceLabels := sink.getResourceLabels(labels)
237+
switch metric.Name {
238+
case core.MetricFilesystemUsage.MetricDescriptor.Name:
239+
point := sink.intPoint(timestamp, timestamp, metric.MetricValue.IntValue)
240+
ts := createTimeSeries(resourceLabels, diskBytesUsedMD, point)
241+
ts.Metric.Labels = map[string]string{
242+
"device_name": metric.Labels[core.LabelResourceID.Key],
243+
}
244+
return ts
245+
case core.MetricFilesystemLimit.MetricDescriptor.Name:
246+
point := sink.intPoint(timestamp, timestamp, metric.MetricValue.IntValue)
247+
ts := createTimeSeries(resourceLabels, diskBytesTotalMD, point)
248+
ts.Metric.Labels = map[string]string{
249+
"device_name": metric.Labels[core.LabelResourceID.Key],
250+
}
251+
return ts
252+
default:
253+
return nil
254+
}
255+
}
256+
211257
func (sink *stackdriverSink) translateMetric(timestamp time.Time, labels map[string]string, name string, value core.MetricValue, createTime time.Time) *sd_api.TimeSeries {
212258
resourceLabels := sink.getResourceLabels(labels)
213259
switch name {

0 commit comments

Comments
 (0)