4 Replies Latest reply on Oct 20, 2017 12:44 PM by Jody Bossle

    How does TabMon poll?

    Jody Bossle

      I have read all of the on-line documentation and posts related to TabMon and understand what is polled and how to control the polling.  My question is HOW does TabMon actually poll a host/cluster?  Is it polling the Tableau repository audit data or the actual processes running on the server?  If the application is monitoring the actual processes running on the server and I change the polling frequency from 1 minute to 5 minutes won't I lose details by changing to a higher "grain"?

        • 1. Re: How does TabMon poll?
          Justin Mangue

          Hey Jody,


          Great questions..  I'll do my best to give an overview here, but let me know if you have any clarifying questions or want additional details.  Some of this will be review for you but I want to provide a full explanation in case it helps other who may have similar questions.


          TabMon does not pull data from Repository at all.  There are currently two core types of counters TabMon samples:


          1. PerfMon counters exposed by the host Windows OS.  Based on your credentials from your GitHub post, I'm guessing you are very familiar with these    For the sake of performance, connections to these counters are established at TabMon startup, with the exception of the counters labelled "ephemeral" in Counters.config which are queried every polling cycle.  This "ephemeral" process concept is useful for monitoring certain types of processes which are frequently spawned & destroyed during the lifetime of the application.

          2.  MBean counters exposed by certain Tableau Server processes.  These are application-specific counters that vary from version to version.  This feature has to be manually enabled on Tableau Server using the instructions in Enable the JMX Ports.  Once enabled, each process exposes it's own Java Management Extensions port.  You can connect to these manually using a tool like Java Mission Control or JConsole to see what's there.  At startup, TabMon looks for these RMI ports on each configured host by scanning the configured JMX port ranges specified in Counters.config.  These port ranges always start from a base port and have one port per process, so for example if you have 4 VizqlServer processes on your host and the base VizqlServer JMX port is 9400, then JMX will be running on ports 9400, 9401, 9402, and 9403.


          Each polling cycle, TabMon loops through and does the following for each configured host (from TabMon.config).


          1. Sample all persistent PerfMon counters that were discovered at service startup

          2. Query for the presence of any "ephemeral" PerfMon counters, and sample each one that is found.

          3. Query for the configured JMX counters on each JMX port that was discovered at service startup, and sample each one that is found.


          Once polling each host is complete, TabMon will then drop any expired data from it's results database (in accordance with the data purge threshold in TabMon.config) and write out all of the new data samples.


          By changing the polling frequency from 1 minute to 5 minutes, you will indeed lose some granularity.  It is up to you to figure out the trade-off between fine-grained data and data volume for your use case.  If you're analyzing data captured from a short window of time, then a shorter polling interval (like 30 seconds) is probably more useful; if you intend to leave TabMon running for weeks or months for historic tracking and capacity planning, a slower polling cycle (such as 5 minutes) is probably adequate.


          Hope that helps,


          2 of 2 people found this helpful
          • 2. Re: How does TabMon poll?
            Jeff Strauss

            Hey Justin.  I forget, for the time grain that you have, does it do a sum or avg?

            • 3. Re: How does TabMon poll?
              Justin Mangue

              Hey Jeff,


              TabMon is just grabbing and persisting the raw value at the time of polling.  For the PerfMon counters this translates to whatever the value happened to be when the sample was taken.  The JMX counters vary a bit; many are cumulative values over the lifetime of the process, which prevents data loss at larger polling intervals but means you have to diff the value against the previous sample to use them.


              All of the aggregation is done at the workbook level in the TabMon sample workbook.. for PerfMon, in most cases we average the samples over time.  For the JMX counters that are cumulative from the start of the process, we are using table calcs to compute the difference from the last sample (which is why occasionally a value will dip into the negative if its underlying process is recycled).

              • 4. Re: How does TabMon poll?
                Jody Bossle

                One other question, somewhat related:  It looks like TabMon is using GMT when logging metrics rather than the time zone defined on the server.  Is this true and can this be changed?  Our servers are running in US Mountain time (GMT – 6:00)




                Joseph A. Bossle III, “Jody”

                Sr. Technical Consultant / Global Information Technology

                Baxter International Inc.

                One Baxter Parkway / Deerfield, Illinois 60015

                T 224.270.3563  /  M 630.650.9413