BIG-IP DNS: Check Status Of Multiple Monitors Against Pool Member

Good day, everyone!

Within the LTM platform, if a Pool is configured with “Min 1 of” with multiple monitors, you can check the status per monitor via tmsh show ltm monitor <name>, or you can click the Pool member in the TMUI and it will show you the status of each monitor for that member.  I cannot seem to locate a similar function on the GTM/BIG-IP DNS platform.  We’d typically use this methodology when transitioning to a new type of monitor, where we can passively test connectivity without the potential for impact prior to removing the previous monitor.

Does anyone have a way through tmsh or the TMUI where you can check an individual pool member’s status against the multiple monitors configured for its pool?

Thanks, all!

Hi Cory,

Try this for your scenario:

tmsh show gtm pool a members detail | grep  -i -e “pool\|gtm\|reason”

or if need more details use this:

tmsh show gtm pool a all detail | grep -i -e ‘gtm\|pool\|member\|availability\|state\|reason\|destination\|utime\|member\|vip’

You can modify it according to your requirement.

The output will be like this

============================================================================

tmsh show gtm pool a members detail | grep  -i -e “pool\|gtm\|reason”

Gtm::Pool::A Test-rule
  Reason       : Available
  | Gtm::Pool Member: Test_proxy-rule:A Test_Box10_Test2_a_8080:10.10.10.39
  |   Reason       : Available
  | Gtm::Pool Member: Test_proxy-rule:A Test_Box10_Test2_b_8080:10.10.10.41
  |   Reason       : Available
  | Gtm::Pool Member: Test_proxy-rule:A Test_Box10_Test2_c_8080:10.10.10.40
  |   Reason       : Available
  | Gtm::Pool Member: Test_proxy-rule:A Test_Box20_Test2_a_8080:10.10.11.39
  |   Reason       : Available
  | Gtm::Pool Member: Test_proxy-rule:A Test_Box20_Test2_b_8080:10.10.11.41
  |   Reason       : Available
  | Gtm::Pool Member: Test_proxy-rule:A Test_Box20_Test2_c_8080:10.10.11.40
  |   Reason       : Available
Gtm::Pool::A test_wideIp
  Reason       : No enabled pool members available
  | Gtm::Pool Member: test_wideIp:A ptetest_wideIp-primary:10.10.10.36
  |   Reason       :  Monitor /Common/gateway_icmp from 10.x.24y.13 : state: timeout
  | Gtm::Pool Member: test_wideIp:A test_wideIp-primary:10.10.10.242
  |   Reason       :  Monitor /Common/gateway_icmp from 10.10.10.13 : state: timeout
Gtm::Pool::A test_wideIp.USA
  Reason       : Available
  | Gtm::Pool Member: test_wideIp.USA:A Bostonc.USA:Bostonc.USA
  |   Reason       : Available
  | Gtm::Pool Member: test_wideIp.USA:A Bostone.USA:Bostone.USA
  |   Reason       : Available
Gtm::Pool::A Amazon_fileshare
  Reason       : No enabled pool members available
  | Gtm::Pool Member: Amazon_fileshare:A pteAmazon_fileshare-primary:10.11.12.102
  |   Reason       :  Monitor /Common/gateway_icmp from 10.20.27.23 : state: timeout
  | Gtm::Pool Member: Amazon_fileshare:A Amazon_fileshare-primary:10.10.11.12
  |   Reason       :  Monitor /Common/gateway_icmp from 10.28.247.23 : state: timeout
Gtm::Pool::A Test_PRD
  Reason       : Available
  | Gtm::Pool Member: Test_PRD:A wtg_M_VIP:10.10.10147
  |   Reason       :  Monitor /Common/tcp from 10.28.247.10 : state: connect failed
  | Gtm::Pool Member: Test_PRD:A wtg_STest_USA_VIP:10.26.17.26
  |   Reason       : Available
