Hello!
I have a simple config for routing requests with failover and blacklisting on 408, 480 and 503 codes from servers.
This is a part of config: # Wrapper for relaying requests route[RELAY] {
# the base event routes t_on_branch("MANAGE_BRANCH"); t_on_reply("MANAGE_REPLY"); t_on_failure("MANAGE_FAILURE");
if (!t_relay()) { sl_reply_error(); } exit; }
# Manage incoming replies onreply_route[MANAGE_REPLY] { xlog("L_NOTICE", "$rr ($rs) [$cs] ($ci) $si:$sp - $ua\n"); if ( t_check_status("(503)|(408)|(480)") ) { xlog("L_WARN", "Server will be blacklisted: $si:$sp ($rs)\n"); } }
# Manage failure routing cases failure_route[MANAGE_FAILURE] {
if ( !t_check_status("(503)|(408)|(480)") ) { exit; }
ds_mark_dst("IP"); # blacklist
if (t_is_canceled()) exit;
if (!ds_next_domain()) { send_reply("503", "Service Unavailable"); exit; }
route(RELAY); }
If there is a timeout or network error on the server side, it is blacklisted. How can such cases be managed and how can they be logged? I didn't find this on the module page: https://www.kamailio.org/docs/modules/stable/modules/tm.html
Hello,
you probably want to check the dispatcher module docs out for this ds_mark_dst(..) function. You find also some RPC commands to e.g. inspect on shell. You can also try the event-routes documented there to log some info.
https://kamailio.org/docs/modules/stable/modules/dispatcher.html#dispatcher....
Cheers,
Henning
-- Henning Westerholt – https://skalatan.de/blog/ Kamailio services – https://gilawa.comhttps://gilawa.com/
From: sr-users sr-users-bounces@lists.kamailio.org On Behalf Of Marat Gareev Sent: Thursday, September 9, 2021 8:02 PM To: Kamailio (SER) - Users Mailing List sr-users@lists.kamailio.org Subject: [SR-Users] Manage blacklisting on network errors
Hello!
I have a simple config for routing requests with failover and blacklisting on 408, 480 and 503 codes from servers.
This is a part of config: # Wrapper for relaying requests route[RELAY] {
# the base event routes t_on_branch("MANAGE_BRANCH"); t_on_reply("MANAGE_REPLY"); t_on_failure("MANAGE_FAILURE");
if (!t_relay()) { sl_reply_error(); } exit; }
# Manage incoming replies onreply_route[MANAGE_REPLY] { xlog("L_NOTICE", "$rr ($rs) [$cs] ($ci) $si:$sp - $ua\n"); if ( t_check_status("(503)|(408)|(480)") ) { xlog("L_WARN", "Server will be blacklisted: $si:$sp ($rs)\n"); } }
# Manage failure routing cases failure_route[MANAGE_FAILURE] {
if ( !t_check_status("(503)|(408)|(480)") ) { exit; }
ds_mark_dst("IP"); # blacklist
if (t_is_canceled()) exit;
if (!ds_next_domain()) { send_reply("503", "Service Unavailable"); exit; }
route(RELAY); }
If there is a timeout or network error on the server side, it is blacklisted. How can such cases be managed and how can they be logged? I didn't find this on the module page: https://www.kamailio.org/docs/modules/stable/modules/tm.html
Hello,
Thank you for replying, but I don't understand how it will help me.
I already use ds_mark_dst() and know how it works. Problem is that I can't control network errors with like this: if (network_error() || timeout()) { xlog("L_WARN", "Server $si:$sp has network problems and will be blacklisted.\n"); ds_mark_dst("IP"); }
Marat
вт, 14 сент. 2021 г. в 13:33, Henning Westerholt hw@skalatan.de:
Hello,
you probably want to check the dispatcher module docs out for this ds_mark_dst(..) function. You find also some RPC commands to e.g. inspect on shell. You can also try the event-routes documented there to log some info.
https://kamailio.org/docs/modules/stable/modules/dispatcher.html#dispatcher....
Cheers,
Henning
--
Henning Westerholt – https://skalatan.de/blog/
Kamailio services – https://gilawa.com
*From:* sr-users sr-users-bounces@lists.kamailio.org *On Behalf Of *Marat Gareev *Sent:* Thursday, September 9, 2021 8:02 PM *To:* Kamailio (SER) - Users Mailing List sr-users@lists.kamailio.org *Subject:* [SR-Users] Manage blacklisting on network errors
Hello!
I have a simple config for routing requests with failover and blacklisting on 408, 480 and 503 codes from servers.
This is a part of config:
*# Wrapper for relaying requests*
*route[**RELAY**]* {
*# the base event routes*
t_on_branch("MANAGE_BRANCH");
t_on_reply("MANAGE_REPLY");
t_on_failure("MANAGE_FAILURE");
if (!t_relay()) {
sl_reply_error();
}
*exit*;
}
*# Manage incoming replies*
*onreply_route[**MANAGE_REPLY**]* {
xlog("L_NOTICE", "$rr ($rs) [$cs] ($ci) $si:$sp - $ua\n");
if ( t_check_status("(503)|(408)|(480)") ) {
xlog("L_WARN", "Server will be blacklisted: $si:$sp ($rs)\n");
}
}
*# Manage failure routing cases*
*failure_route[**MANAGE_FAILURE**]* {
if ( !t_check_status("(503)|(408)|(480)") ) {
*exit*;
}
ds_mark_dst("IP"); *# blacklist*
if (t_is_canceled()) *exit*;
if (!ds_next_domain()) {
send_reply("503", "Service Unavailable"); *exit*;
}
*route(**RELAY**)*;
}
If there is a timeout or network error on the server side, it is blacklisted. How can such cases be managed and how can they be logged? I didn't find this on the module page:
https://www.kamailio.org/docs/modules/stable/modules/tm.html