| @@ 103-132 (lines=30) @@ | ||
| 100 | return rset |
|
| 101 | ||
| 102 | ||
| 103 | class Disk(plumd.plugins.Reader): |
|
| 104 | """ |
|
| 105 | Class to measure disk utilization using the psutil module. |
|
| 106 | """ |
|
| 107 | defaults = { |
|
| 108 | 'poll.interval': 300, |
|
| 109 | 'devices': None # all |
|
| 110 | } |
|
| 111 | ||
| 112 | def poll(self): |
|
| 113 | """Poll for disk space utilization metrics. |
|
| 114 | ||
| 115 | :rtype: ResultSet |
|
| 116 | """ |
|
| 117 | rset = plumd.ResultSet() |
|
| 118 | for disk in psutil.disk_partitions(): |
|
| 119 | metrics = [] |
|
| 120 | dev = disk.device.split("/")[-1] |
|
| 121 | dev = dev.replace(":", "").replace("\\", "") |
|
| 122 | try: |
|
| 123 | u = psutil.disk_usage(disk.mountpoint) |
|
| 124 | except OSError: |
|
| 125 | continue |
|
| 126 | for f in u._fields: |
|
| 127 | val = getattr(u, f) |
|
| 128 | metrics.append(plumd.Float(f, val)) |
|
| 129 | robj = plumd.Result("disk", metrics) |
|
| 130 | robj.meta.add(plumd.String("dev", dev)) |
|
| 131 | rset.add(robj) |
|
| 132 | return rset |
|
| 133 | ||
| 134 | ||
| 135 | class DiskIo(plumd.plugins.Reader): |
|
| @@ 135-158 (lines=24) @@ | ||
| 132 | return rset |
|
| 133 | ||
| 134 | ||
| 135 | class DiskIo(plumd.plugins.Reader): |
|
| 136 | """Class to measure disk io.""" |
|
| 137 | defaults = { |
|
| 138 | 'poll.interval': 10, |
|
| 139 | 'devices': None # all |
|
| 140 | } |
|
| 141 | ||
| 142 | def poll(self): |
|
| 143 | """Poll for diskio metrics. |
|
| 144 | ||
| 145 | :rtype: ResultSet |
|
| 146 | """ |
|
| 147 | rset = plumd.ResultSet() |
|
| 148 | diskio = psutil.disk_io_counters(perdisk=True) |
|
| 149 | for dev in diskio.keys(): |
|
| 150 | metrics = [] |
|
| 151 | io = diskio[dev] |
|
| 152 | for f in io._fields: |
|
| 153 | val = getattr(io, f) |
|
| 154 | metrics.append(plumd.Float(f, val)) |
|
| 155 | robj = plumd.Result("diskio", metrics) |
|
| 156 | robj.meta.add(plumd.String("dev", dev)) |
|
| 157 | rset.add(robj) |
|
| 158 | return rset |
|
| 159 | ||
| @@ 77-100 (lines=24) @@ | ||
| 74 | return plumd.ResultSet([plumd.Result("swap", metrics)]) |
|
| 75 | ||
| 76 | ||
| 77 | class Net(plumd.plugins.Reader): |
|
| 78 | """Class to measure network interface metrics using the psutil module.""" |
|
| 79 | defaults = { |
|
| 80 | 'poll.interval': 10, |
|
| 81 | 'nics': None # all |
|
| 82 | } |
|
| 83 | ||
| 84 | def poll(self): |
|
| 85 | """Poll for net per nic bandwidth metrics. |
|
| 86 | ||
| 87 | :rtype: ResultSet |
|
| 88 | """ |
|
| 89 | nicios = psutil.net_io_counters(pernic=True) |
|
| 90 | rset = plumd.ResultSet() |
|
| 91 | for nic in nicios.keys(): |
|
| 92 | metrics = [] |
|
| 93 | io = nicios[nic] |
|
| 94 | for f in io._fields: |
|
| 95 | val = getattr(io, f) |
|
| 96 | metrics.append(plumd.Float(f, val)) |
|
| 97 | robj = plumd.Result("net", metrics) |
|
| 98 | robj.meta.add(plumd.String("nic", nic.replace(" ", "_"))) |
|
| 99 | rset.add(robj) |
|
| 100 | return rset |
|
| 101 | ||
| 102 | ||
| 103 | class Disk(plumd.plugins.Reader): |
|