diff options
Diffstat (limited to 'web')
-rw-r--r-- | web/dashboard.css | 1 | ||||
-rw-r--r-- | web/dashboard.html | 2 | ||||
-rw-r--r-- | web/dashboard.js | 73 | ||||
-rw-r--r-- | web/dashboard.slate.css | 1 | ||||
-rw-r--r-- | web/dashboard_info.js | 189 | ||||
-rw-r--r-- | web/goto-host-from-alarm.html | 2 | ||||
-rw-r--r-- | web/index.html | 12 | ||||
-rw-r--r-- | web/registry.html | 2 | ||||
-rw-r--r-- | web/tv.html | 2 | ||||
-rw-r--r-- | web/version.txt | 2 |
10 files changed, 250 insertions, 36 deletions
diff --git a/web/dashboard.css b/web/dashboard.css index 2147c603..42ffa3dd 100644 --- a/web/dashboard.css +++ b/web/dashboard.css @@ -37,6 +37,7 @@ body { justify-content: center; -webkit-justify-content: center; -moz-justify-content: center; + padding-top: 10px; } .netdata-container { diff --git a/web/dashboard.html b/web/dashboard.html index 4453c996..1e482dab 100644 --- a/web/dashboard.html +++ b/web/dashboard.html @@ -652,4 +652,4 @@ So, to avoid flashing the charts, we destroy and re-create the charts on each up <!-- <script> netdataServer = "http://box:19999"; </script> --> <!-- load the dashboard manager - it will do the rest --> -<script type="text/javascript" src="dashboard.js?v20170715-1"></script> +<script type="text/javascript" src="dashboard.js?v20170815-15"></script> diff --git a/web/dashboard.js b/web/dashboard.js index 1f240a4c..f119a537 100644 --- a/web/dashboard.js +++ b/web/dashboard.js @@ -51,7 +51,7 @@ var NETDATA = window.NETDATA || {}; -(function(window, document) { +(function(window, document, $, undefined) { // ------------------------------------------------------------------------ // compatibility fixes @@ -144,7 +144,7 @@ var NETDATA = window.NETDATA || {}; NETDATA.themes = { white: { bootstrap_css: NETDATA.serverDefault + 'css/bootstrap-3.3.7.css', - dashboard_css: NETDATA.serverDefault + 'dashboard.css?v20170605-2', + dashboard_css: NETDATA.serverDefault + 'dashboard.css?v20170725-1', background: '#FFFFFF', foreground: '#000000', grid: '#F0F0F0', @@ -161,7 +161,7 @@ var NETDATA = window.NETDATA || {}; }, slate: { bootstrap_css: NETDATA.serverDefault + 'css/bootstrap-slate-flat-3.3.7.css?v20161229-1', - dashboard_css: NETDATA.serverDefault + 'dashboard.slate.css?v20170605-2', + dashboard_css: NETDATA.serverDefault + 'dashboard.slate.css?v20170725-1', background: '#272b30', foreground: '#C8C8C8', grid: '#283236', @@ -2554,11 +2554,14 @@ var NETDATA = window.NETDATA || {}; else delta = Math.abs(max - min); - if (delta > 1000) __legendFormatValueChartDecimals = 0; - else if (delta > 10) __legendFormatValueChartDecimals = 1; - else if (delta > 1) __legendFormatValueChartDecimals = 2; - else if (delta > 0.1) __legendFormatValueChartDecimals = 2; - else __legendFormatValueChartDecimals = 4; + if (delta > 1000) __legendFormatValueChartDecimals = 0; + else if (delta > 10) __legendFormatValueChartDecimals = 1; + else if (delta > 1) __legendFormatValueChartDecimals = 2; + else if (delta > 0.1) __legendFormatValueChartDecimals = 2; + else if (delta > 0.01) __legendFormatValueChartDecimals = 4; + else if (delta > 0.001) __legendFormatValueChartDecimals = 5; + else if (delta > 0.0001) __legendFormatValueChartDecimals = 6; + else __legendFormatValueChartDecimals = 7; } if(__legendFormatValueChartDecimals !== old) { @@ -2585,11 +2588,14 @@ var NETDATA = window.NETDATA || {}; else { dmin = 0; var abs = (value < 0) ? -value : value; - if (abs > 1000) dmax = 0; - else if (abs > 10) dmax = 1; - else if (abs > 1) dmax = 2; - else if (abs > 0.1) dmax = 2; - else dmax = 4; + if (abs > 1000) dmax = 0; + else if (abs > 10) dmax = 1; + else if (abs > 1) dmax = 2; + else if (abs > 0.1) dmax = 2; + else if (abs > 0.01) dmax = 4; + else if (abs > 0.001) dmax = 5; + else if (abs > 0.0001) dmax = 6; + else dmax = 7; } return NETDATA.fastNumberFormat.get(dmin, dmax).format(value); @@ -3926,14 +3932,20 @@ var NETDATA = window.NETDATA || {}; // script.onabort = onError; script.onerror = function() { NETDATA.error(101, NETDATA.jQuery); }; - if(typeof callback === "function") - script.onload = callback; + if(typeof callback === "function") { + script.onload = function () { + $ = jQuery; + return callback(); + }; + } var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(script, s); } - else if(typeof callback === "function") + else if(typeof callback === "function") { + $ = jQuery; return callback(); + } }; NETDATA._loadCSS = function(filename) { @@ -5557,23 +5569,34 @@ var NETDATA = window.NETDATA || {}; if(typeof min !== 'number') min = 0; if(typeof max !== 'number') max = 0; + if(min > max) { + var t = min; + min = max; + max = t; + } + if(min > value) min = value; if(max < value) max = value; - // make sure it is zero based - // but only they have not been set by the user if(state.tmp.easyPieChartMin === null && min > 0) min = 0; if(state.tmp.easyPieChartMax === null && max < 0) max = 0; - var pcent = 0; - if(value >= 0) { - if(max !== 0) - pcent = Math.round(value * 100 / max); + var pcent; + + if(min < 0 && max > 0) { + // it is both positive and negative + // zero at the top center of the chart + max = (-min > max)? -min : max; + pcent = Math.round(value * 100 / max); + } + else if(value >= 0 && min >= 0 && max >= 0) { + // clockwise + pcent = Math.round((value - min) * 100 / (max - min)); if(pcent === 0) pcent = 0.1; } else { - if(min !== 0) - pcent = Math.round(-value * 100 / min); + // counter clockwise + pcent = Math.round((value - max) * 100 / (max - min)); if(pcent === 0) pcent = -0.1; } @@ -7069,4 +7092,4 @@ var NETDATA = window.NETDATA || {}; } }); }); -})(window, document); +})(window, document, (typeof jQuery === 'function')?jQuery:undefined); diff --git a/web/dashboard.slate.css b/web/dashboard.slate.css index f12a6aab..7445d532 100644 --- a/web/dashboard.slate.css +++ b/web/dashboard.slate.css @@ -51,6 +51,7 @@ code { justify-content: center; -moz--webkit-justify-content: center; -moz-justify-content: center; + padding-top: 10px; } .netdata-container { diff --git a/web/dashboard_info.js b/web/dashboard_info.js index 91e007a1..bb2f9599 100644 --- a/web/dashboard_info.js +++ b/web/dashboard_info.js @@ -291,6 +291,12 @@ netdataDashboard.menu = { info: undefined }, + 'stiebeleltron': { + title: 'Stiebel Eltron', + icon: '<i class="fa fa-thermometer-full" aria-hidden="true"></i>', + info: undefined + }, + 'snmp': { title: 'SNMP', icon: '<i class="fa fa-random" aria-hidden="true"></i>', @@ -301,6 +307,11 @@ netdataDashboard.menu = { title: 'Go - expvars', icon: '<i class="fa fa-eye" aria-hidden="true"></i>', info: 'Statistics about running Go applications exposed by the <a href="https://golang.org/pkg/expvar/" target="_blank">expvar package</a>.' + }, + + 'chrony': { + icon: '<i class="fa fa-clock-o" aria-hidden="true"></i>', + info: 'chronyd parameters about the system’s clock performance.' } }; @@ -470,7 +481,7 @@ netdataDashboard.context = { 'system.entropy': { colors: '#CC22AA', - info: '<a href="https://en.wikipedia.org/wiki/Entropy_(computing)" target="_blank">Entropy</a>, is like a pool of random numbers (<a href="https://en.wikipedia.org/wiki//dev/random" target="_blank">/dev/random</a>) that are mainly used in cryptography. It is advised that the pool remains always <a href="https://blog.cloudflare.com/ensuring-randomness-with-linuxs-random-number-generator/" target="_blank">above 200</a>. If the pool of entropy gets empty, you risk your security to be predictable and you should install a user-space random numbers generating daemon, like <code>haveged</code> or <code>rng-tools</code> (i.e. <b>rngd</b>), to keep the pool in healthy levels.' + info: '<a href="https://en.wikipedia.org/wiki/Entropy_(computing)" target="_blank">Entropy</a>, is a pool of random numbers (<a href="https://en.wikipedia.org/wiki//dev/random" target="_blank">/dev/random</a>) that is mainly used in cryptography. If the pool of entropy gets empty, processes requiring random numbers may run a lot slower (it depends on the interface each program uses), waiting for the pool to be replenished. Ideally a system with high entropy demands should have a hardware device for that purpose (TPM is one such device). There are also several software-only options you may install, like <code>haveged</code>, although these are generally useful only in servers.' }, 'system.forks': { @@ -589,7 +600,7 @@ netdataDashboard.context = { }, 'mem.kernel': { - info: 'The total ammount of memory being used by the kernel. <b>Slab</b> is the amount of memory used by the kernel to cache data structures for its own use. <b>KernelStack</b> is the amount of memory allocated for each task done by the kernel. <b>PageTables</b> is the amount of memory decicated to the lowest level of page tables (A page table is used to turn a virtual address into a physical memory address). <b>VmallocUsed</b> is the amount of memory being used as virtual address space.' + info: 'The total amount of memory being used by the kernel. <b>Slab</b> is the amount of memory used by the kernel to cache data structures for its own use. <b>KernelStack</b> is the amount of memory allocated for each task done by the kernel. <b>PageTables</b> is the amount of memory decicated to the lowest level of page tables (A page table is used to turn a virtual address into a physical memory address). <b>VmallocUsed</b> is the amount of memory being used as virtual address space.' }, 'mem.slab': { @@ -703,9 +714,53 @@ netdataDashboard.context = { // NETWORK INTERFACES 'net.net': { + mainheads: [ + function(os, id) { + void(os); + if(id.match(/^cgroup_.*/)) { + var iface; + try { + iface = ' ' + id.substring(id.lastIndexOf('.net_') + 5, id.length); + } + catch (e) { + iface = ''; + } + return netdataDashboard.gaugeChart('Received' + iface, '12%', 'received'); + } + else + return ''; + }, + function(os, id) { + void(os); + if(id.match(/^cgroup_.*/)) { + var iface; + try { + iface = ' ' + id.substring(id.lastIndexOf('.net_') + 5, id.length); + } + catch (e) { + iface = ''; + } + return netdataDashboard.gaugeChart('Sent' + iface, '12%', 'sent'); + } + else + return ''; + } + ], heads: [ - netdataDashboard.gaugeChart('Received', '12%', 'received'), - netdataDashboard.gaugeChart('Sent', '12%', 'sent') + function(os, id) { + void(os); + if(!id.match(/^cgroup_.*/)) + return netdataDashboard.gaugeChart('Received', '12%', 'received'); + else + return ''; + }, + function(os, id) { + void(os); + if(!id.match(/^cgroup_.*/)) + return netdataDashboard.gaugeChart('Sent', '12%', 'sent'); + else + return ''; + } ] }, @@ -1020,6 +1075,83 @@ netdataDashboard.context = { height: 0.5 }, + + // ------------------------------------------------------------------------ + // containers + + 'cgroup.cpu': { + mainheads: [ + function(os, id) { + void(os); + return '<div data-netdata="' + id + '"' + + ' data-chart-library="gauge"' + + ' data-title="CPU"' + + ' data-units="%"' + + ' data-gauge-adjust="width"' + + ' data-width="12%"' + + ' data-before="0"' + + ' data-after="-CHART_DURATION"' + + ' data-points="CHART_DURATION"' + + ' data-colors="' + NETDATA.colors[4] + '"' + + ' role="application"></div>'; + } + ] + }, + + 'cgroup.mem_usage': { + mainheads: [ + function(os, id) { + void(os); + return '<div data-netdata="' + id + '"' + + ' data-chart-library="gauge"' + + ' data-title="Memory"' + + ' data-units="MB"' + + ' data-gauge-adjust="width"' + + ' data-width="12%"' + + ' data-before="0"' + + ' data-after="-CHART_DURATION"' + + ' data-points="CHART_DURATION"' + + ' data-colors="' + NETDATA.colors[1] + '"' + + ' role="application"></div>'; + } + ] + }, + + 'cgroup.throttle_io': { + mainheads: [ + function(os, id) { + void(os); + return '<div data-netdata="' + id + '"' + + ' data-dimensions="read"' + + ' data-chart-library="gauge"' + + ' data-title="Read Disk I/O"' + + ' data-units="KB/s"' + + ' data-gauge-adjust="width"' + + ' data-width="12%"' + + ' data-before="0"' + + ' data-after="-CHART_DURATION"' + + ' data-points="CHART_DURATION"' + + ' data-colors="' + NETDATA.colors[2] + '"' + + ' role="application"></div>'; + }, + function(os, id) { + void(os); + return '<div data-netdata="' + id + '"' + + ' data-dimensions="write"' + + ' data-chart-library="gauge"' + + ' data-title="Write Disk I/O"' + + ' data-units="KB/s"' + + ' data-gauge-adjust="width"' + + ' data-width="12%"' + + ' data-before="0"' + + ' data-after="-CHART_DURATION"' + + ' data-points="CHART_DURATION"' + + ' data-colors="' + NETDATA.colors[3] + '"' + + ' role="application"></div>'; + } + ] + }, + // ------------------------------------------------------------------------ // web_log @@ -1353,5 +1485,54 @@ netdataDashboard.context = { commonMin: true, commonMax: true, valueRange: "[0, null]" + }, + + // ------------------------------------------------------------------------ + // Stiebel Eltron Heat pump installation + + 'stiebeleltron.system.roomtemp': { + commonMin: true, + commonMax: true, + valueRange: "[0, null]" + }, + + // ------------------------------------------------------------------------ + + 'chrony.system': { + info: 'In normal operation, chronyd never steps the system clock, because any jump in the timescale can have adverse consequences for certain application programs. Instead, any error in the system clock is corrected by slightly speeding up or slowing down the system clock until the error has been removed, and then returning to the system clock’s normal speed. A consequence of this is that there will be a period when the system clock (as read by other programs using the <code>gettimeofday()</code> system call, or by the <code>date</code> command in the shell) will be different from chronyd\'s estimate of the current true time (which it reports to NTP clients when it is operating in server mode). The value reported on this line is the difference due to this effect.', + colors: NETDATA.colors[3] + }, + + 'chrony.offsets': { + info: '<code>last offset</code> is the estimated local offset on the last clock update. <code>RMS offset</code> is a long-term average of the offset value.', + height: 0.5 + }, + + 'chrony.stratum': { + info: 'The <code>stratum</code> indicates how many hops away from a computer with an attached reference clock we are. Such a computer is a stratum-1 computer.', + decimalDigits: 0, + height: 0.5 + }, + + 'chrony.root': { + info: 'Estimated delays against the root time server this system is synchronized with. <code>delay</code> is the total of the network path delays to the stratum-1 computer from which the computer is ultimately synchronised. <code>dispersion</code> is the total dispersion accumulated through all the computers back to the stratum-1 computer from which the computer is ultimately synchronised. Dispersion is due to system clock resolution, statistical measurement variations etc.' + }, + + 'chrony.frequency': { + info: 'The <code>frequency</code> is the rate by which the system\'s clock would be would be wrong if chronyd was not correcting it. It is expressed in ppm (parts per million). For example, a value of 1ppm would mean that when the system\'s clock thinks it has advanced 1 second, it has actually advanced by 1.000001 seconds relative to true time.', + colors: NETDATA.colors[0] + }, + + 'chrony.residualfreq': { + info: 'This shows the <code>residual frequency</code> for the currently selected reference source. It reflects any difference between what the measurements from the reference source indicate the frequency should be and the frequency currently being used.' + + 'The reason this is not always zero is that a smoothing procedure is applied to the frequency. Each time a measurement from the reference source is obtained and a new residual frequency computed, the estimated accuracy of this residual is compared with the estimated accuracy (see <code>skew</code>) of the existing frequency value. A weighted average is computed for the new frequency, with weights depending on these accuracies. If the measurements from the reference source follow a consistent trend, the residual will be driven to zero over time.', + height: 0.5, + colors: NETDATA.colors[3] + }, + + 'chrony.skew': { + info: 'The estimated error bound on the frequency.', + height: 0.5, + colors: NETDATA.colors[5] } }; diff --git a/web/goto-host-from-alarm.html b/web/goto-host-from-alarm.html index 16ed2b92..40592134 100644 --- a/web/goto-host-from-alarm.html +++ b/web/goto-host-from-alarm.html @@ -18,7 +18,7 @@ var netdataTheme = 'slate'; var netdataShowHelp = true; </script> -<script type="text/javascript" src="dashboard.js?v20170105-7"></script> +<script type="text/javascript" src="dashboard.js?v20170724-7"></script> <script> var urlOptions = { diff --git a/web/index.html b/web/index.html index be944e34..cd8239d2 100644 --- a/web/index.html +++ b/web/index.html @@ -1182,6 +1182,13 @@ return def * this.context[id].height; else return def; + }, + + contextDecimalDigits: function(id, def) { + if(typeof this.context[id] !== 'undefined' && typeof this.context[id].decimalDigits !== 'undefined') + return this.context[id].decimalDigits; + else + return def; } }; @@ -1514,6 +1521,7 @@ + ' data-after="-' + duration.toString() + '"' + ' data-id="' + NETDATA.name2id(options.hostname + '/' + chart.id) + '"' + ' data-colors="' + netdataDashboard.anyAttribute(netdataDashboard.context, 'colors', chart.context, '') + '"' + + ' data-decimal-digits="' + netdataDashboard.contextDecimalDigits(chart.context, -1) + '"' + chartCommonMin(chart.family, chart.context, chart.units) + chartCommonMax(chart.family, chart.context, chart.units) + ' role="application"></div>'; @@ -2961,7 +2969,7 @@ }); NETDATA.requiredJs.push({ - url: NETDATA.serverDefault + 'dashboard_info.js?v20170530-1', + url: NETDATA.serverDefault + 'dashboard_info.js?v20170916-1', async: false, isAlreadyLoaded: function() { return false; } }); @@ -3589,4 +3597,4 @@ </div> </body> </html> -<script type="text/javascript" src="dashboard.js?v20170715-1"></script> +<script type="text/javascript" src="dashboard.js?v20170815-14"></script> diff --git a/web/registry.html b/web/registry.html index f40f5f2a..16a9db9e 100644 --- a/web/registry.html +++ b/web/registry.html @@ -169,7 +169,7 @@ var netdataRegistryCallback = function(machines_array) { and that you have chown it to be owned by netdata:netdata --> <!-- <script type="text/javascript" src="http://my.server:19999/dashboard.js"></script> --> -<script type="text/javascript" src="dashboard.js?v20170105-7"></script> +<script type="text/javascript" src="dashboard.js?v20170724-7"></script> <script> // Set options for TV operation diff --git a/web/tv.html b/web/tv.html index 04cc01cc..3e224131 100644 --- a/web/tv.html +++ b/web/tv.html @@ -50,7 +50,7 @@ var netdataTheme = 'slate'; // this is dark and that you have chown it to be owned by netdata:netdata --> <!-- <script type="text/javascript" src="http://my.server:19999/dashboard.js"></script> --> -<script type="text/javascript" src="dashboard.js?v20170105-7"></script> +<script type="text/javascript" src="dashboard.js?v20170724-7"></script> <script> // Set options for TV operation diff --git a/web/version.txt b/web/version.txt index 4c72a5b0..4d343be3 100644 --- a/web/version.txt +++ b/web/version.txt @@ -1 +1 @@ -4016e2d9e3c2fcf5f6d59827bf5f81083d6645ba +89ed309252981ddd50f697fde4fe93019cb3e652 |