4 <title>NetData Dashboard</title>
6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
9 <meta name="viewport" content="width=device-width, initial-scale=1">
10 <meta name="apple-mobile-web-app-capable" content="yes">
11 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
12 <meta name="author" content="costa@tsaousis.gr">
16 <div class="container-fluid">
18 <h1>NetData Custom Dashboard <div data-netdata="system.cpu" data-chart-library="sparkline" data-height="30" data-after="-600" data-sparkline-linecolor="#888"></div></h1>
20 This is a template for building custom dashboards. To build a dashboard you just do this:
26 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
27 <meta charset="utf-8">
28 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
29 <meta name="viewport" content="width=device-width, initial-scale=1">
30 <meta name="apple-mobile-web-app-capable" content="yes">
31 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
34 <div data-netdata="system.processes"
35 data-chart-library="dygraph"
41 <script type="text/javascript" src="http://netdata.server:19999/dashboard.js"></script>
46 <li>You can host your dashboard anywhere.</li>
47 <li>You can add as many charts as you like.</li>
48 <li>You can have charts from many different netdata servers (add <pre>data-host="http://another.netdata.server:19999/"</pre> to each chart).</li>
49 <li>You can use different chart libraries on the same page: <b>peity</b>, <b>sparkline</b>, <b>dygraph</b>, <b>google</b>, <b>morris</b></li>
50 <li>You can customize each chart to your preferences. For each chart library most of their attributes can be given in <b>data-</b> attributes.</li>
51 <li>Each chart can have each own duration - it is controlled with the <b>data-after</b> attribute to give that many seconds of data.</li>
52 <li>Depending on the width of the chart and <b>data-after</b> attribute, netdata will automatically refresh the chart when it needs to be updated. For example giving 600 pixels for width for -600 seconds of data, using a chart library that needs 3 pixels per point, will yeld in a chart updated once every 3 seconds.</li>
57 <h1>Sparkline Charts</h1>
58 Sparkline charts support 'NULL' values, so the charts can indicate that values are missing.
59 Sparkline charts stretch the values to show the variations between values in more detail.
60 They also have mouse-hover support.
62 <b>Sparklines are fantastic</b>. You can inline charts in text. For example this
63 <div data-netdata="system.cpu"
64 data-chart-library="sparkline"
68 ></div> is my current cpu usage (last 30 seconds),
70 <div data-netdata="netdata.net"
72 data-chart-library="sparkline"
76 ></div> is the bandwidth my netdata server is currently transmitting (last minute)
78 <div data-netdata="netdata.requests"
79 data-chart-library="sparkline"
83 ></div> is the requests/sec it serves (last 3 minutes).
86 <div style="width: 33%; display: inline-block;">
87 <div data-netdata="system.processes"
88 data-chart-library="sparkline"
92 data-dt-element-name="time101"
95 <small>rendered in <span id="time101">X</span> ms</small>
97 <div style="width: 33%; display: inline-block;">
98 <div data-netdata="system.ipv4"
99 data-chart-library="sparkline"
103 data-dt-element-name="time102"
106 <small>rendered in <span id="time102">X</span> ms</small>
108 <div style="width: 33%; display: inline-block;">
109 <div data-netdata="system.cpu"
110 data-chart-library="sparkline"
114 data-dt-element-name="time103"
117 <small>rendered in <span id="time103">X</span> ms</small>
123 <h1>Peity Charts</h1>
124 Peity charts do not support 'NULL' values, so the charts cannot indicate that values are missing.
125 Peity charts cannot have multiple dimensions on the charts - so netdata will use 'min2max' to show
126 the total of all dimensions.
128 <div style="width: 33%; display: inline-block;">
129 <div data-netdata="system.processes"
130 data-chart-library="peity"
134 data-dt-element-name="time001"
137 <small>rendered in <span id="time001">X</span> ms</small>
139 <div style="width: 33%; display: inline-block;">
140 <div data-netdata="system.ipv4"
141 data-chart-library="peity"
145 data-dt-element-name="time002"
148 <small>rendered in <span id="time002">X</span> ms</small>
150 <div style="width: 33%; display: inline-block;">
151 <div data-netdata="system.cpu"
152 data-chart-library="peity"
156 data-dt-element-name="time003"
159 <small>rendered in <span id="time003">X</span> ms</small>
166 <h1>Dygraph Charts</h1>
167 The fastest charting engine that can chart complete charts (not just sparklines).
168 The charts are zoomable (drag their contents to pan, shift with mouse wheel to zoom-in or zoom-out, double click to reset it).
169 <b>Netdata magic!</b> Realtime charts on your web page!
171 Sparklines using dygraphs
172 <div data-netdata="system.processes"
173 data-chart-library="dygraph"
174 data-dygraph-theme="sparkline"
180 are also possible! This
181 <div data-netdata="system.ipv4"
182 data-chart-library="dygraph"
183 data-dygraph-theme="sparkline"
189 is an area chart, while this
190 <div data-netdata="system.cpu"
191 data-chart-library="dygraph"
192 data-dygraph-theme="sparkline"
197 ></div> is a stacked area chart!
201 <div style="width: 33%; display: inline-block;">
202 <div data-netdata="system.processes"
203 data-chart-library="dygraph"
204 data-dygraph-theme="sparkline"
208 data-dt-element-name="time501"
211 <small>rendered in <span id="time501">X</span> ms</small>
213 <div style="width: 33%; display: inline-block;">
214 <div data-netdata="system.ipv4"
215 data-chart-library="dygraph"
216 data-dygraph-theme="sparkline"
220 data-dt-element-name="time502"
223 <small>rendered in <span id="time502">X</span> ms</small>
225 <div style="width: 33%; display: inline-block;">
226 <div data-netdata="system.cpu"
227 data-chart-library="dygraph"
228 data-dygraph-theme="sparkline"
232 data-dt-element-name="time503"
235 <small>rendered in <span id="time503">X</span> ms</small>
241 <div style="width: 33%; display: inline-block;">
242 <div data-netdata="system.processes"
243 data-chart-library="dygraph"
247 data-dt-element-name="time201"
250 <small>rendered in <span id="time201">X</span> ms</small>
252 <div style="width: 33%; display: inline-block;">
253 <div data-netdata="system.ipv4"
254 data-chart-library="dygraph"
258 data-dt-element-name="time202"
261 <small>rendered in <span id="time202">X</span> ms</small>
263 <div style="width: 33%; display: inline-block;">
264 <div data-netdata="system.cpu"
265 data-chart-library="dygraph"
269 data-dt-element-name="time203"
272 <small>rendered in <span id="time203">X</span> ms</small>
274 <div style="width: 33%; display: inline-block;">
275 <div data-netdata="system.io"
276 data-chart-library="dygraph"
280 data-dt-element-name="time204"
283 <small>rendered in <span id="time204">X</span> ms</small>
285 <div style="width: 33%; display: inline-block;">
286 <div data-netdata="apps.cpu"
287 data-chart-library="dygraph"
291 data-dt-element-name="time205"
294 <small>rendered in <span id="time205">X</span> ms</small>
296 <div style="width: 33%; display: inline-block;">
297 <div data-netdata="netdata.net"
298 data-chart-library="dygraph"
302 data-dt-element-name="time206"
305 <small>rendered in <span id="time206">X</span> ms</small>
307 <div style="width: 33%; display: inline-block;">
308 <div data-netdata="netdata.server_cpu"
309 data-chart-library="dygraph"
313 data-dt-element-name="time207"
316 <small>rendered in <span id="time207">X</span> ms</small>
318 <div style="width: 33%; display: inline-block;">
319 <div data-netdata="netdata.requests"
320 data-chart-library="dygraph"
324 data-dt-element-name="time208"
327 <small>rendered in <span id="time208">X</span> ms</small>
329 <div style="width: 33%; display: inline-block;">
330 <div data-netdata="net.gstag0"
331 data-chart-library="dygraph"
335 data-dt-element-name="time209"
338 <small>rendered in <span id="time209">X</span> ms</small>
344 <h1>EasyPieChart</h1>
346 <div style="width: 33%; display: inline-block;">
347 <div style="display: inline-block; position: relative;">
348 <div data-netdata="system.processes"
349 data-chart-library="easypiechart"
354 data-dt-element-name="time601"
357 <small>rendered in <span id="time601">X</span> ms</small>
359 <div style="display: inline-block; position: relative;">
360 <div data-netdata="system.processes"
361 data-chart-library="easypiechart"
366 data-dt-element-name="time601a"
369 <small>rendered in <span id="time601a">X</span> ms</small>
372 <div style="width: 33%; display: inline-block;">
373 <div style="display: inline-block; position: relative;">
374 <div data-netdata="system.ipv4"
375 data-chart-library="easypiechart"
380 data-dt-element-name="time602"
383 <small>rendered in <span id="time602">X</span> ms</small>
385 <div style="display: inline-block; position: relative;">
386 <div data-netdata="system.ipv4"
387 data-chart-library="easypiechart"
392 data-dt-element-name="time602a"
395 <small>rendered in <span id="time602a">X</span> ms</small>
398 <div style="width: 33%; display: inline-block;">
399 <div style="display: inline-block; position: relative;">
400 <div data-netdata="system.cpu"
401 data-chart-library="easypiechart"
406 data-dt-element-name="time603"
409 <small>rendered in <span id="time603">X</span> ms</small>
411 <div style="display: inline-block; position: relative;">
412 <div data-netdata="system.cpu"
413 data-chart-library="easypiechart"
418 data-dt-element-name="time603a"
421 <small>rendered in <span id="time603a">X</span> ms</small>
429 <div style="width: 33%; display: inline-block;">
430 <div style="display: inline-block; position: relative;">
431 <div data-netdata="system.processes"
432 data-chart-library="gauge"
437 data-dt-element-name="time701"
440 <small>rendered in <span id="time701">X</span> ms</small>
442 <div style="display: inline-block; position: relative;">
443 <div data-netdata="system.processes"
444 data-chart-library="gauge"
449 data-dt-element-name="time701a"
452 <small>rendered in <span id="time701a">X</span> ms</small>
455 <div style="width: 33%; display: inline-block;">
456 <div style="display: inline-block; position: relative;">
457 <div data-netdata="system.ipv4"
458 data-chart-library="gauge"
463 data-dt-element-name="time702"
466 <small>rendered in <span id="time702">X</span> ms</small>
468 <div style="display: inline-block; position: relative;">
469 <div data-netdata="system.ipv4"
470 data-chart-library="gauge"
475 data-dt-element-name="time702a"
478 <small>rendered in <span id="time702a">X</span> ms</small>
481 <div style="width: 33%; display: inline-block;">
482 <div style="display: inline-block; position: relative;">
483 <div data-netdata="system.cpu"
484 data-chart-library="gauge"
489 data-dt-element-name="time703"
492 <small>rendered in <span id="time703">X</span> ms</small>
494 <div style="display: inline-block; position: relative;">
495 <div data-netdata="system.cpu"
496 data-chart-library="gauge"
501 data-dt-element-name="time703a"
504 <small>rendered in <span id="time703a">X</span> ms</small>
510 <h1>Google Charts</h1>
511 NetData was originaly developed with Google Charts.
512 NetData is a complete Google Visualization API provider.
514 <div style="width: 33%; display: inline-block;">
515 <div data-netdata="system.processes"
516 data-chart-library="google"
520 data-dt-element-name="time301"
523 <small>rendered in <span id="time301">X</span> ms</small>
525 <div style="width: 33%; display: inline-block;">
526 <div data-netdata="system.ipv4"
527 data-chart-library="google"
531 data-dt-element-name="time302"
534 <small>rendered in <span id="time302">X</span> ms</small>
536 <div style="width: 33%; display: inline-block;">
537 <div data-netdata="system.cpu"
538 data-chart-library="google"
542 data-dt-element-name="time303"
545 <small>rendered in <span id="time303">X</span> ms</small>
554 <h1>Morris Charts</h1>
555 Unfortunatelly, Morris Charts are very slow. Here we force them to lower their detail to get acceptable results.
557 <div style="width: 33%; display: inline-block;">
558 <div data-netdata="system.processes"
559 data-chart-library="morris"
563 data-dt-element-name="time401"
566 <small>rendered in <span id="time401">X</span> ms</small>
568 <div style="width: 33%; display: inline-block;">
569 <div data-netdata="system.ipv4"
570 data-chart-library="morris"
574 data-dt-element-name="time402"
577 <small>rendered in <span id="time402">X</span> ms</small>
579 <div style="width: 33%; display: inline-block;">
580 <div data-netdata="system.cpu"
581 data-chart-library="morris"
585 data-dt-element-name="time403"
588 <small>rendered in <span id="time403">X</span> ms</small>
594 C3 charts are not usable in large scale. They suffer from the following issues:
596 <li>extreme use of transitions (implemented with D3 instead of CSS, meaning they are javascript rendered) that cannot be disabled - even opacity is hardcoded in the javascript library</li>
597 <li>rendering is done with <code>SVG</code> instead of <code>canvas</code>, so they use DOM elements for every point, becomimg useless if more than 500 points are drawn</li>
598 <li>lack of a <code>raw</code> data format, so every time a chart is updated, data convertion in javascript is required</li>
599 <li>lack of <code>stacked</code> charts support</li>
601 So, to avoid flashing the charts, we destroy and re-create the charts on each update. Also, since they manipulate the data with javascript we were forced to lower the detail they render to get acceptable speeds.
603 <div style="width: 33%; display: inline-block;">
604 <div data-netdata="system.processes"
605 data-chart-library="c3"
609 data-dt-element-name="time801"
612 <small>rendered in <span id="time801">X</span> ms</small>
614 <div style="width: 33%; display: inline-block;">
615 <div data-netdata="system.ipv4"
616 data-chart-library="c3"
620 data-dt-element-name="time802"
623 <small>rendered in <span id="time802">X</span> ms</small>
625 <div style="width: 33%; display: inline-block;">
626 <div data-netdata="system.cpu"
627 data-chart-library="c3"
631 data-dt-element-name="time803"
634 <small>rendered in <span id="time803">X</span> ms</small>
641 </div> <!-- 1st container -->
644 <!-- you can set your netdata server globally, by ucommenting this -->
645 <!-- you can also give a different server per chart, with the attribute: data-host="http://netdata.server:19999" -->
646 <!-- <script> netdataServer = "http://box:19999"; </script> -->
648 <!-- load the dashboard manager - it will do the rest -->
649 <script type="text/javascript" src="dashboard.js"></script>