[Samba] Log rotation issue
Anantha Raghava
raghav at exzatechconsulting.com
Sun Dec 3 18:58:34 UTC 2017
Hi,
Samba is replacing the %T variable with actual timestamp. But timestamp
format is different as shown in this log entry.
Unable to open new log file '/var/log/samba/dc1.2017/12/04 00:05:54.log': No such file or directory
"Unable to open new log file '/var/log/samba/dc1.2017*/12/04
00:05:54*.log': No such file or directory"
2017/12/04 00:05:54 part of the file name is the actual culprit. Because
of the format, file name is getting interpreted as folder
".../dc.2017/12/" and file as "04 00:05:54.log". This file will never
get created. Because of this probably we see that a log file as
"dc1.%T.log" created instead.
If the timestamp format is corrected, %T variable can be handled.
--
Thanks & Regards,
Anantha Raghava
Do not print this e-mail unless required. Save Paper & trees.
On 03/12/17 8:48 PM, Anantha Raghava wrote:
>
> Hello Andrew,
>
> I am now experimenting with my test setup on the log rotation part.
>
> While testing different scripts, I observed a very peculiar behavior
> with log writing process.
>
> If the log file name has a variable to be substituted, say %T, it
> continues to write into it without creating .old file. If it is a
> simple name like samba.log or dc1.current.log etc., after about 10 MB,
> the log rotates,with or without my script and appends .old to actual
> log file and continues to write into .old file. Could you please
> provide pointers where to look for this log writing routine and why
> this peculiar behavior? My smb.conf and the script I am using is shown
> below.
>
> Samba version is 4.7.1
>
> /*smb.conf*/
>
> # Global parameters
> [global]
> netbios name = DC1
> realm = EXZA.COM
> server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc,
> drepl, winbindd, ntp_signd, kcc, dnsupdate
> workgroup = EXZA
> server role = active directory domain controller
> ldap server require strong auth = No
> log level = 10
> log file = /var/log/samba/dc1.current.log
> #"With this file name, the log gets rotated when it reaches 10
> MB or above in size, One cannot exactly say at what size it rotates.
> The process appends .old to the file name and
> continues to write into .old file."
>
> [netlogon]
> path = /usr/local/samba/var/locks/sysvol/exza.com/scripts
> read only = No
>
> [sysvol]
> path = /usr/local/samba/var/locks/sysvol
> read only = No/*
> */
>
> /*Script used to rotate log*/
>
> File size is set to 10 MB in this script. This script runs in
> background (not as a cron).
>
> #!/bin/bash
> MaxFileSize=10000000
> while true
> do
> file_size=`du -b /var/log/samba/dc1.current.log | tr -s '\t' ' ' |
> cut -d' ' -f1`
> if [ $file_size -gt $MaxFileSize ];then
> timestamp=`date +%Y%m%d%H%M%S`
> cp -pr "/var/log/samba/dc1.current.log"
> "/var/log/samba/dc1.$timestamp.log.old"
> echo > /var/log/samba/dc1.current.log
> fi
>
> done/*
> */
>
> --
>
> Thanks & Regards,
>
>
> Anantha Raghava
>
>
> Do not print this e-mail unless required. Save Paper & trees.
>
> On 02/12/17 12:07 PM, Andrew Bartlett wrote:
>> On Sat, 2017-12-02 at 11:58 +0530, Anantha Raghava wrote:
>>> Hello Andrew,
>>>
>>> Thanks for proper explanation.
>>>
>>> To overcome this, also as we need to store logs for long, now we
>>> have written a shell script, executed as a crop every three minutes
>>> that checks the file size. If the file size is 1 GB or above, it
>>> moves the log file to <logfile>.timestamp.log.old and clears the main
>>> log file.
>>>
>>> We have commented out the max log size in sub.conf.
>>>
>>> If need be I can share the script here
>> I'm not sure that will help, that is pretty much what was happening
>> before. The key is to send a -HUP to the whole process tree to make
>> them re-open the logs, otherwise the other child samba processes will
>> still just write to the .old
>>
>> I know this sucks. I think the solution is to have a new reopen-logs
>> message created so this can be used in logroate, and to have it used
>> internally as I mentioned.
>>
>> Andrew Bartlett
>
More information about the samba
mailing list