stats.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. 'kbit/s_in': '#33a',
  29. 'kbit/s_out': '#3a3',
  30. },
  31. };
  32. function graph_stat(field, subfields) {
  33. var series = [];
  34. Object.each(subfields, function(dates, subfield) {
  35. var array = [];
  36. Object.each(dates, function(day_array, k) {
  37. if (day_array == null)
  38. return;
  39. array = array.append(day_array.map(function(val, i) {
  40. return {'x': i, 'y': val};
  41. }));
  42. });
  43. series.push({
  44. 'name': field + '.' + subfield,
  45. 'data': array,
  46. 'color': colors[field][subfield] || '#111',
  47. });
  48. });
  49. var graph_div = new Element('div');
  50. var legend_div = new Element('div');
  51. var graph = new Rickshaw.Graph({
  52. 'element': graph_div,
  53. 'width': 500,
  54. 'height': 200,
  55. 'renderer': 'area',
  56. 'stroke': true,
  57. 'series': series,
  58. });
  59. new Rickshaw.Graph.Legend({
  60. 'graph': graph,
  61. 'element': legend_div,
  62. });
  63. new Rickshaw.Graph.HoverDetail({
  64. 'graph': graph,
  65. });
  66. new Rickshaw.Graph.Axis.Time({
  67. 'graph': graph,
  68. 'timeUnit': new Rickshaw.Fixtures.Time().unit('minute'),
  69. });
  70. new Rickshaw.Graph.Axis.Y({
  71. 'graph': graph,
  72. 'tickFormat': Rickshaw.Fixtures.Number.formatKMBT,
  73. });
  74. graph.render();
  75. $('graphs').adopt(graph_div, legend_div, new Element('br'));
  76. }
  77. });