Use the Logs: Tableau Server Log Analytics – Part 3

Week 3: VizQL


While the Apache/httpd log may be the most interesting of the Tableau Server log files, the VizQL logs are equally impressive simply because they are JSON formatted. The depth of information one can gather from these logs provides a very real-time look into the happenings of one’s Server environment.  You can find anything from the dimensions of a dashboard as it renders on a client machine to the amount of rows returned by a Tableau Server data source for each user. And, the most valuable part, well at least one of them, is the req part of the payload which links to the Apache logs.

Understanding total query time by user on Tableau Server
  • ts:
  • pid:
  • tid:
  • sev:
  • req:
  • sess:
  • site:
  • user:
  • k:
  • v:

The above list shows the payload for the log and, from that, you can confidently understand your Tableau Server. What’s more, in combination with a Log Analytics tool, you can easily query the log to get a more detailed sense of, for example, how long a query takes to execute for each user.

where(k=”end-query”) groupby(user) calculate(percentile(90):v.elapsed) sort(desc)


Where’s the Log

From the Tableau Server admin guide:

The Tableau Server log directory is C:\ProgramData\Tableau\Tableau Server\data\tabsvc\logs if you installed Tableau Server on drive C, unless otherwise noted in the table below.

VizQL, then, is in the folder: vizqlserver\logs. Note the difference here as we’re directly in the vizqlserver directory.

What does it do for me?

A lot.

Tableau Server Resource Manager data. Very valuable.

But there’s so much more. Some things (but not all) we watch for:

  • Resource Issues (CPU/Memory) by process (very important)
  • Workbook load time > 10 seconds
  • Average query time
  • Average query time by site/user/time of day
  • Query execution > 10/20/60 seconds (these alerts go directly to Slack)
  • Rows returned by user/site/time of day
  • Sev=FATAL

 For example, if you’re using a log analytics tool, you might be able to run a query like this:

where(k=”read-metadata” AND v.attributes.dbname=”<some data source>”) calculate(sum:v.elapsed)

Analyzing meta-data read time for a data source

With the above query, we can get information on how long it takes to read a data sources meta-data across time.

Keep in mind, this is also how you’d want to leverage both alerting and tagging with your log analytics tool; if query time is consistently high and a dashboard consistently takes a long time to load, then this is a learning opportunity for your users.

I’ve talked about many ways you can start to aggregate these metrics and distribute a daily or weekly summary to your users. If a workbook loads slowly, it’s time to re-train and re-focus the Tableau design and analytics. Most of the time, users aren’t even aware there is a performance issue!

Performance by Sheet on Tableau Server (probably the biggest indicator of poor performance)


What should I be Alerted on?

Only those alerts which would require you to take immediate action. Namely, these two:

  • SEV=Fatal
  • “end-update-sheet” > 60 seconds

Since this log is JSON formatted, it’s pretty much up to you as to what you need to look for (or be alerted on). I can say, however, there is plenty of valuable information in this log that provides the answer to the most common Tableau Server question: Why does my dashboard take so long to load?


Summarized version of a parsed log file. Giving hourly/daily performance data


One thought on “Use the Logs: Tableau Server Log Analytics – Part 3

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s