netdata-functions.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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['units'] = '%';
  49. }
  50. } catch (Requests_Exception $e) {
  51. writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
  52. };
  53. return $data;
  54. }
  55. function ram($url)
  56. {
  57. $data = [];
  58. $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';
  59. try {
  60. $response = Requests::get($dataUrl);
  61. if ($response->success) {
  62. $json = json_decode($response->body, true);
  63. $data['value'] = $json['result'][0];
  64. $data['percent'] = $data['value'];
  65. $data['units'] = '%';
  66. }
  67. } catch (Requests_Exception $e) {
  68. writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
  69. };
  70. return $data;
  71. }
  72. function ipmiTemp($url, $unit)
  73. {
  74. $data = [];
  75. $dataUrl = $url . '/api/v1/data?chart=ipmi.temperatures_c&format=array&points=540&group=average&gtime=0&options=absolute|jsonwrap|nonzero&after=-540';
  76. try {
  77. $response = Requests::get($dataUrl);
  78. if ($response->success) {
  79. $json = json_decode($response->body, true);
  80. $data['value'] = $json['result'][0];
  81. if($unit == 'c') {
  82. $data['percent'] = ($data['value'] / 50) * 100;
  83. } else if($unit == 'f') {
  84. $data['value'] = ($data['value'] * 9/5) + 32;
  85. $data['percent'] = ($data['value'] / 122) * 100;
  86. }
  87. $data['units'] = '°'.strtoupper($unit);
  88. }
  89. } catch (Requests_Exception $e) {
  90. writeLog('error', 'Netdata Connect Function - Error: ' . $e->getMessage(), 'SYSTEM');
  91. };
  92. return $data;
  93. }