Logging of module loads

During week 16 (13th to 17th of April) the department of Mathmatics will start to log the loading of modules from our software repository.  

During week 16 (13th to 17th of April) the department of Mathmatics will start to log the loading of modules from our software repository.  This logging will include the callers username, the application name, and the version checked out.  Only the loading of the module will be logged, not unloading, querying, listing or similar events, and the use of the software itself will not be logged.  If you wish to avoid the logging of your module load from taking place you can set the environment variable MODULE_PRIVATE to a true value (typically ‘1’).  Examples of setting this will follow later in this document.
The main purpose for this policy is to enable the sysadmin staff to track what modules are being used and which ones are stale.  This should allow us to clean out unused modules in a timely fashion, as well as reach individuals who use old versions of software for one reason or another and see about the correct course of action. If you’re the only user of a specific version, but need it retained to ensure you can complete work that depends on that specific version, this will help us retain that version as long as needed.
When modules are removed, usually we will remove the possibility to load the module before we remove the actual software itself.  Ideally this will allow users a grace period where they experience the module to be missing before we do anything permanent.  However, this grace period may be fairly short (a week or so) and we wish to avoid surprises for all parties.
Some expected questions:

1) Can I see what you’re logging?

No, the logs are only accessible to the sysadmin staff and the few people at USIT who have root access to our machines.  You can however check the module files themselves and see how the logging is being done.  The current implementation will look something like this:
if { [module-info mode] == "load" && ! [info exists ::env(MODULE_PRIVATE)] } {
    system logger -t module -p debug USER=$::tcl_platform(user),APP=$modulefile,VERSION=$appversion
2) How long do these logs persist for?
This depends on the machine in question.  For office machines, a reboot will currently clear the most logs, including the logs that catch this data.  This will change though.  In essence, if you are hesitant about the retention at all, use MODULE_PRIVATE, we can’t give any absolute guarantees about expunging of logs due to centralised logging and backup services at UiO.
3) I think I want to use MODULE_PRIVATE, how do I do so?
If you just want it now and then, you can call modules with the variable set on the fly:
MODULE_PRIVATE=1 module load FEniCS/1.5.0_2015.03.28
You can also set the variable in your appropriate login files (export MODULE_PRIVATE=1 in .bash_profile) or (set MODULE_PRIVATE 1 in .cshrc) to make the setting persistent.
Published Mar. 30, 2015 1:58 PM - Last modified Mar. 30, 2015 1:58 PM