14. eresp: response errors
15. wretr: retries (warning)
16. wredis: redispatches (warning)
- 17. status: status (UP/DOWN/...)
+ 17. status: status (UP/DOWN/NOLB/MAINT/MAINT(via)...)
18. weight: server weight (server), total weight (backend)
19. act: server is active (server), number of active servers (backend)
20. bck: server is backup (server), number of backup servers (backend)
If the server is tracked by other servers, those servers will be set to DOWN
during the maintenance.
+ In the statistics page, a server DOWN for maintenance will appear with a
+ "MAINT" status, its tracking servers with the "MAINT(via)" one.
+
Both the backend and the server may be specified either by their name or by
their numeric ID, prefixed with a dash ('#').
else
sv_state = 0; /* DOWN */
- if ((sv_state == 0) && (s->data_ctx.stats.flags & STAT_HIDE_DOWN)) {
+ if (((sv_state == 0) || (sv->state & SRV_MAINTAIN)) && (s->data_ctx.stats.flags & STAT_HIDE_DOWN)) {
/* do not report servers which are DOWN */
s->data_ctx.stats.sv = sv->next;
continue;
"UP %d/%d ↓", "UP",
"NOLB %d/%d ↓", "NOLB",
"<i>no check</i>" };
- if (sv->state & SRV_MAINTAIN) {
+ if ((sv->state & SRV_MAINTAIN) || (svs->state & SRV_MAINTAIN)) {
chunk_printf(&msg,
/* name */
"<tr class=\"maintain\"><td class=ac"
human_time(now.tv_sec - sv->last_change, 1));
chunk_printf(&msg, "MAINT");
}
+ else if (svs != sv && svs->state & SRV_MAINTAIN) {
+ chunk_printf(&msg, "%s ",
+ human_time(now.tv_sec - svs->last_change, 1));
+ chunk_printf(&msg, "MAINT(via)");
+ }
else if (svs->state & SRV_CHECKED) {
chunk_printf(&msg, "%s ",
- human_time(now.tv_sec - sv->last_change, 1));
+ human_time(now.tv_sec - svs->last_change, 1));
chunk_printf(&msg,
srv_hlt_st[sv_state],
/* status */
if (sv->state & SRV_MAINTAIN) {
chunk_printf(&msg, "MAINT,");
- } else {
+ }
+ else if (svs != sv && svs->state & SRV_MAINTAIN) {
+ chunk_printf(&msg, "MAINT(via),");
+ }
+ else {
chunk_printf(&msg,
srv_hlt_st[sv_state],
(svs->state & SRV_RUNNING) ? (svs->health - svs->rise + 1) : (svs->health),