Technical Forum
Ask questions. Discover Answers.
cancel
Showing results for 
Search instead for 
Did you mean: 

Multiple health monitors to pool

Ed_Carpon_13196
Nimbostratus
Nimbostratus

Has anyone modified an iApp to include an option to add multiple health monitors to one pool? If so, can you please provide examples of how you did this?

 

1 ACCEPTED SOLUTION

Fred_Slater_856
Historic F5 Account
12 REPLIES 12

nathe
Cirrocumulus
Cirrocumulus

Ed - yeah that's possible. You just need to disable Strict Updates, else it will complain and won't let you make the change.

 

If you do go back into the iApp and amend anything in here, under Reconfigure, then any custom changes like this are reset.

 

N

 

Fred_Slater_856
Historic F5 Account

Don't disable strictness. Re-code your iApp! In presentation, change your "choice" to a "multichioce", for example:

 

multichoice reuse_monitor_name display "xlarge" tcl { 
    tmsh::run_proc f5.app_utils:get_ltm_monitors_filter http https tcp 
}

and in implementation, change the tmsh statement to add your list of monitors, separated by the word "and". For example:

set monitor_name [list \
        [join $::server_pools__reuse_monitor_name " and "]]

 

I appreciate the help but i cannot seem to get this working how you stated. I am attempting to duplicate the f5 HTTP template. Below is what I am editing from the presentation section. optional ( create_new_monitor == "Use Monitor..." ) { choice reuse_monitor_name display "xlarge" tcl { package require iapp 1.0.0 return "[iapp::get_items ltm monitor http]\n[iapp::get_items ltm monitor https]" Just doing this does not change how it looks when you select the edited iApp template.

If you replace the keyword "choice" with "multichoice", do you see the change in presentation?

No I do not.

Thanks for that Fred, a lot better way of doing things.

Fred_Slater_856
Historic F5 Account

A simple change to the implementation will allow existing monitors to work. Replace:

 

        1,0,1 { monitor $::monitor__monitor }
        1,0,0 { monitor $::monitor__monitor }
with:
        1,0,1 { monitor [join $::monitor__monitor " and "] }
        1,0,0 { monitor [join $::monitor__monitor " and "] }

The "Create a new HTTP monitor" option is trickier to mix with the others, and would take more code changes.

 

Awesome this works. If you select 'Create a new HTTP monitor' from the options it looks like it doesnt actually prompt like before. Is there a way to get that back in addition to having the multichoice? Appreciate all of the help.

Easiest way is probably to split the questions. First ask if the user wants to "Create New" or "Select from existing", then show the multichoice only if the user selects " from existing".

I was able to create the separate question successfully in the presentation section, but it looks like I am still having issues in the Implementation section for monitor1. Presentation section monitor { multichoice monitor display "xxlarge" tcl { package require iapp 1.0.0 set choices "[iapp::get_items ltm monitor http]\n[iapp::get_items ltm monitor https]\n[iapp::get_items -filter NAME != "external" ltm monitor external]" return $choices } choice monitor1 display "xxlarge" default "/create_new" tcl { package require iapp 1.0.0 set choices "/create_new" return $choices } optional ( ssl_encryption_questions.help == "max" ) { message monitor_max } optional ( monitor1 == "/create_new" ) { optional ( ssl_encryption_questions.legacy_advanced == "yes" || ssl_encryption_questions.advanced == "yes" ) { string frequency display "medium" required default "30" optional ( ssl_encryption_questions.help == "max" ) { message freq_max } choice http_method display "xxlarge" default "GET" optional ( ssl_encryption_questions.help == "max" ) { message method_max } } Implementation 1,1,1 { monitor1 [iapp::conf create ltm monitor $http_or_https \ ${app}_${http_or_https}_monitor \ defaults-from $http_or_https \ interval $::monitor__frequency \ timeout [expr { $::monitor__frequency * 3 + 1 } ] \ [expr { [iapp::is ::monitor__anonymous "no"] ? \ "username $::monitor__user password $::monitor__passwd" : "" }] \ send [iapp::substa send_string_arr($advanced,$http11,$http_post)]\ recv '$::monitor__response'] } 1,1,0 { monitor1 [iapp::conf create ltm monitor $http_or_https \ ${app}_${http_or_https}_monitor \ defaults-from $http_or_https \ interval 30 \ timeout 91 \ send [iapp::substa send_string_arr($advanced,$http11,$http_post)]\ recv '$::monitor__response'] } 1,0,1 { monitor1 [join $::monitor__monitor " and "]} 1,0,0 { monitor1 [join $::monitor__monitor " and "]} * { monitor1 none }

Fred_Slater_856
Historic F5 Account

I posted my version of this multi-monitor template at https://community.f5.com/t5/codeshare/http-template-with-multiple-monitors/ta-p/278393

 

RCANTOLLAS
Nimbostratus
Nimbostratus

If you want multiple pool use the " and " command

See below sample :

modify ltm pool POOL_NAME CREATED_MONITOR_1 and CREATED_MONITOR_1 ---> TO MODIFY POOL

create ltm pool POOL_NAME CREATED_MONITOR_1 and CREATED_MONITOR_1 ----> NEWLY CREATED POOL

 

Hope it will help you