Week 3: VizQL
Intro
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.

- 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.

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)

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!

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?

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