Forum Discussion
About script
Hello,
I want to make a script that sends alerts to /var/log/ltm every minute when the pool is not up.
Here is the script I designed:
modify script pool_script {
app-service none
definition {
set errorcode [catch {exec tmsh show ltm pool | grep Ltm | awk {{ print $(NF-2) }}} result]
set result [split $result "\n"]
tmsh::log_dest file
tmsh::log_level debug
foreach i $result {
set pool "[lindex $i 1]"
if { [tmsh::show ltm pool] contains "Availability : available" } then {
} else {
tmsh::log debug "F5 Pool:${pool} Status -> Not available."
}
}
}
description none
events none
}
I thought it worked, but then I realized that the log only appears when the first pool doesn't start as it should.
Please tell me how to change my script...
Any help is appreciate.
Hi MIchaelyang,
check the iCall script below to get a picture how to LTM configs could be enumerated with foreach loops. No need to [exec] native BASH commands... 😉
sys icall handler periodic check_pool_state { interval 120 script check_pool_state } sys icall script check_pool_state { app-service none definition { tmsh::log_dest file tmsh::log_level debug foreach temp(pool_config) [tmsh::get_config /ltm pool] { set temp(pool_name) [tmsh::get_name $temp(pool_config)] if { [tmsh::show /ltm pool $temp(pool_name)] contains "Availability : available" } then { # Everything is fine... } else { tmsh::log debug "Pool Check: $temp(pool_name) is unhealthy" } } } description none events none }
Cheers, Kai
Hi MIchaelyang,
check the iCall script below to get a picture how to LTM configs could be enumerated with foreach loops. No need to [exec] native BASH commands... 😉
sys icall handler periodic check_pool_state { interval 120 script check_pool_state } sys icall script check_pool_state { app-service none definition { tmsh::log_dest file tmsh::log_level debug foreach temp(pool_config) [tmsh::get_config /ltm pool] { set temp(pool_name) [tmsh::get_name $temp(pool_config)] if { [tmsh::show /ltm pool $temp(pool_name)] contains "Availability : available" } then { # Everything is fine... } else { tmsh::log debug "Pool Check: $temp(pool_name) is unhealthy" } } } description none events none }
Cheers, Kai
Hi Michaelyang,
on a quick view: You are not passing $pool to the "tmsh::show ltm virtual" command...
Cheers, Kai
- MichaelyangCirrostratus
Hi Kai_Wike,
Sorry, I sent the wrong one
I've updated it...As i said... you are not passing the $pool variable into the the "tmsh::show ltm virtual" command. In this case you check if a single pool of all your pools is available. It should be "tmsh::show ltm virtual $pool"
Beside of this the [exec] part can be avoided... Give me a sec to give you a quick coding how to access and enumerate LTM configurations within TMSH scripts...
Cheers, Kai
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com