2 {% extends
"base.html" %}
7 $(document).ready(function(){
8 // Pre-populated initial data at page load
9 var content_data = {{ content_data }};
11 var refresh = function() {
12 $.get(
"/health_data", function(data) {
13 _.extend(content_data, data);
14 setTimeout(refresh,
5000);
17 setTimeout(refresh,
5000);
19 rivets.formatters.mon_summary = function(mon_status) {
20 var result = mon_status.monmap.mons.length.toString() +
" (quorum ";
21 result += mon_status.quorum.join(
", ");
27 rivets.formatters.log_color = function(log_line) {
28 if (log_line.priority ==
"[INF]") {
29 return
"color: #000000";
30 } else if (log_line.priority ==
"[WRN]") {
31 return
"color: #FFC200";
32 } else if (log_line.priority ==
"[ERR]") {
33 return
"color: #FF2222";
39 rivets.formatters.osd_summary = function(osd_map) {
42 $.each(osd_map.osds, function(i, osd) {
51 return osd_map.osds.length +
" (" + up_count +
" up, " + in_count +
" in)";
54 rivets.formatters.pg_status_style = function(pg_status) {
55 var unhealthy = false;
56 var scrubbing = false;
57 $.each(pg_status, function(state, count) {
58 if (state ==
"active+clean") {
60 } else if (state ==
"active+clean+scrubbing"
61 || state ==
"active+clean+scrubbing+deep") {
69 return
"color: #FFC200";
70 } else if (scrubbing) {
71 return
"color: #0000bb";
73 return
"color: #00bb00";
77 rivets.formatters.pg_status = function(pg_status) {
79 $.each(pg_status, function(state, count) {
80 strings.push(count +
" " + state);
83 return strings.join(
", ");
86 rivets.bind($(
"#content"), content_data);
91 <!-- Content Header (Page header) -->
92 <section class=
"content-header">
100 <section class=
"content">
102 Overall status:
<span rv-style=
"health.overall_status | health_color">{health.overall_status}
</span>
105 <li rv-each-summary=
"health.summary">
106 {summary.severity}: {summary.summary}
111 <div class=
"col-sm-3">
112 <div class=
"info-box">
113 <span class=
"info-box-icon bg-aqua"><i
114 class=
"fa fa-database"></i></span>
116 <div class=
"info-box-content">
117 <span class=
"info-box-text">Monitors
</span>
118 <span class=
"info-box-number">{mon_status | mon_summary}
</span>
120 <!-- /.info-box-content -->
124 <div class=
"col-sm-3">
125 <div class=
"info-box">
126 <span class=
"info-box-icon bg-aqua"><i
127 class=
"fa fa-hdd-o"></i></span>
129 <div class=
"info-box-content">
130 <span class=
"info-box-text">OSDs
</span>
131 <span class=
"info-box-number">{osd_map | osd_summary}
</span>
133 <!-- /.info-box-content -->
139 <div class=
"box-header">
142 <div class=
"box-body">
144 <table class=
"table table-condensed">
152 <tr rv-each-pool=
"pools">
153 <td style=
"text-align: right;">
156 <td rv-style=
"pool.pg_status | pg_status_style">
157 {pool.pg_status | pg_status}
160 {pool.stats.bytes_used.latest | dimless} /
161 {pool.stats.max_avail.latest | dimless }
164 {pool.stats.rd_bytes.rate | dimless } rd, {
165 pool.stats.wr_bytes.rate | dimless } wr
175 <div class=
"box-header">
178 <div class=
"box-body">
179 <ul class=
"nav nav-tabs">
180 <li class=
"active"><a data-toggle=
"tab" href=
"#clog">Cluster log
</a></li>
181 <li><a data-toggle=
"tab" href=
"#audit_log">Audit log
</a></li>
183 <div class=
"tab-content" style=
"font-family:monospace; background-color: #ddd; color: #333">
184 <div id=
"clog" class=
"tab-pane fade in active">
186 <span rv-each-line=
"clog">
187 { line.stamp }
{line.priority}
188 <span rv-style=
"line | log_color">
189 <span style=
"font-weight: bold;">
196 <div id=
"audit_log" class=
"tab-pane fade in">
198 <span rv-each-line=
"audit_log">
199 { line.stamp }
{line.priority}
200 <span rv-style=
"line | log_color">
201 <span style=
"font-weight: bold;">
217 cluster ac15351a-571b-4393-9c71-815fc98dacd6
219 noin,sortbitwise,require_jewel_osds,require_kraken_osds flag(s) set
220 monmap e2: 3 mons at {a=192.168.1.7:6789/0,b=192.168.1.7:6790/0,c=192.168.1.7:6791/0}
221 election epoch 6, quorum 0,1,2 a,b,c
222 fsmap e9: cephfs_a-1/1/1 up cephfs_b-1/1/1 up {[cephfs_a:0]=a=up:active,[cephfs_b:0]=d=up:active}, 2 up:standby
224 osdmap e17: 3 osds: 3 up, 3 in
225 flags noin,sortbitwise,require_jewel_osds,require_kraken_osds
226 pgmap v115: 40 pgs, 5 pools, 4296 bytes data, 40 objects
227 279 GB used, 205 GB / 485 GB avail