Hi,

Sorry, I now understand my problem better.

When a server is in maintenance, the health checks are not performed and 
sv->check.state == CHK_ST_PAUSED.
This is checked in the haproxy_server_check_status metric but not in 
backend_agg_check_status.
I will check my new patch and push it afterwards.

Thank you very much.


-----Message d'origine-----
De : Christopher Faulet <cfau...@haproxy.com> 
Envoyé : lundi 11 septembre 2023 20:15
À : Cedric Paillet <c.pail...@criteo.com>; haproxy@formilux.org
Objet : Re: [PATCH] BUG/MINOR: promex: don't count servers in maintenance

Le 07/09/2023 à 16:50, Cedric Paillet a écrit :
> 
>> And I guess we should also check the healthchecks are enabled for the 
>> server. It is not really an issue because call to get_check_status_result() 
>> will exclude neutral and unknown satuses. But there is no reason to count 
>> these servers.
> 
> What we observed is that the health check of servers that have been put into 
> maintenance is no longer updated, and the status returned is the last known 
> one. I need to double-check, but I believe we even saw L7OK when putting a 
> "UP" server into maintenance. (What I'm sure of is that the majority of 
> servers in maintenance were in L7STS and not in UNK).
> 
> If we add the PROMEX_FL_NO_MAINT_SR (which makes sense), we will continue to 
> display an incorrect backend_agg_server_status (and also 
> haproxy_server_check_status) for servers in maintenance for those who don't 
> set (no-maint=empty), and we probably then need another patch so that the 
> status of these servers is HCHK_STATUS_UNKNOWN?"
> 

Health-checks for servers in maintenance are paused. So indeed, the last known 
status does not change anymore in this state. My purpose here was to also 
filter servers to only count those with health-checks enabled and running. When 
the server's metrics are dumped, the check status is already skipped for 
servers in maintenance. Thus it seems logical to not count them for the 
aggregated metric.

In fact, this way, all servers in maintenance are skipped without checking the 
server's admin state. But it is probably cleaner to keep both checks for 
consistency. Except if I missed something. This part is not really clear for me 
anymore...

--
Christopher Faulet

Reply via email to