示例#1
0
文件: diskio.go 项目: ChongFeng/beats
// Fetch fetches disk IO metrics from the OS.
func (m *MetricSet) Fetch() ([]common.MapStr, error) {
	stats, err := disk.IOCounters()
	if err != nil {
		return nil, errors.Wrap(err, "disk io counters")
	}

	events := make([]common.MapStr, 0, len(stats))
	for _, counters := range stats {
		event := common.MapStr{
			"name": counters.Name,
			"read": common.MapStr{
				"count": counters.ReadCount,
				"time":  counters.ReadTime,
				"bytes": counters.ReadBytes,
			},
			"write": common.MapStr{
				"count": counters.WriteCount,
				"time":  counters.WriteTime,
				"bytes": counters.WriteBytes,
			},
			"io": common.MapStr{
				"time": counters.IoTime,
			},
		}
		events = append(events, event)

		if counters.SerialNumber != "" {
			event["serial_number"] = counters.SerialNumber
		}
	}

	return events, nil
}
示例#2
0
文件: ps.go 项目: miketonks/telegraf
func (s *systemPS) DiskIO() (map[string]disk.IOCountersStat, error) {
	m, err := disk.IOCounters()
	if err == internal.NotImplementedError {
		return nil, nil
	}

	return m, err
}
示例#3
0
// Returns a map of the current IO byte count for all devices
func currentIOStatus(devices ...string) (map[string]uint64, error) {
	send := make(map[string]uint64, len(devices))

	allUsage, err := psDisk.IOCounters()
	if err != nil {
		return nil, err
	}

	for _, d := range devices {
		usage := allUsage[d]
		send[d] = usage.WriteBytes + usage.ReadBytes
	}

	return send, nil
}
示例#4
0
func diskIOMetrics() []*types.TimeSeriesData {
	cnt, err := disk.IOCounters()
	if err != nil {
		return nil
	}
	metrics := []*types.TimeSeriesData{}
	ts := time.Now().Unix()
	for _, v := range cnt {
		metrics = append(metrics,
			&types.TimeSeriesData{
				Metric:    "disk.readbytes",
				Value:     float64(v.ReadBytes),
				Cycle:     Cycle,
				Timestamp: ts,
				DataType:  "COUNTER",
				Tags:      map[string]string{"name": v.Name},
			},
			&types.TimeSeriesData{
				Metric:    "disk.readcount",
				Value:     float64(v.ReadCount),
				Cycle:     Cycle,
				Timestamp: ts,
				DataType:  "COUNTER",
				Tags:      map[string]string{"name": v.Name},
			},
			&types.TimeSeriesData{
				Metric:    "disk.readtime",
				Value:     float64(v.ReadTime),
				Cycle:     Cycle,
				Timestamp: ts,
				DataType:  "COUNTER",
				Tags:      map[string]string{"name": v.Name},
			},
			&types.TimeSeriesData{
				Metric:    "disk.writebytes",
				Value:     float64(v.WriteBytes),
				Cycle:     Cycle,
				Timestamp: ts,
				DataType:  "COUNTER",
				Tags:      map[string]string{"name": v.Name},
			},
			&types.TimeSeriesData{
				Metric:    "disk.writecount",
				Value:     float64(v.WriteCount),
				Cycle:     Cycle,
				Timestamp: ts,
				DataType:  "COUNTER",
				Tags:      map[string]string{"name": v.Name},
			},
			&types.TimeSeriesData{
				Metric:    "disk.writetime",
				Value:     float64(v.WriteTime),
				Cycle:     Cycle,
				Timestamp: ts,
				DataType:  "COUNTER",
				Tags:      map[string]string{"name": v.Name},
			},
		)
	}
	return metrics
}