stats.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. window.addEvent('domready', function() {
  2. 'use strict';
  3. new Request.JSON({
  4. 'url': 'http://localhost:8892/v1/1/stats/1?start=2014-04-19&end=2014-04-19',
  5. 'onSuccess': graph_stats,
  6. }).get();
  7. function graph_stats(data) {
  8. Object.each(data, function(subfields, field) {
  9. if (field == 'disk')
  10. return;
  11. graph_stat(field, subfields);
  12. });
  13. }
  14. var colors = {
  15. 'cpu': {
  16. 'idle': '#3aa',
  17. 'user': '#33a',
  18. 'system': '#aa3',
  19. 'iowait': '#a33',
  20. },
  21. 'mem': {
  22. 'free': '#3a3',
  23. 'used': '#a33',
  24. 'buffers': '#3aa',
  25. 'cached': '#33a',
  26. },
  27. 'net': {
  28. 'bit/s_in': '#33a',
  29. 'bit/s_out': '#3a3',
  30. },
  31. };
  32. function graph_stat(field, subfields) {
  33. var series = [];
  34. Object.each(subfields, function(dates, subfield) {
  35. if (subfield == 'num_cpus')
  36. return;
  37. var array = [];
  38. Object.each(dates, function(day_array, k) {
  39. if (day_array == null)
  40. return;
  41. array = array.append(day_array.map(function(val, i) {
  42. return {'x': i, 'y': val};
  43. }));
  44. });
  45. series.push({
  46. 'name': field + '.' + subfield,
  47. 'data': array,
  48. 'color': colors[field][subfield] || '#111',
  49. });
  50. });
  51. var graph_div = new Element('div');
  52. var legend_div = new Element('div');
  53. var graph = new Rickshaw.Graph({
  54. 'element': graph_div,
  55. 'width': 500,
  56. 'height': 200,
  57. 'renderer': 'area',
  58. 'stroke': true,
  59. 'series': series,
  60. });
  61. new Rickshaw.Graph.Legend({
  62. 'graph': graph,
  63. 'element': legend_div,
  64. });
  65. new Rickshaw.Graph.HoverDetail({
  66. 'graph': graph,
  67. });
  68. new Rickshaw.Graph.Axis.Time({
  69. 'graph': graph,
  70. 'timeUnit': new Rickshaw.Fixtures.Time().unit('minute'),
  71. });
  72. new Rickshaw.Graph.Axis.Y({
  73. 'graph': graph,
  74. 'tickFormat': Rickshaw.Fixtures.Number.formatKMBT,
  75. });
  76. graph.render();
  77. $('graphs').adopt(graph_div, legend_div, new Element('br'));
  78. }
  79. });