iRule: Logging lb failures

The question here was how to log a lb failure (no nodes available) but not on every connection. It would preferably log an error every 50 lb failures.

unRuleY responded with the following rule that will go a step further and create an array that will store counters for each pool. And then, for each pool, it will log only on the 50th lb failure.

when RULE_INIT {
   # Initialize the counter to 0.
   array set ::log_ctr { }
}
when LB_FAILED {
   if { [LB::server addr] eq "" } {
      set pool [LB::server]
      if { not [info exists ::log_ctr($pool)] or $::log_ctr($pool) >= 50 } {
         log "No nodes available - pool $pool"
         set ::log_ctr($pool) 0
      } else {
         incr ::log_ctr($pool)
      }
   }
}

Click here for the original thread.

 

[Listening to: The Hanging Garden - The Cure - Staring at the Sea: The Singles (04:22)]
Published Jul 27, 2005
Version 1.0
No CommentsBe the first to comment