diff options
Diffstat (limited to 'deps/rabbitmq_management/priv/www/js/tmpl/overview.ejs')
-rw-r--r-- | deps/rabbitmq_management/priv/www/js/tmpl/overview.ejs | 399 |
1 files changed, 399 insertions, 0 deletions
diff --git a/deps/rabbitmq_management/priv/www/js/tmpl/overview.ejs b/deps/rabbitmq_management/priv/www/js/tmpl/overview.ejs new file mode 100644 index 0000000000..4b6dce1a99 --- /dev/null +++ b/deps/rabbitmq_management/priv/www/js/tmpl/overview.ejs @@ -0,0 +1,399 @@ +<% if(disable_stats) { %> + <h1>Overview: Management only mode</h1> +<% } else { %> + <h1>Overview</h1> +<% } %> +<% if (user_monitor) { %> +<%= format('partition', {'nodes': nodes}) %> +<% } %> + +<div class="updatable"> +<% if (overview.statistics_db_event_queue > 1000) { %> +<p class="warning"> + The management statistics database currently has a queue + of <b><%= overview.statistics_db_event_queue %></b> events to + process. If this number keeps increasing, so will the memory used by + the management plugin. + + <% if (overview.rates_mode != 'none') { %> + You may find it useful to set the <code>rates_mode</code> config item + to <code>none</code>. + <% } %> +</p> +<% } %> +<% for (i = 0; i < vhosts.length; i++) +{ + for (var vhost_status_node in vhosts[i].cluster_state) { + if (vhosts[i].cluster_state[vhost_status_node] != 'running') { +%> +<p class="warning"> + Virtual host <b><%= vhosts[i].name %></b> experienced an error on node <b><%= vhost_status_node %></b> and may be inaccessible +</p> +<% }}} %> +</div> + +<div class="section"> +<h2>Totals</h2> +<div class="hider updatable"> +<% if(!disable_stats) { %> +<%= queue_lengths('lengths-over', overview.queue_totals) %> +<% if (rates_mode != 'none') { %> + <%= message_rates('msg-rates-over', overview.message_stats) %> +<% } %> +<% } %> + +<% if (overview.object_totals) { %> + <h3>Global counts <span class="help" id="resource-counts"></span></h3> + + <ul id="global-counts"> + <li> + <a href="#/connections" class="button">Connections: <strong><%= overview.object_totals.connections %></strong></a> + </li> +<% if(!disable_stats) { %> + <li> + <a href="#/channels" class="button">Channels: <strong><%= overview.object_totals.channels %></strong></a> + </li> +<% } %> + <li> + <a href="#/exchanges" class="button">Exchanges: <strong><%= overview.object_totals.exchanges %></strong></a> + </li> + <li> + <a href="#/queues" class="button">Queues: <strong><%= overview.object_totals.queues %></strong></a> + </li> +<% if (overview.object_totals['consumers'] != undefined) { %> + <li> + <a href="#" class="button disabled">Consumers: <strong><%= overview.object_totals.consumers %></strong></a> + </li> +<% } %> + </ul> +<% } %> + +</div> +</div> + +<% if (user_monitor) { %> +<div class="section"> +<h2>Nodes</h2> + +<div class="hider updatable"> + +<table class="list"> + <tr> + <th>Name</th> + <% if(!disable_stats) { %> + <% if (show_column('overview', 'file_descriptors')) { %> + <th>File descriptors <span class="help" id="file-descriptors"></span></th> + <% } %> + <% if (show_column('overview', 'socket_descriptors')) { %> + <th>Socket descriptors <span class="help" id="socket-descriptors"></span></th> + <% } %> + <% if (show_column('overview', 'erlang_processes')) { %> + <th>Erlang processes</th> + <% } %> + <% if (show_column('overview', 'memory')) { %> + <th>Memory <span class="help" id="memory-calculation-strategy"></span></th> + <% } %> + <% if (show_column('overview', 'disk_space')) { %> + <th>Disk space</th> + <% } %> + <% if (show_column('overview', 'uptime')) { %> + <th>Uptime</th> + <% } %> + <% if (show_column('overview', 'info')) { %> + <th>Info</th> + <% } %> + <% if (user_administrator && show_column('overview', 'reset_stats')) { %> + <th>Reset stats</th> + <% } %> + <th class="plus-minus"><span class="popup-options-link" title="Click to change columns" type="columns" for="overview">+/-</span></th> + <% } %> + </tr> +<% + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + if(!disable_stats) { + var colspan = group_count('overview', 'Statistics', []) + + group_count('overview', 'General', []); + } else { + var colspan = []; + } +%> + <tr<%= alt_rows(i)%>> + <td> + <a href="#/nodes/<%= esc(node.name) %>" class="button"><%= fmt_node(node.name) %></a> + <% if (rabbit_versions_interesting) { %> + <sub>RabbitMQ <%= fmt_rabbit_version(node.applications) %></sub> + <% } %> + </td> +<% if(!disable_stats) { %> +<% if (!node.running) { %> + <td colspan="<%= colspan %>"> + <div class="status-red"> + Node not running + </div> + </td> +<% } else if (node.os_pid == undefined) { %> + <td colspan="<%= colspan %>"> + <div class="status-yellow"> + <abbr title="The rabbitmq_management_agent plugin should be enabled on this node. If it is not, various statistics will be inaccurate."> + Node statistics not available</abbr> + </div> + </td> +<% } else { %> + <% if (show_column('overview', 'file_descriptors')) { %> + <td> + <% if (node.fd_used != 'install_handle_from_sysinternals') { %> + <%= node_stat_count_bar('fd_used', 'fd_total', node, FD_THRESHOLDS) %> + <% } else { %> + <p class="c">handle.exe missing <span class="help" id="handle-exe"></span><sub><%= node.fd_total %> available</sub></p> + + <% } %> + </td> + <% } %> + <% if (show_column('overview', 'socket_descriptors')) { %> + <td> + <%= node_stat_count_bar('sockets_used', 'sockets_total', node, FD_THRESHOLDS) %> + </td> + <% } %> + <% if (show_column('overview', 'erlang_processes')) { %> + <td> + + <%= node_stat_count_bar('proc_used', 'proc_total', node, PROCESS_THRESHOLDS) %> + </td> + <% } %> + <% if (show_column('overview', 'memory')) { %> + <td> + + <% if (node.mem_limit != 'memory_monitoring_disabled') { %> + <%= node_stat_bar('mem_used', 'mem_limit', 'high watermark', node, fmt_bytes_axis, + node.mem_alarm ? 'red' : 'green', + node.mem_alarm ? 'memory-alarm' : null) %> + <% } else { %> + <%= fmt_bytes(node.mem_used) %> + <% } %> + </td> + <% } %> + <% if (show_column('overview', 'disk_space')) { %> + <td> + + <% if (node.disk_free_limit != 'disk_free_monitoring_disabled') { %> + <%= node_stat_bar('disk_free', 'disk_free_limit', 'low watermark', node, fmt_bytes_axis, + node.disk_free_alarm ? 'red' : 'green', + node.disk_free_alarm ? 'disk_free-alarm' : null, true) %> + <% } else { %> + (not available) + <% } %> + </td> + <% } %> + <% if (show_column('overview', 'uptime')) { %> + <td><span><%= fmt_uptime(node.uptime) %></span></td> + <% } %> + <% if (show_column('overview', 'info')) { %> + <td> + <abbr title="Message rates"><%= fmt_string(node.rates_mode) %></abbr> + <% if (node.type == 'disc') { %> + <abbr title="Broker definitions are held on disc.">disc</abbr> + <% } else { %> + <abbr title="Broker definitions are held in RAM. Messages will still be written to disc if necessary.">RAM</abbr> + <% } %> + <%= fmt_plugins_small(node) %> + <abbr title="Memory calculation strategy"><%= fmt_string(node.mem_calculation_strategy) %></abbr> + </td> + <% } %> + <% if(user_administrator && show_column('overview', 'reset_stats')) { %> + <td> + <form action="#/reset_node" method="delete" class="confirm inline-form"> + <input type="hidden" name="node" value="<%= node.name %>"/> + <input type="submit" value="This node"/> + </form> + <form action="#/reset" method="delete" class="confirm inline-form-right"> + <input type="submit" value="All nodes"/> + </form> + <% } %> +<% } %> +<% } %> + </tr> +<% } %> +</table> + +</div> +</div> + +<% if(!disable_stats) { %> +<div class="section-hidden"> +<h2>Churn statistics</h2> +<div class="hider updatable"> + <%= rates_chart_or_text('connection-churn', overview.churn_rates, + [['Created', 'connection_created'], + ['Closed', 'connection_closed']], + fmt_rate, fmt_rate_axis, true, 'Connection operations', 'connection-operations') %> + + <%= rates_chart_or_text('channel-churn', overview.churn_rates, + [['Created', 'channel_created'], + ['Closed', 'channel_closed']], + fmt_rate, fmt_rate_axis, true, 'Channel operations', 'channel-operations') %> + + <%= rates_chart_or_text('queue-churn', overview.churn_rates, + [['Declared', 'queue_declared'], + ['Created', 'queue_created'], + ['Deleted', 'queue_deleted']], + fmt_rate, fmt_rate_axis, true, 'Queue operations', 'queue-operations') %> + +</div> +</div> +<% } %> + +<% if(!disable_stats) { %> +<div class="section-hidden"> +<h2>Ports and contexts</h2> +<div class="hider updatable"> +<h3>Listening ports</h3> +<table class="list"> + <tr> + <th>Protocol</th> +<% if (nodes_interesting) { %> + <th>Node</th> +<% } %> + <th>Bound to</th> + <th>Port</th> + </tr> + <% + for (var i = 0; i < overview.listeners.length; i++) { + var listener = overview.listeners[i]; + %> + <tr<%= alt_rows(i)%>> + <td><%= listener.protocol %></td> +<% if (nodes_interesting) { %> + <td><%= fmt_node(listener.node) %></td> +<% } %> + <td><%= listener.ip_address %></td> + <td><%= listener.port %></td> + </tr> + <% } %> +</table> +<h3>Web contexts</h3> +<table class="list"> + <tr> + <th>Context</th> +<% if (nodes_interesting) { %> + <th>Node</th> +<% } %> + <th>Bound to</th> + <th>Port</th> + <th>SSL</th> + <th>Path</th> + </tr> + <% + for (var i = 0; i < overview.contexts.length; i++) { + var context = overview.contexts[i]; + %> + <tr<%= alt_rows(i)%>> + <td><%= context.description %></td> +<% if (nodes_interesting) { %> + <td><%= fmt_node(context.node) %></td> +<% } %> + <td><%= (context.ip != undefined) ? context.ip : "0.0.0.0" %></td> + <td><%= context.port %></td> + <td class="c"><%= fmt_boolean(context.ssl || false) %></td> + <td><%= context.path %></td> + </tr> + <% } %> +</table> +</div> +</div> +<% } %> + +<div class="section-hidden administrator-only"> +<h2>Export definitions</h2> +<div class="hider"> + <table class="two-col-layout"> + <tr> + <td> + <p> + <label for="download-filename">Filename for download:</label><br/> + <input type="text" id="download-filename" value="<%= fmt_download_filename(overview.node) %>" class="wide" /> + </p> + </td> + <td> + <p> + <button id="download-definitions">Download broker definitions</button> + <span class="help" id="export-definitions"></span> + </p> + </td> + </tr> + <tr> + <td> + <% if (vhosts_interesting) { %> + <label>Virtual host:</label> + <select name="vhost-download"> + <option value="all">All</option> + <% for (var i = 0; i < vhosts.length; i++) { %> + <option value="<%= fmt_string(vhosts[i].name) %>"><%= fmt_string(vhosts[i].name) %></option> + <% } %> + </select> <span class="help" id="export-definitions-vhost"></span> +<% } else { %> + <input type="hidden" name="vhost" value="all"/> +<% } %> + </td> + </tr> + </table> +</div> +</div> + +<div class="section-hidden administrator-only"> +<h2>Import definitions</h2> +<div class="hider"> + <form method="post" enctype="multipart/form-data"> + <table class="two-col-layout"> + <tr> + <td> + <p> + <label>Definitions file:</label><br/> + <input type="file" name="file"/> + </p> + </td> + <td> + <p> + <input type="submit" value="Upload broker definitions" onclick="submit_import($(this).closest('form')[0]); return false"/> + <span class="help" id="import-definitions"></span> + </p> + </td> + </tr> + <tr> + <td> + <% if (vhosts_interesting) { %> + <label>Virtual host:</label> + <select name="vhost-upload"> + <option value="all">All</option> + <% for (var i = 0; i < vhosts.length; i++) { %> + <option value="<%= fmt_string(vhosts[i].name) %>"><%= fmt_string(vhosts[i].name) %></option> + <% } %> + </select> <span class="help" id="import-definitions-vhost"></span> + +<% } else { %> + <input type="hidden" name="vhost" value="all"/> +<% } %> + </td> + </tr> + </table> + </form> +</div> +</div> + +<% if (overview.rates_mode == 'none') { %> +<div class="section-hidden"> +<h2>Message rates disabled</h2> +<div class="hider"> +<p> + Message rates are currently disabled. +</p> +<p> + To re-enable message rates, edit your configuration file and + set <code>rates_mode</code> to <code>basic</code> + or <code>detailed</code> in the <code>rabbitmq_management</code> + application +</p> +</div> +</div> +<% } %> +<% } %> |