Gtm::Pool::A Test_USA-vip
  Reason       : No enabled pool members available
  | Gtm::Pool Member: Test_USA-vip:A Test_USA-vip-mTest_USA:10.12.3.27
  |   Reason       :  Monitor /Common/tcp from 10.28.247.10 : state: timeout
  | Gtm::Pool Member: Test_USA-vip:A Test_USA-vip-sTest_USA:10.16.9.27
  |   Reason       :  Monitor /Common/tcp from 10.28.27.10 : state: timeout: disabled directly
Gtm::Pool::A DFlipcart_dev
  Reason       : Available
  | Gtm::Pool Member: DFlipcart_dev:A DFlipcart_dev_bck:10.16.25.21
  |   Reason       :  Monitor /Common/http-head-DFlipcart-api-diagnostics-ishealthy from 10.18.27.10 : connect: timeout search result false: disabled
  | Gtm::Pool Member: DFlipcart_dev:A DFlipcart_dev_bck_new1:10.16.25.21
  |   Reason       : Available
  | Gtm::Pool Member: DFlipcart_dev:A DFlipcart_dev_bck_new:10.10.150.55
  |   Reason       :  Monitor /Common/none from <unknown> : no reply from big3d: timed out: disabled directly
  | Gtm::Pool Member: DFlipcart_dev:A DFlipcart_dev_pri:10.12.14.33
  |   Reason       : Available: disabled directly
  | Gtm::Pool Member: DFlipcart_dev:A DFlipcart_dev_pri_new:10.12.20.21
  |   Reason       :  Monitor /Common/http-head-DFlipcart-api-diagnostics-ishealthy from 10.28.247.10 : connect: protocol mismatch search result false
Gtm::Pool::A DFlipcart_prod
  Reason       : Available
  | Gtm::Pool Member: DFlipcart_prod:A /PROD/vs_wb_DFlipcart_prd:Test2_LTMs
  |   Reason       : Available
  | Gtm::Pool Member: DFlipcart_prod:A DFlipcart_sTest_USA:10.10.13.14

============================================================================

Here are many more commands for other purpose i keep trying and experimenting, for that you have to be good in GREP :

The following command will find pools with a return to DNS option and print the name of the pools.

tmsh -c ‘cd /; list gtm pool recursive all-properties one-line’ | awk ‘/return-to-dns/{print $4}’

My Other GTM master Commands which i use frequently and keep customizing them based on the requirement

My Other GTM master Commands you can try to get more results of your choice

bash mode

netstat -na |grep 4353

tmsh list /gtm server all

tmsh list gtm wideip a one-line
tmsh list gtm wideip aaaa one-line
tmsh show gtm wideip a detail
tmsh show gtm wideip a pools
tmsh show gtm wideip a all

tmsh show gtm listener
tmsh show gtm listener all-properties

tmsh show gtm pool a detail
tmsh show gtm pool a detail field-fmt
tmsh show gtm pool a members detail
tmsh show gtm pool a members fireld-fmt
show gtm pool a members field-fmt server

tmsh show gtm pool a members detail | grep -i -e Gtm::Pool::A | grep -i -e ‘GTM\|Pool’ | grep -i -e ‘GTM\|Virtual’

tmsh show gtm wideip a all detail | grep -i -e ‘wideip\|Destination’

show gtm pool a members detail | grep -i -e ‘GTM\|Virtual’

tmsh show gtm pool a members detail | grep -i -e ‘GTM\|Virtual’

tmsh show gtm pool a members detail | grep -i -e ‘GTM\|Virtual’ |  grep -i -e  monitor

tmsh show gtm pool a members detail | grep -i -e ‘GTM\|Virtual’ |  grep  -i -e “pool\|gtm\|reason”

tmsh show gtm pool a members detail | grep  -i -e “pool\|gtm\|reason”

tmsh show gtm pool a members detail | grep -i -e ‘GTM\|Virtual’ |  grep  -i -e “pool\|gtm\status\|reason”

tmsh show gtm pool a members detail | grep -i -e ‘GTM\|Virtual’ |  grep  -i -e “reason”

tmsh show gtm pool a members detail | grep -i -e ‘GTM\|Virtual’ |  grep  -i -e “pool\|gtm\|reason”

