netdata-functions.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. function disk($dimension, $url)
  3. {
  4. $data = [];
  5. // Get Data
  6. $dataUrl = $url . '/api/v1/data?chart=system.io&dimensions='.$dimension.'&format=array&points=540&group=average&gtime=0&options=absolute|jsonwrap|nonzero&after=-540';
  7. try {
  8. $response = Requests::get($dataUrl);
  9. if ($response->success) {
  10. $json = json_decode($response->body, true);
  11. $data['value'] = $json['latest_values'][0] / 1000;
  12. $data['percent'] = ($json['latest_values'][0] / $json['max']) * 100;
  13. $data['units'] = 'MiB/s';
  14. $data['max'] = $json['max'];
  15. }
  16. } catch (Requests_Exception $e) {
  17. writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
  18. };
  19. return $data;
  20. }
  21. function diskSpace($dimension, $url)
  22. {
  23. $data = [];
  24. // Get Data
  25. $dataUrl = $url . '/api/v1/data?chart=disk_space._&format=json&points=509&group=average&gtime=0&options=ms|jsonwrap|nonzero&after=-540&dimension='.$dimension;
  26. try {
  27. $response = Requests::get($dataUrl);
  28. if ($response->success) {
  29. $json = json_decode($response->body, true);
  30. $data['value'] = $json['result']['data'][0][1];
  31. $data['percent'] = $data['value'];
  32. $data['units'] = '%';
  33. $data['max'] = 100;
  34. }
  35. } catch (Requests_Exception $e) {
  36. writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
  37. };
  38. return $data;
  39. }
  40. function net($dimension, $url)
  41. {
  42. $data = [];
  43. // Get Data
  44. $dataUrl = $url . '/api/v1/data?chart=system.net&dimensions='.$dimension.'&format=array&points=540&group=average&gtime=0&options=absolute|jsonwrap|nonzero&after=-540';
  45. try {
  46. $response = Requests::get($dataUrl);
  47. if ($response->success) {
  48. $json = json_decode($response->body, true);
  49. $data['value'] = $json['latest_values'][0] / 1000;
  50. $data['percent'] = ($json['latest_values'][0] / $json['max']) * 100;
  51. $data['units'] = 'Mbit/s';
  52. $data['max'] = $json['max'];
  53. }
  54. } catch (Requests_Exception $e) {
  55. writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
  56. };
  57. return $data;
  58. }
  59. function cpu($url)
  60. {
  61. $data = [];
  62. $dataUrl = $url . '/api/v1/data?chart=system.cpu&format=array';
  63. try {
  64. $response = Requests::get($dataUrl);
  65. if ($response->success) {
  66. $json = json_decode($response->body, true);
  67. $data['value'] = $json[0];
  68. $data['percent'] = $data['value'];
  69. $data['max'] = 100;
  70. $data['units'] = '%';
  71. }
  72. } catch (Requests_Exception $e) {
  73. writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
  74. };
  75. return $data;
  76. }
  77. function ram($url)
  78. {
  79. $data = [];
  80. $dataUrl = $url . '/api/v1/data?chart=system.ram&format=array&points=540&group=average&gtime=0&options=absolute|percentage|jsonwrap|nonzero&after=-540&dimensions=used|buffers|active|wired';
  81. try {
  82. $response = Requests::get($dataUrl);
  83. if ($response->success) {
  84. $json = json_decode($response->body, true);
  85. $data['value'] = $json['result'][0];
  86. $data['percent'] = $data['value'];
  87. $data['max'] = 100;
  88. $data['units'] = '%';
  89. }
  90. } catch (Requests_Exception $e) {
  91. writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
  92. };
  93. return $data;
  94. }
  95. function swap($url)
  96. {
  97. $data = [];
  98. $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';
  99. try {
  100. $response = Requests::get($dataUrl);
  101. if ($response->success) {
  102. $json = json_decode($response->body, true);
  103. $data['value'] = $json['result'][0];
  104. $data['percent'] = $data['value'];
  105. $data['max'] = 100;
  106. $data['units'] = '%';
  107. }
  108. } catch (Requests_Exception $e) {
  109. writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
  110. };
  111. return $data;
  112. }
  113. function ipmiTemp($url, $unit)
  114. {
  115. $data = [];
  116. $dataUrl = $url . '/api/v1/data?chart=ipmi.temperatures_c&format=array&points=540&group=average&gtime=0&options=absolute|jsonwrap|nonzero&after=-540';
  117. try {
  118. $response = Requests::get($dataUrl);
  119. if ($response->success) {
  120. $json = json_decode($response->body, true);
  121. $data['value'] = $json['result'][0];
  122. if($unit == 'c') {
  123. $data['percent'] = ($data['value'] / 50) * 100;
  124. $data['max'] = 50;
  125. } else if($unit == 'f') {
  126. $data['value'] = ($data['value'] * 9/5) + 32;
  127. $data['percent'] = ($data['value'] / 122) * 100;
  128. $data['max'] = 122;
  129. }
  130. $data['units'] = '°'.strtoupper($unit);
  131. }
  132. } catch (Requests_Exception $e) {
  133. writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
  134. };
  135. return $data;
  136. }