in kubelet-to-gcm/monitor/kubelet/translate.go [477:516]
func translateFS(volume string, fs *stats.FsStats, tsFactory *timeSeriesFactory, startTime time.Time, diskUsedMD *metricMetadata, diskTotalMD *metricMetadata) ([]*v3.TimeSeries, error) {
var timeSeries []*v3.TimeSeries
if fs == nil {
return nil, fmt.Errorf("File-system information missing.")
}
// For some reason the Kubelet doesn't return when this sample is from,
// so we'll use now.
now := time.Now()
resourceLabels := map[string]string{"device_name": volume}
if tsFactory.monitoredResource.Type != "gke_container" {
resourceLabels = noLabels
}
if diskTotalMD != nil {
if fs.CapacityBytes == nil {
return nil, fmt.Errorf("CapacityBytes is missing from FsStats %v", fs)
}
// Total disk available.
diskTotalPoint := tsFactory.newPoint(&v3.TypedValue{
Int64Value: monitor.Int64Ptr(int64(*fs.CapacityBytes)),
ForceSendFields: []string{"Int64Value"},
}, startTime, now, diskTotalMD.MetricKind)
timeSeries = append(timeSeries, tsFactory.newTimeSeries(resourceLabels, diskTotalMD, diskTotalPoint))
}
if diskUsedMD != nil {
if fs.UsedBytes == nil {
return nil, fmt.Errorf("UsedBytes is missing from FsStats %v", fs)
}
// Total disk used.
diskUsedPoint := tsFactory.newPoint(&v3.TypedValue{
Int64Value: monitor.Int64Ptr(int64(*fs.UsedBytes)),
ForceSendFields: []string{"Int64Value"},
}, startTime, now, diskUsedMD.MetricKind)
timeSeries = append(timeSeries, tsFactory.newTimeSeries(resourceLabels, diskUsedMD, diskUsedPoint))
}
return timeSeries, nil
}