When a server is in maintenance, the check.status is no longer updated.
Therefore, we shouldn't consider check.status if the checks are not active. This
check was properly implemented in the haproxy_server_check_status metric, but
wasn't carried over to backend_agg_check_status, which introduced
inconsistencies between the two metrics.
[cf: This patch must be backported as far as 2.4]
goto next_px;
sv = px->srv;
while (sv) {
- srv_check_status = sv->check.status;
- srv_check_count[srv_check_status] += 1;
+ if ((sv->check.state & (CHK_ST_ENABLED|CHK_ST_PAUSED)) == CHK_ST_ENABLED) {
+ srv_check_status = sv->check.status;
+ srv_check_count[srv_check_status] += 1;
+ }
sv = sv->next;
}
for (; ctx->obj_state < HCHK_STATUS_SIZE; ctx->obj_state++) {