disk exclusion, hddtemp data checking
paulfantom committed
Jul 19, 2016 at 14:13 UTC
2b467d8909c23022556555709c94a1f33aa6b12e
1 file changed
+19
-1
python.d/hddtemp.chart.py
+19
-1
@@ -2,6 +2,7 @@
2
# Description: hddtemp netdata python.d module
3
# Author: Pawel Krupa (paulfantom)
4
5
+import os
6
from base import SocketService
7
8
# default module values (can be overridden per job in `config`)
@@ -38,12 +39,23 @@ class Service(SocketService):
39
self.port = 7634
40
self.order = ORDER
41
self.definitions = CHARTS
42
+ self.disk_count = 1
43
+ self.exclude = []
44
+
45
+ def _get_disk_count(self):
46
+ all_disks = [f for f in os.listdir("/dev") if len(f) == 3 and f.startswith("sd")]
47
+ for disk in self.exclude:
48
+ try:
49
+ all_disks.remove(disk)
50
+ except:
51
+ self.debug("Disk not found")
52
+ return len(all_disks)
53
54
def _check_raw_data(self, data):
55
if not data.endswith('|'):
56
return False
57
46
- if data.count('|') % 5 == 0:
58
+ if data.count('|') % (5 * self.disk_count) == 0:
59
return True
60
61
return False
@@ -53,6 +65,7 @@ class Service(SocketService):
65
Get data from TCP/IP socket
66
:return: dict
67
"""
68
+ self.disk_count = self._get_disk_count()
69
try:
70
raw = self._get_raw_data().split("|")[:-1]
71
except AttributeError:
@@ -78,6 +91,11 @@ class Service(SocketService):
91
:return: boolean
92
"""
93
self._parse_config()
94
+ try:
95
+ self.exclude = list(self.configuration['exlude'])
96
+ except (KeyError, TypeError) as e:
97
+ self.info("No excluded disks")
98
+ self.debug(str(e))
99
data = self._get_data()
100
if data is None:
101
return False