diff --git a/src/stats-html.c b/src/stats-html.c index b18d64195..79ffc9731 100644 --- a/src/stats-html.c +++ b/src/stats-html.c @@ -1133,6 +1133,23 @@ int stats_dump_fields_html(struct buffer *out, chunk_appendf(out, "\n"); } else if (stats[ST_I_PX_TYPE].u.u32 == STATS_TYPE_BE) { + struct ist ist_status = ist(field_str(stats, ST_I_PX_STATUS)); + struct buffer buf_status; + char status[64]; + + buf_status = b_make(status, sizeof(status), 0, 0); + if (istmatch(ist_status, ist("DOWN"))) { + chunk_appendf(&buf_status, "%s", + "red", field_str(stats, ST_I_PX_STATUS)); + } + else if (istist(ist_status, ist("UNPUB")).len != 0) { + chunk_appendf(&buf_status, "%s", + "orange", field_str(stats, ST_I_PX_STATUS)); + } + else { + chunk_appendf(&buf_status, "%s", field_str(stats, ST_I_PX_STATUS)); + } + chunk_appendf(out, ""); if (flags & STAT_F_ADMIN) { /* Column sub-heading for Enable or Disable server */ @@ -1298,7 +1315,7 @@ int stats_dump_fields_html(struct buffer *out, (long long)stats[ST_I_PX_SRV_ABRT].u.u64, (long long)stats[ST_I_PX_WRETR].u.u64, (long long)stats[ST_I_PX_WREDIS].u.u64, human_time(stats[ST_I_PX_LASTCHG].u.u32, 1), - strcmp(field_str(stats, ST_I_PX_STATUS), "DOWN") ? field_str(stats, ST_I_PX_STATUS) : "DOWN", + status, stats[ST_I_PX_WEIGHT].u.u32, stats[ST_I_PX_UWEIGHT].u.u32, stats[ST_I_PX_ACT].u.u32, stats[ST_I_PX_BCK].u.u32); diff --git a/src/stats-proxy.c b/src/stats-proxy.c index 03b1999c0..8d15d7bdf 100644 --- a/src/stats-proxy.c +++ b/src/stats-proxy.c @@ -1262,6 +1262,8 @@ int stats_fill_be_line(struct proxy *px, int flags, struct field *line, int len, case ST_I_PX_STATUS: fld = chunk_newstr(out); chunk_appendf(out, "%s", (px->lbprm.tot_weight > 0 || !px->srv) ? "UP" : "DOWN"); + if (px->flags & PR_FL_BE_UNPUBLISHED) + chunk_appendf(out, " (UNPUB)"); if (flags & (STAT_F_HIDE_MAINT|STAT_F_HIDE_DOWN)) chunk_appendf(out, " (%d/%d)", nbup, nbsrv); field = mkf_str(FO_STATUS, fld);