MCPcopy Create free account
hub / github.com/CovenantSQL/CovenantSQL / GetStats

Method GetStats

metric/filesystem_linux.go:34–77  ·  view source on GitHub ↗

GetStats returns filesystem stats.

()

Source from the content-addressed store, hash-verified

32
33// GetStats returns filesystem stats.
34func (c *filesystemCollector) GetStats() ([]filesystemStats, error) {
35 mps, err := mountPointDetails()
36 if err != nil {
37 return nil, err
38 }
39 stats := []filesystemStats{}
40 for _, labels := range mps {
41 if c.ignoredMountPointsPattern.MatchString(labels.mountPoint) {
42 log.Debugf("ignoring mount point: %s", labels.mountPoint)
43 continue
44 }
45 if c.ignoredFSTypesPattern.MatchString(labels.fsType) {
46 log.Debugf("ignoring fs type: %s", labels.fsType)
47 continue
48 }
49
50 buf := new(syscall.Statfs_t)
51 err := syscall.Statfs(labels.mountPoint, buf)
52 if err != nil {
53 stats = append(stats, filesystemStats{
54 labels: labels,
55 deviceError: 1,
56 })
57 log.Debugf("error on statfs() system call for %q: %s", labels.mountPoint, err)
58 continue
59 }
60
61 var ro float64
62 if (buf.Flags & readOnly) != 0 {
63 ro = 1
64 }
65
66 stats = append(stats, filesystemStats{
67 labels: labels,
68 size: float64(buf.Blocks) * float64(buf.Bsize),
69 free: float64(buf.Bfree) * float64(buf.Bsize),
70 avail: float64(buf.Bavail) * float64(buf.Bsize),
71 files: float64(buf.Files),
72 filesFree: float64(buf.Ffree),
73 ro: ro,
74 })
75 }
76 return stats, nil
77}
78
79func mountPointDetails() ([]filesystemLabels, error) {
80 file, err := os.Open(procFilePath("mounts"))

Callers

nothing calls this directly

Calls 2

DebugfFunction · 0.92
mountPointDetailsFunction · 0.85

Tested by

no test coverage detected