Browse Source

Added swap and disk space data sources

Henry Whitaker 6 years ago
parent
commit
c3d5577ee7

+ 11 - 1
api/functions/homepage-connect-functions.php

@@ -2754,7 +2754,7 @@ function getNetdata()
 
 		$url = qualifyURL($GLOBALS['netdataURL']);
 
-		for($i = 1; $i < 7; $i++) {
+		for($i = 1; $i < 8; $i++) {
 			if($GLOBALS['netdata'.($i).'Enabled']) {
 				switch($GLOBALS['netdata'.$i.'Data']) {
 					case 'disk-read':
@@ -2779,6 +2779,15 @@ function getNetdata()
 					case 'ram-used':
 						$data = ram($url);
 						break;
+					case 'swap-used':
+						$data = swap($url);
+						break;
+					case 'disk-avail':
+						$data = diskSpace('avail', $url);
+						break;
+					case 'disk-used':
+						$data = diskSpace('used', $url);
+						break;
 					case 'ipmi-temp-c':
 						$data = ipmiTemp($url, 'c');
 						break;
@@ -2790,6 +2799,7 @@ function getNetdata()
 							'title' => 'DNC',
 							'value' => 0,
 							'units' => 'N/A',
+							'max' => 100,
 						];
 						break;
 				}

+ 41 - 0
api/functions/netdata-functions.php

@@ -21,6 +21,27 @@ function disk($dimension, $url)
     return $data;
 }
 
+function diskSpace($dimension, $url)
+{
+    $data = [];
+    // Get Data
+    $dataUrl = $url . '/api/v1/data?chart=disk_space._&format=json&points=509&group=average&gtime=0&options=ms|jsonwrap|nonzero&after=-540&dimension='.$dimension;
+    try {
+        $response = Requests::get($dataUrl);
+        if ($response->success) {
+            $json = json_decode($response->body, true);
+            $data['value'] = $json['result']['data'][0][1];
+            $data['percent'] = $data['value'];
+            $data['units'] = '%';
+            $data['max'] = 100;
+        }
+    } catch (Requests_Exception $e) {
+        writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
+    };
+
+    return $data;
+}
+
 function net($dimension, $url)
 {
     $data = [];
@@ -83,6 +104,26 @@ function ram($url)
     return $data;
 }
 
+function swap($url)
+{
+    $data = [];
+    $dataUrl = $url . '/api/v1/data?chart=system.swap&format=array&points=540&group=average&gtime=0&options=absolute|percentage|jsonwrap|nonzero&after=-540&dimensions=used';
+    try {
+        $response = Requests::get($dataUrl);
+        if ($response->success) {
+            $json = json_decode($response->body, true);
+            $data['value'] = $json['result'][0];
+            $data['percent'] = $data['value'];
+            $data['max'] = 100;
+            $data['units'] = '%';
+        }
+    } catch (Requests_Exception $e) {
+        writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
+    };
+
+    return $data;
+}
+
 function ipmiTemp($url, $unit)
 {
     $data = [];

+ 12 - 0
api/functions/option-functions.php

@@ -175,6 +175,18 @@ function netdataOptions()
 			'name' => 'Used RAM',
 			'value' => 'ram-used',
 		],
+		[
+			'name' => 'Used Swap',
+			'value' => 'swap-used',
+		],
+		[
+			'name' => 'Disk space used',
+			'value' => 'disk-used',
+		],
+		[
+			'name' => 'Disk space available',
+			'value' => 'disk-avail',
+		],
 		[
 			'name' => 'IPMI Temperature C',
 			'value' => 'ipmi-temp-c'