My preferred solution would be to monitor a lightweight URL (portal page or simple workbook) every 5 min or so via a script and log the success/failure of that to a file and calculate the uptime based on that.
Not really an uptime solution, but having your Tableau Server admin scripts log to a file when they are executed can be pretty useful info...
@echo %date% %time%,%~n0 >> "C:\Tableau Scripts\log\TabServer_scriptlog.csv"
Log content will be like:
Sat 09/01/2017 18:30:00.01,TabServer_STOP
Sat 09/01/2017 18:40:00.05,TabServer_Ziplogs
Sat 09/01/2017 19:30:00.05,TabServer_START