[asterisk-dev] cdr-custom rotate?

Brian Degenhardt bmd at digium.com
Wed Aug 13 13:25:09 CDT 2008


John Todd wrote:
> At 9:54 AM +0000 2008/8/9, Tony Mountifield wrote:
>>
>>In article <006501c8f9ec$b50968f0$1f1c3ad0$@com>,
>>Venefax <venefax at gmail.com> wrote:
>>>  I have to rotate the Master.csv every 5 minutes, on a heavy loaded system. I
>>>  use cdr-custom. How do I force asterisk to rename the cdr file every 5 mins?
>>>  Is there a way?
>>
>>It doesn't look as if Asterisk holds the file open, but rather opens it every
>>time it wants to add a record. So you can just have a cron script that renames
>>the file whenever you want, and Asterisk should recreate Master.csv the next
>>time it wants to write a CDR.
>>
>>Try a crontab entry like this:
>>
>>*/5 * * * * cd /var/log/asterisk/cdr-custom; mv Master.csv 
>>Master`date +'\%FT\%H:\%M'`.csv ; touch Master.csv
>>
>>Cheers
>>Tony
> 
> 
> Feature idea:
> 
> We have the concept of log rotation in logger.conf.  Why don't we use 
> the same routines and configuration file syntax for rotating CDR CSV 
> logs?  Then we could embed the rotation of CSV CDR files into 
> Asterisk instead of using cron jobs (though cron systems would be 
> unaffected unless "persistent=yes" was set with our theoretically new 
> command below.)  "cdr csv rotate" might be the appropriate command. 
> This would remove yet another external requirement for 
> platform-specific scripts to operate and manage Asterisk in a 
> production environment.
> 
> 
> In a somewhat unrelated question:
> 
>   Are the resources consumed by opening/closing the cdr files 
> excessive in high-volume circumstances?

No, in fact, CEL opens and closes it's log files for every entry.

A quick test on my desktop system takes about 17 seconds to 
open/write/close a million times, and about 6 seconds to 
open/million-writes/close.  I think the difference of 11 microseconds is 
negligible, considering the processing power needed to execute a call, 
even one that's quickly redirected.

> The reason I ask is that in some environments ("redirectors" for 
> large arrays of other machines, or even just volume test platforms) 
> the amount of call leg creation/destruction is fairly high - 
> sometimes hundreds per second.  If it is in fact the case that 
> Asterisk opens/closes the CDR files every time a new record is 
> written, it seems like this would be a fairly high penalty.
> 
> Would it be possible or prudent to create a "persistent=[yes,no]" 
> option for CSV configuration?  Or does the "batch=yes" setting 
> provide an adequate alternative in by keeping the file closed until a 
> certain number of calls or time interval has reached a maximum value?
> 
> 
> JT
> 




More information about the asterisk-dev mailing list