tmsh show gtm pool a members detail | grep -i -e ‘GTM\|Virtual’  |  grep  -i -e -r  “reason"

list ltm pool members | grep ‘^ltm\|:\|priority’

tmsh show gtm pool a members detail | grep ‘^gtm\|:\|reason’

tmsh show gtm pool a members detail grep monitor

tmsh show gtm pool a members detail | grep -i -e  monitor

tmsh show gtm pool a members detail | grep -i -e ‘GTM\|Virtual’ |  grep -i -e  monitor

tmsh show gtm pool a members detail | grep -i -e ‘GTM\|Pool’ |  grep -i -e  monitor

tmsh show gtm pool a members detail | grep -i -e

tmsh show gtm pool a members detail | grep -e -i  “Gtm\Pool” | grep -i -e “pool\|gtm\|reason”

tmsh show gtm pool a members detail | grep -i -e " pool\|destination\|reason"

tmsh show gtm pool a members detail | grep -i -e ‘GTM\|Virtual’

tmsh show gtm pool a members detail | grep -i -e ‘GTM\|Pool’ | grep -i -e ‘GTM\|Virtual’ | grep -i -e " pool\|destination\|reason"

tmsh show gtm pool a members detail | grep -i -e ‘GTM\|Pool’ | grep -i -e ‘GTM\|Virtual’ | grep -i -e " reason"

tmsh show gtm pool a members  field-fmt | grep -i -e ‘GTM\|Virtual’ | grep -i -e " pool\|destination\|reason"

tmsh show gtm pool a members  field-fmt | grep -i -e ‘GTM\|Virtual’ | grep -i -e " pool\|destination\|reason"

tmsh show gtm pool a members  field-fmt | grep -i -e “GTM\|Pool”

tmsh show gtm pool a members detail grep

tmsh show gtm server all detail
tmsh show gtm server detail virtual-servers
tmsh show gtm server detail virtual-servers field-fmt
tmsh list gtm server addresses virtual-servers

tmsh show gtm server detail
tmsh show gtm server detail all

tmsh list net self all-properties
tmsh list gtm listener all-properties
tmsh list gtm listener vlans

tmsh show sys ip-address all-properties

tmsh show gtm wideip A all detail | grep ‘WideIp\|Destination’

tmsh show gtm all detail | grep -e -i Gtm::Server -e “Server”

tmsh show gtm wideip a all detail | grep -e -i -n NAME_OF_YOUR_GTM_SERVE

tmsh show gtm wideip a all detail | grep -i -e Gtm::Pool::A grep -i -e ‘Pool\|Destination’

tmsh show gtm wideip a all detail | grep -i -e Gtm::Pool::A grep ‘Pool\|Destination’

tmsh show gtm wideip a all detail | grep -i -e Gtm::Pool::A | grep -i -e ‘Pool\|Destination’ grep -i -e ‘Pool\|Destination’

tmsh show gtm wideip a all detail | grep -i -e ‘wideip\|Destination’ grep -i -e Gtm::Pool::A grep -i -e ‘Pool\|Destination’

only one pipe

tmsh show gtm wideip a all detail | grep -i -e ‘wideip\|Destination’ grep -i -e Gtm::Pool::A grep -i -e ‘Pool\|Destination’

tmsh show gtm wideip a all detail | grep -i -e ‘wideip\|Destination’ grep -i -e ‘Pool\|Destination’ grep -i -e NAME_OF_YOUR_GTM_SERVER

tmsh show gtm wideip a all detail | grep -i -e ‘wideip\|Destination’ grep -i -e ‘Pool\|Destination’ grep -i -e NAME_OF_YOUR_GTM_SERVER

tmsh show gtm wideip a all detail | grep -i -e ‘^gtm’ grep -i -e ‘wideip\|Destination’ grep -i -e ‘Pool\|Destination’ grep -i -e ‘NAME_OF_YOUR_GTM_SERVER$’

tmsh show gtm wideip a all detail | grep -i -e ‘^gtm’ grep -i -e ‘wideip\|Destination’ grep -i -e ‘Pool\|Destination’ | grep -i -e ‘^NAME_OF_YOUR_GTM_SERVER$’ = No results

