TempDB Log File Growth - questions
Why might the tempdb log grow
The usual suspect for delaying tempdb log file truncation is a long-running transaction.  You can run a query like this, while the problem is occurring, to see why the log can't be truncated:
SELECT log_reuse_wait, log_reuse_wait_desc 
FROM sys.databases d 
WHERE database_id = 2;

The reasons are described on this MS docs page.
Monitoring and alerting
Questions 2 - 5 can all be solved by buying a dedicated monitoring tool (like Sentry One or SolarWinds, etc).
You can certainly accomplish all of these things with &quot;home grown&quot; methods, but they will inevitably have gaps and failures that the monitoring tool vendors have had years to think of and address.
For instance, you can use Extended Events (XE) to monitor for file growth events - Aaron Bertrand has a post about doing that with the sqlserver.database_file_size_change event here: Removing the default trace – Part 2.
To alert on file growths, you could have a SQL Agent job that queries this event data (either directly, or through Aaron's views) periodically, like every 1 / 5 / 15 minutes, and then emails you if there have been any in that time frame.
Getting the space used inside data and log files, as well as disk space used / available, is discussed in a different Q&amp;A on this site, so I won't duplicate it here: Query to report disk space allocation and used space
Again, the low-tech way of alerting on this would likely be through an Agent job.
SQL Server doesn't keep a log of who or what was using tempdb at a given time - you'd have to write DMV query results to a table, check them periodically, etc.
Current tempdb usage
This is included in the results of sp_WhoIsActive.  You might consider using that directly, or at least basing the calculation on the relevant part of that proc.
You'll need to add together user_objects_alloc_page_count and internal_objects_alloc_page_count (which includes LOB variables and spills), then subtract to the dealloc version of both for the &quot;current&quot; state of things.
You'll note that sp_WhoIsActive also includes the data from dm_db_task_space_usage for this, as some allocations will show up there and not in the other view.  You can see a detailed example on my blog, where a LOB parameter being streamed from a .NET application will show up in this view: Invisible tempdb Killer