netdata-functions.php 3.7 KB

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