|
98 | 98 | ValueType: "INT64", |
99 | 99 | Name: "container.googleapis.com/container/memory/page_fault_count", |
100 | 100 | } |
| 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 | + } |
101 | 113 | ) |
102 | 114 |
|
103 | 115 | func (sink *stackdriverSink) Name() string { |
@@ -134,6 +146,18 @@ func (sink *stackdriverSink) ExportData(dataBatch *core.DataBatch) { |
134 | 146 | req = getReq() |
135 | 147 | } |
136 | 148 | } |
| 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 | + } |
137 | 161 | } |
138 | 162 |
|
139 | 163 | if len(req.TimeSeries) > 0 { |
@@ -208,6 +232,28 @@ func (sink *stackdriverSink) preprocessMemoryMetrics(metricSet *core.MetricSet) |
208 | 232 | metricSet.MetricValues["memory/minor_page_faults"] = minorMemoryFaults |
209 | 233 | } |
210 | 234 |
|
| 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 | + |
211 | 257 | func (sink *stackdriverSink) translateMetric(timestamp time.Time, labels map[string]string, name string, value core.MetricValue, createTime time.Time) *sd_api.TimeSeries { |
212 | 258 | resourceLabels := sink.getResourceLabels(labels) |
213 | 259 | switch name { |
|
0 commit comments