Ensuring Affordable Access to Complete Usage Data
ENH RecordsImproved Reporting with an Enhanced Debug Log
Motivation: SAM and Sources of Usage Data
• usage analysis is a critical element of a software asset management (SAM) program
– provides information to enable many software business issue decisions
• license manager log files are the primary source of usage data
– enterprise end users have little to no control over choice of license manager
• Flex is by far the dominant license manager in use today
Motivation: Flex Log Files
• the Flex license manager creates 2 log files– debug log
• ASCII, open text• basic information only
– no precise out/in matching– no license sharing details– no project information– no software version details– no token usage details
– report log• encrypted (closed), requires proprietary tools• more complete usage information
– no token usage details
Motivation: Goals
• complete– all necessary/desired information
• open– ASCII text– published specification
• can be validated– usable by ISVs for pay-per-use and compliance verification
• ease of deployment– fast deployment: daemon based not client based– ISV development effort must be low
• affordable– for ISVs: integration and licensing costs can not
discourage implementation– for end users: analysis tools must be priced to make
buy/develop decision easy
How It Works: Using Available Callbacks
• Flex ISV customers are provided callbacks they can use in their vendor daemons
• they can write whatever they want into the debug log during these callbacks
• the Enhanced Logging Initiative convened interested parties to define:
– a common format for enhanced records to be written into the debug log
– common source code for vendor daemon integration to write the enhanced records
How It Works: Registering ENH Functions to Callbacks
• if ISVs are already using callbacks– then add calls to ENH functions in the
existing callback functions
• if ISVs are not using the callbacks– then register the ENH functions to the
callback
• primary ENH functions– enh_init()
• called after lmreread• determines duplicate grouping
information from FEATURE lines in license files
– enh_out()• called in the pre-checkout filter• writes an ENH_OUT record
– enh_in()• called in the pre-checkin filter• writes an ENH_IN record
How It Works: Building an ENH Daemon
• add LTI provided source to daemon build environment (source tree and makefile)
• modify two files (enh_vendor.c and enh_vendor.h) to customize for the specific software vendor
• register or modify callbacks
• build -> test -> deploy
• approximate level of effort -> ½ day
How It Works: Enabling the ENH Daemon
• standard vendor daemon replacement process
• set environment variable<daemon>_ENH_RECORDS=1
How It Works: Processing ENH Records
• ENH_OUT records (pre-checkout)– process subsequent “standard” debug records to determine
• checkout or denied• queuing or update
• ENH_IN records (pre-checkin)– process subsequent “standard” debug records to determine
• linger or direct checkin
ENH Records: Basic Usage Logging Standard Fields
Field Type Description
feature string feature name
user string user logon ID
host string host name
timestamp string milliseconds since 00:00:00 Jan. 1, 1970 (UTC)
formatted as <seconds>.mmm
num_licenses int number of licenses requested/returned
session_handle int handle assigned by the license server
display string display details
addr string IP address of user
ENH Records: Basic Usage Logging Advanced Fields
Field Type Description
dup_group string duplicate grouping
N - none
S - site
UHDV - user, host, display, vendor
if V, then V:<vendor_code>
project string value of LM_PROJECT
sw_version string version of software checking out the feature
linger int linger period, in secondsENH_IN only
ENH Records: Basic Usage Logging Token System Fields
Field Type Description
actual_feature string name of actual software feature used for token feature checked out
actual_feature_count integer number of licenses of the actual feature used
ENH Records: Basic Usage Logging, ENH_OUT & ENH_IN
• ENH_OUT– output during the pre-checkout callback– provides all additional information needed for a detailed OUT or DENIED
hh:mm:ss (daemon_name) ENH_OUT: “feature” user@host timestamp num_licenses session_handle “display” addr dup_group “project” “sw_version” “actual_feature” “actual_feature_count”
• ENH_IN– output during the pre-checkin callback– provides all additional information needed for a detailed IN, or detection of a
“lingered” checkout
hh:mm:ss (daemon_name) ENH_IN: “feature” user@host timestamp num_licenses session_handle “display” addr dup_group linger “project” “sw_version” “actual_feature” “actual_feature_count”
ENH Records: Log File Integrity
• ENH_SECURITY– indicates that log file security is being used– indicates which digest technique is being used– output during the enh_init() function
hh:mm:ss (daemon_name) ENH_SECURITY: “digest_method”
• ENH_DIGEST– provides data for post processing to ensure log file integrity– obfuscated with a vendor specific pass phrase– output whenever one of two conditions is met
• length of text in digest• number of records in digest
hh:mm:ss (daemon_name) ENH_DIGEST: “digest”
ENH Records: Other Records
• ENH_VERSION– mandatory– output during enh_init()– provides ENH Records specification version
hh:mm:ss (daemon_name) ENH_VERSION: version
• ENH_VENDOR– optional– provides some information for ISV specific post analysis– output whenever vendor chooses, ignored by License Tracker
hh:mm:ss (daemon_name) ENH_VENDOR: “name” “value”
What It Costs
• for ISVs– source code license -> $0– source code royalties -> $0– integration effort -> approx. ½ day– for ISVs using ENH records for pay-per-use licensing or for compliance
validation, a license for the License Tracker toolset is required
• for enterprise end users– for ENH daemon -> up to ISVs, likely $0– for License Tracker software
• no additional cost -> just another data source
Top Related