At Tableau, our mission is to help people see and understand data, including data from Tableau services—a process we call “using Tableau on Tableau.” In the spirit of self-service, we are proud to announce the release of TabMon, our open source cluster monitor for Tableau Server.

You can use TabMon to monitor physical (CPU, RAM), network, and hard-disk usage. You can track cache-hit ratio, request latency, active sessions, and much more.

TabMon records system health and application metrics out of the box. It collects built-in metrics like Windows Perfmon, Java Health, and Java Mbean (JMX) counters on Tableau Server machines across a network. It displays the data in a clean, unified structure, making it easy to visualize the data in Tableau Desktop.

Selected counters collected by TabMon

TabMon gives you full control over which metrics to collect and which machines to monitor, no scripting or coding required. All you need to know is the machine and the metric name. TabMon can run both remotely and independently of your cluster. You can monitor, aggregate, and analyze the health of your cluster(s) from any computer on your network with almost no added load to your production machines.

TabMon is community-supported, and we are releasing the full source code under the MIT open source license. We hope you'll add your own contributions to this tool. We are excited to see where you take it.

Download TabMon, read our installation guide, and visit the Tableau Server Admin Community page to join the discussion. You can also download the source on the TabMon GitHub page.


This is awesome! Been waiting for something like this for ages!

Hi Michael ,Its really awesome tool for the Tableau Community.
But I would like to have clarification here.If we have More JMX counters ,will that affect the performance by any chance.

Hi Michael Chen, I just tried to add second host into TabMon.Config file but dashboard only show one machine, how to show all machines? (I even installed TabMon on all machines)

It works only one machine, please advise, thanks

It can't be started and I got the following error:

2016-05-03 12:43:09,094 [5] INFO Topshelf.Runtime.Windows.WindowsServiceHost - [Topshelf] Started
2016-05-03 12:43:09,094 [6] INFO TabMon.Sampler.CounterSampler - Polling..
2016-05-03 12:43:09,109 [6] FATAL Topshelf.Runtime.Windows.WindowsServiceHost - The service threw an unhandled exception
System.ArgumentException: Cannot set column 'machine'. The value violates the MaxLength limit of this column.
at System.Data.DataColumn.CheckMaxLength(DataRow dr)
at System.Data.DataTable.RaiseRowChanging(DataRowChangeEventArgs args, DataRow eRow, DataRowAction eAction, Boolean fireEvent)
at System.Data.DataTable.SetNewRecordWorker(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge, Boolean suppressEnsurePropertyChanged, Int32 position, Boolean fireEvent, Exception& deferredException)
at System.Data.DataTable.InsertRow(DataRow row, Int64 proposedID, Int32 pos, Boolean fireEvent)
at TabMon.Sampler.CounterSampler.SampleAll()
at TabMon.TabMonAgent.Poll(Object stateInfo)
at System.Threading.TimerQueueTimer.CallCallbackInContext(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.TimerQueueTimer.CallCallback()
at System.Threading.TimerQueueTimer.Fire()
at System.Threading.TimerQueue.FireNextTimers()
at System.Threading.TimerQueue.AppDomainTimerCallback()

someone said "The reason that column is limited to 16 is because the max NETBIOS computer name length in Windows is 15 characters."
I'd like to know how to fix it?

2017-04-27 13:19:30,093 [5] INFO TabMon.Config.TabMonConfigReader - Loading TabMon user configuration..
2017-04-27 13:19:30,155 [5] DEBUG TabMon.Config.TabMonConfigReader - Loading database configuration..
2017-04-27 13:19:30,171 [5] INFO TabMon.Config.TabMonConfigReader - Connecting to results database..
2017-04-27 13:19:32,952 [5] FATAL TabMon.Config.TabMonConfigReader - Could not initialize writer: Failed to establish a connection to 'localhost'.
2017-04-27 13:19:32,952 [5] DEBUG TabMon.Helpers.HostnameHelper - Successfully resolved 'localhost' to 'AAAAAAAAAAA'.
2017-04-27 13:19:32,968 [5] FATAL TabMon.Config.TabMonConfigReader - Invalid options in configuration: [Host='Primary\AAAAAAAAAA', Writer='null', PollInterval='60', TableName='countersamples']
2017-04-27 13:19:32,968 [5] INFO TabMon.TabMonAgent - Initializing TabMon..
2017-04-27 13:19:32,968 [5] FATAL TabMon.TabMonAgent - Invalid TabMon options specified!
2017-04-27 13:19:32,968 [5] FATAL Topshelf.Runtime.Windows.WindowsServiceHost - The service did not start successfully
Topshelf.TopshelfException: The service did not start successfully (returned false).
at Topshelf.Runtime.Windows.WindowsServiceHost.OnStart(String[] args)
2017-04-27 13:19:33,140 [1] ERROR Topshelf.HostFactory - The service terminated abnormally
System.NullReferenceException: Object reference not set to an instance of an object.
at TabMon.TabMonAgent.Dispose(Boolean disposing)
at TabMonService.TabMonServiceBootstrapper.Dispose(Boolean disposing)
at TabMonService.TabMonServiceBootstrapper.Dispose()
at Topshelf.Builders.ControlServiceBuilder`1.ControlServiceHandle.Dispose()
at Topshelf.Runtime.Windows.WindowsServiceHost.Dispose(Boolean disposing)
at System.ComponentModel.Component.Dispose()
at System.ServiceProcess.ServiceBase.Run(ServiceBase[] services)
at System.ServiceProcess.ServiceBase.Run(ServiceBase service)
at Topshelf.Runtime.Windows.WindowsServiceHost.Run()
at Topshelf.HostFactory.Run(Action`1 configureCallback)

When I try to start the TabMon I am getting the above error.Please guide me in solving this.

Thank you.

Subscribe to our blog