Simplify system.DiskUsage() (#2630)
This commit is contained in:
committed by
Daniel Nelson
parent
70b3e763e7
commit
eb7ef5392e
@@ -23,6 +23,13 @@ type PS interface {
|
||||
NetConnections() ([]net.ConnectionStat, error)
|
||||
}
|
||||
|
||||
type PSDiskDeps interface {
|
||||
Partitions(all bool) ([]disk.PartitionStat, error)
|
||||
OSGetenv(key string) string
|
||||
OSStat(name string) (os.FileInfo, error)
|
||||
PSDiskUsage(path string) (*disk.UsageStat, error)
|
||||
}
|
||||
|
||||
func add(acc telegraf.Accumulator,
|
||||
name string, val float64, tags map[string]string) {
|
||||
if val >= 0 {
|
||||
@@ -30,7 +37,15 @@ func add(acc telegraf.Accumulator,
|
||||
}
|
||||
}
|
||||
|
||||
type systemPS struct{}
|
||||
func newSystemPS() *systemPS {
|
||||
return &systemPS{&systemPSDisk{}}
|
||||
}
|
||||
|
||||
type systemPS struct {
|
||||
PSDiskDeps
|
||||
}
|
||||
|
||||
type systemPSDisk struct{}
|
||||
|
||||
func (s *systemPS) CPUTimes(perCPU, totalCPU bool) ([]cpu.TimesStat, error) {
|
||||
var cpuTimes []cpu.TimesStat
|
||||
@@ -55,7 +70,7 @@ func (s *systemPS) DiskUsage(
|
||||
mountPointFilter []string,
|
||||
fstypeExclude []string,
|
||||
) ([]*disk.UsageStat, []*disk.PartitionStat, error) {
|
||||
parts, err := disk.Partitions(true)
|
||||
parts, err := s.Partitions(true)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
@@ -74,35 +89,34 @@ func (s *systemPS) DiskUsage(
|
||||
var partitions []*disk.PartitionStat
|
||||
|
||||
for i := range parts {
|
||||
|
||||
p := parts[i]
|
||||
|
||||
if len(mountPointFilter) > 0 {
|
||||
// If the mount point is not a member of the filter set,
|
||||
// don't gather info on it.
|
||||
_, ok := mountPointFilterSet[p.Mountpoint]
|
||||
if !ok {
|
||||
if _, ok := mountPointFilterSet[p.Mountpoint]; !ok {
|
||||
continue
|
||||
}
|
||||
}
|
||||
mountpoint := os.Getenv("HOST_MOUNT_PREFIX") + p.Mountpoint
|
||||
if _, err := os.Stat(mountpoint); err == nil {
|
||||
du, err := disk.Usage(mountpoint)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
du.Path = p.Mountpoint
|
||||
|
||||
// If the mount point is a member of the exclude set,
|
||||
// don't gather info on it.
|
||||
_, ok := fstypeExcludeSet[p.Fstype]
|
||||
if ok {
|
||||
continue
|
||||
}
|
||||
du.Fstype = p.Fstype
|
||||
usage = append(usage, du)
|
||||
partitions = append(partitions, &p)
|
||||
// If the mount point is a member of the exclude set,
|
||||
// don't gather info on it.
|
||||
if _, ok := fstypeExcludeSet[p.Fstype]; ok {
|
||||
continue
|
||||
}
|
||||
|
||||
mountpoint := s.OSGetenv("HOST_MOUNT_PREFIX") + p.Mountpoint
|
||||
if _, err := s.OSStat(mountpoint); err != nil {
|
||||
continue
|
||||
}
|
||||
du, err := s.PSDiskUsage(mountpoint)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
du.Path = p.Mountpoint
|
||||
du.Fstype = p.Fstype
|
||||
usage = append(usage, du)
|
||||
partitions = append(partitions, &p)
|
||||
}
|
||||
|
||||
return usage, partitions, nil
|
||||
@@ -136,3 +150,19 @@ func (s *systemPS) VMStat() (*mem.VirtualMemoryStat, error) {
|
||||
func (s *systemPS) SwapStat() (*mem.SwapMemoryStat, error) {
|
||||
return mem.SwapMemory()
|
||||
}
|
||||
|
||||
func (s *systemPSDisk) Partitions(all bool) ([]disk.PartitionStat, error) {
|
||||
return disk.Partitions(all)
|
||||
}
|
||||
|
||||
func (s *systemPSDisk) OSGetenv(key string) string {
|
||||
return os.Getenv(key)
|
||||
}
|
||||
|
||||
func (s *systemPSDisk) OSStat(name string) (os.FileInfo, error) {
|
||||
return os.Stat(name)
|
||||
}
|
||||
|
||||
func (s *systemPSDisk) PSDiskUsage(path string) (*disk.UsageStat, error) {
|
||||
return disk.Usage(path)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user