(RADIATOR) Accounting Start-Stops
Jaime Elizaga Jr.
chaos at flash.net.ph
Thu Sep 20 07:22:39 CDT 2001
Hi Everyone,
We are currently running Radiator 2.18.4 with MySQL.
I do notice that with ACCOUNTING, there are two records generated for every user session, one is when the user connects and the other is when it the user disconnects. In just a small amount of time, our accounting database has grown to very big, about 200,000 records within two months of operation. Within half a year, we can generate as much as 1,000,000 records. I also notice that both the records pertaining to a user session is almost identical except for the timestamp, status type and session time. This means that we are having redundant records.
Is there a way to have the Accounting to insert a record upon a user's connection and just update that same record upon the user's disconnection? There will be some modified fields like the Timestamp will be changed to Time_Start and add another column like Time_Stop.
My config file looks something like this:
Foreground
LogStdout
LogDir /var/log/radius
LogFile /var/log/radius/%m/%d%Y-trace
FingerProg /usr/bin/finger
PidFile /var/run/radius.pid
DictionaryFile /usr/local/etc/dictionary
Trace 4
<Client xxx.xxx.xxx.xxx>
Secret yyyxxx
DupInterval 3
</Client>
<Realm DEFAULT>
AcctLogFileName /var/log/radius/default/details
PasswordLogFileName /var/log/radius/Test/%m%d%Y-passlog
<AuthBy SQL>
# Adjust DBSource, DBUsername, DBAuth to suit your DB
DBSource dbi:mysql:XXXDb
DBUsername xxxxxxxxxx
DBAuth xxxxxxxxx
AuthSelect select PASSWORD, TIMELEFT from SUBSCRIBERS where USERNAME='%n'
AuthColumnDef 0,User-Password,check
AuthColumnDef 1,Session-Timeout,reply
DefaultReply Service-Type=Framed-User, Framed-Protocol=PPP, Framed-Routing=None
AccountingTable ACCOUNTING
AcctColumnDef USERNAME,User-Name
AcctColumnDef TIMESTAMP,Timestamp,integer
AcctColumnDef STATUS_TYPE,Acct-Status-Type
AcctColumnDef SESSION_ID,Acct-Session-Id
AcctColumnDef SESSION_TIME,Acct-Session-Time,integer
AcctColumnDef TERMINATE_CAUSE,Ascend-Disconnect-Cause,integer
AcctColumnDef NAS_IDENTIFIER,NAS-IP-Address
AcctColumnDef NAS_PORT,NAS-Port,integer
AcctColumnDef IP_ADDRESS,Framed-IP-Address
AcctColumnDef CALLER_ID,Calling-Station-Id
AcctColumnDef CALLED_STATION,Called-Station-Id
AcctSQLStatement update SUBSCRIBERS set TIMELEFT=TIMELEFT-0%{Acct-Session-Time} \
where USERNAME='%n'
</AuthBy>
</Realm>
I am thinking if it is possible to have two accounting sequences wherein one would take care of accounting start and the other would take care of the accounting stops.
AccountingTable ACCOUNTING
AccountingStartsOnly
AcctColumnDef USERNAME,User-Name
AcctColumnDef TIMESTART,Timestamp,integer
AcctColumnDef STATUS_TYPE,Acct-Status-Type
AcctColumnDef SESSION_ID,Acct-Session-Id
AcctColumnDef SESSION_TIME,Acct-Session-Time,integer
AcctColumnDef TERMINATE_CAUSE,Ascend-Disconnect-Cause,integer
AcctColumnDef NAS_IDENTIFIER,NAS-IP-Address
AcctColumnDef NAS_PORT,NAS-Port,integer
AcctColumnDef IP_ADDRESS,Framed-IP-Address
AcctColumnDef CALLER_ID,Calling-Station-Id
AcctColumnDef CALLED_STATION,Called-Station-Id
AccountingStopsOnly
AcctColumnDef USERNAME,User-Name
AcctColumnDef TIMESTOP,Timestamp,integer
AcctColumnDef STATUS_TYPE,Acct-Status-Type
AcctColumnDef SESSION_ID,Acct-Session-Id
AcctColumnDef SESSION_TIME,Acct-Session-Time,integer
AcctColumnDef TERMINATE_CAUSE,Ascend-Disconnect-Cause,integer
AcctColumnDef NAS_IDENTIFIER,NAS-IP-Address
AcctColumnDef NAS_PORT,NAS-Port,integer
AcctColumnDef IP_ADDRESS,Framed-IP-Address
AcctColumnDef CALLER_ID,Calling-Station-Id
AcctColumnDef CALLED_STATION,Called-Station-Id
AcctSQLStatement update SUBSCRIBERS set TIMELEFT=TIMELEFT-0%{Acct-Session-Time} \
where USERNAME='%n'
Is there any other means that is more efficient in dealing about with this type of scenario? Please enlighten me.
Thank you very much,
Jaime Elizaga Jr.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.open.com.au/pipermail/radiator/attachments/20010920/1a9f253f/attachment.html>
More information about the radiator
mailing list