Simple question (Request Duration)
    Matthew Newton 
    mcn at freeradius.org
       
    Wed Sep 27 18:04:06 UTC 2023
    
    
  
On 27/09/2023 18:45, Alan DeKok wrote:
> On Sep 27, 2023, at 1:22 PM, Andy Arp <bubbaandy89 at gmail.com> wrote:
>> Is there a builtin value i can emit to linelog that will indicate how long
>> a given request has taken from start to finish?
> 
>    You can use:
> 
> 	%{expr: %l - %c}
> 
>    which gets you the time difference in seconds.  However, that is not generally useful.
Yeah - until now the best was
   update session-state {
       &Tmp-Integer64-1 = "%{expr:(%c*1000) + (%C/1000)}"
   }
at the start of authorize, and then
   update request {
     &Tmp-Integer64-0 := "%{expr:(%c*1000) + (%C/1000) - 
%{session-state:Tmp-Integer64-1}}"
   }
to find the time taken so far. It'll work most of the time, but fails 
randomly because %c and %C are calculated separately.
>    Matthew just added something related to v3.2.x:  https://github.com/FreeRADIUS/freeradius-server/commit/1b4f1d0a622384495ba5529e60822b02b9f2303a
> 
>    That will be in the next release.
It makes things much nicer :)
   update session-state {
     &Tmp-Integer64-1 = "%{time_since:ms}"
   }
and
   update request {
     &Tmp-Integer64-0 := "%{time_since:ms &session-state:Tmp-Integer64-1}"
   }
Debian/Ubuntu packages in the freeradius-devel-3.2 repo contain it.
-- 
Matthew
    
    
More information about the Freeradius-Users
mailing list