tmsh show gtm wideip a all detail | grep -i -e ‘^gtm’ grep -i -e ‘wideip\|Destination’ grep -i -e ‘Pool\|Destination’ grep -i -e ‘\^NAME_OF_YOUR_GTM_SERVER$’

tmsh show gtm wideip a all detail | grep -i -e ‘^gtm’ grep -i -e ‘wideip\|Destination’ grep -i -e ‘\^NAME_OF_YOUR_GTM_SERVER$’

tmsh show gtm wideip a all detail | grep -i -e ‘^gtm’ grep -i -e ‘^NAME_OF_YOUR_GTM_SERVER$’

tmsh show gtm wideip a all detail | grep -i -e ‘^NAME_OF_YOUR_GTM_SERVER$’

tmsh show gtm wideip a all detail | grep -i -e ‘wideip\|Destination’ grep -i -e ‘Pool\|Destination’ grep -i -e ‘\NAME_OF_YOUR_GTM_SERVER’

tmsh show gtm wideip a all detail | grep -i -e ‘wideip\|Destination’ grep -i -e ‘Pool\|Destination’ grep -e -i Gtm::Server -e “Server” grep -i -e ‘\NAME_OF_YOUR_GTM_SERVER’

tmsh show gtm wideip a all detail | grep -i -e ‘wideip\|Destination’ grep -i -e ‘Pool\|Destination’ grep -e -i Gtm::Server -e “Server”

tmsh show gtm wideip a all detail | grep -i -e ‘wideip\|Destination’ grep -i -e ‘Pool\|Destination’ grep -e -i Gtm::Server -e “Server” grep -i -e ‘$NAME_OF_YOUR_GTM_SERVER’

tmsh show gtm wideip a all detail | grep -i -e ‘wideip\|Destination’ grep -i -e ‘Pool\|Destination’ grep -e -i Gtm::Server -e “Server” grep -i -e ‘$*NAME_OF_YOUR_GTM_SERVER’ -C 2

tmsh show gtm wideip a all detail | grep -i -e ‘$*NAME_OF_YOUR_GTM_SERVER’ -C 1

tmsh show gtm wideip a all detail | grep -i -e ‘$*15*’ -C 1

tmsh show gtm wideip a all detail | grep -i -e ‘$*gtm*’ -C 3 grep -i -e ‘$*NAME_OF_YOUR_GTM_SERVER’

tmsh show gtm wideip a all detail | grep -i -e ‘$*gtm*’ grep -e -i NAME_OF_YOUR_GTM_SERVER

HTH

:folded_hands:

Thank you for your response @F5_Design_Engineer ; I appreciate it!  Sadly, it seems the system is limited in it’s response.

The typical output of “tmsh show gtm pool a %MY_POOL% members detail” only shows a simple up/down status with a reason of one monitor.  What I’m looking for is to track the status of MULTIPLE independent monitors against a Pool member, when the monitor is configured as a “min 1 of” several monitors.

The use case would be to be able to test a new monitor against a pool in parallel with what exists in production, all the while not impacting production with the test.  As I mentioned, the LTM platform allows you to do this by running a tmsh show against a specific monitor, but in gtm it appears this is not an option.

I hope that helps to explain it better, and I really appreciate your assistance!

-C

Hello Cory_O,

did you ever find away to show the individual monitor status when using F5 DNS? I have the same issue.

Hi @RemcoA !

Sadly, no.  I couldn’t find a holistic way to individually validate multiple Monitors against members within a single Pool.

The workaround that I’ve resorted to is essentially standing up one or more temporary Pool object(s) in parallel where I could assign the other Monitor(s).  I configure it identically to the original Pool, but with the new Monitor, then I verify status.  If all shows clean and green, I apply the new Monitor to the original Pool and delete the temporary Pool and original Monitor.  This use case can also be left in place for the long term if you suspect a specific Monitor is marking something down.  All you’d have to do is check the Pool with the suspect Monitor.

It’s certainly not a perfect solution, but it works!  HTH

-C