netdata-functions.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. }
  15. } catch (Requests_Exception $e) {
  16. writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
  17. };
  18. return $data;
  19. }
  20. function net($dimension, $url)
  21. {
  22. $data = [];
  23. // Get Data
  24. $dataUrl = $url . '/api/v1/data?chart=system.net&dimensions='.$dimension.'&format=array&points=540&group=average&gtime=0&options=absolute|jsonwrap|nonzero&after=-540';
  25. try {
  26. $response = Requests::get($dataUrl);
  27. if ($response->success) {
  28. $json = json_decode($response->body, true);
  29. $data['value'] = $json['latest_values'][0] / 1000;
  30. $data['percent'] = ($json['latest_values'][0] / $json['max']) * 100;
  31. $data['units'] = 'megabits/s';
  32. }
  33. } catch (Requests_Exception $e) {
  34. writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
  35. };
  36. return $data;
  37. }
  38. function cpu($url)
  39. {
  40. $data = [];
  41. $dataUrl = $url . '/api/v1/data?chart=system.cpu&format=array';
  42. try {
  43. $response = Requests::get($dataUrl);
  44. if ($response->success) {
  45. $json = json_decode($response->body, true);
  46. $data['value'] = $json[0];
  47. $data['percent'] = $data['value'];
  48. $data['max'] = 100;
  49. $data['units'] = '%';
  50. }
  51. } catch (Requests_Exception $e) {
  52. writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
  53. };
  54. return $data;
  55. }
  56. function ram($url)
  57. {
  58. $data = [];
  59. $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';
  60. try {
  61. $response = Requests::get($dataUrl);
  62. if ($response->success) {
  63. $json = json_decode($response->body, true);
  64. $data['value'] = $json['result'][0];
  65. $data['percent'] = $data['value'];
  66. $data['max'] = 100;
  67. $data['units'] = '%';
  68. }
  69. } catch (Requests_Exception $e) {
  70. writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
  71. };
  72. return $data;
  73. }
  74. function ipmiTemp($url, $unit)
  75. {
  76. $data = [];
  77. $dataUrl = $url . '/api/v1/data?chart=ipmi.temperatures_c&format=array&points=540&group=average&gtime=0&options=absolute|jsonwrap|nonzero&after=-540';
  78. try {
  79. $response = Requests::get($dataUrl);
  80. if ($response->success) {
  81. $json = json_decode($response->body, true);
  82. $data['value'] = $json['result'][0];
  83. if($unit == 'c') {
  84. $data['percent'] = ($data['value'] / 50) * 100;
  85. $data['max'] = 50;
  86. } else if($unit == 'f') {
  87. $data['value'] = ($data['value'] * 9/5) + 32;
  88. $data['percent'] = ($data['value'] / 122) * 100;
  89. $data['max'] = 122;
  90. }
  91. $data['units'] = '°'.strtoupper($unit);
  92. }
  93. } catch (Requests_Exception $e) {
  94. writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
  95. };
  96. return $data;
  97. }