Forum Discussion

Cory_O's avatar
Cory_O
Icon for Cirrus rankCirrus
Apr 26, 2024

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

    🙏

     

    • Cory_O's avatar
      Cory_O
      Icon for Cirrus rankCirrus

      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