多用户多tomcat结合logrotate实现日志分割脚本

  • A+
所属分类:日志

结合logrotate来实现tomcat日志分割,当前脚本主要解决的问题是,多用户下多tomcat环境下日志压缩及归档的问题。

因为是第一个版本,可能思路还是不太科学。如果你有更好的建议及解决方案请留言。

多用户多tomcat结合logrotate实现日志分割脚本

脚本内容


#!/bin/bash

#Version=0.1.1

#Ownr:FuShengbao

#Blog:shengbao.org

#Mail:shengbao.fu@generalichina.com

#Tel:1393 

#change log

#20180426:Initial release

#20180509:修改tomcat\w匹配、修改log_backup为root权限bug、修改第一次执行/home/app*/log_backup/tomcat*判断bug

username="app01"

for userhome in $username;do

    if [ -d /home/$userhome/log_backup ];then 

        echo "/home/$userhome/log_backup ok!"

    else 

        mkdir  /home/$userhome/log_backup

  chown -R $userhome.$userhome /home/$userhome/log_backup

    fi

done

function catalina () {

dfs=`df |awk 'NR==2''{print $4}'`

for i in $username;do

    bssc=`ls /home/$i|grep "^tomcat\w"`

    for ii in $bssc;do

        if [ ! -f /etc/custom/log/tomcatlog_catalina_$i$ii ];then

        cat > /etc/custom/log/tomcatlog_catalina_$i$ii <<EOF

/home/$i/$ii/logs/catalina.out

{

       rotate 180

       copytruncate

       olddir /home/$i/log_backup/$ii/

       nomissingok

       notifempty

       compress

       dateext

}

EOF

        fi

        if [ -f /home/$i/$ii/logs/catalina.out ];then

            dus=`du -s /home/$i/$ii/logs/catalina.out|awk -F ' ' '{print $1}'`

            echo $dus

            if [ "$dfs" -lt "$dus" ];then

                echo "One or more drives has insufficient disk space"

               sleep 2

               exit 1

            else

       if [ -d /home/$i/log_backup/$ii ];then

                    echo "runing logrote"

                    /usr/sbin/logrotate -vf /etc/custom/log/tomcatlog_catalina_$i$ii

    else 

        mkdir /home/$i/log_backup/$ii

                    /usr/sbin/logrotate -vf /etc/custom/log/tomcatlog_catalina_$i$ii

                fi       

            fi

        fi

    done

done

}

function log_file () {

for ia in $username;do

    bssca=`ls /home/$ia|grep "^tomcat\w"`

    for iia in $bssca;do

            if [ ! -f /etc/custom/log/tomcatlog_file_$ia$iia ];then

                    cat > /etc/custom/log/tomcatlog_file_$ia$iia <<EOF

/home/$ia/log_backup/$iia/*.txt

{

       nocreate

       rotate 180

       noolddir

       missingok

       compress

       dateext

}

/home/$ia/log_backup/$iia/*.log

{

       nocreate

       rotate 180

       noolddir

       missingok

       compress

       dateext

}

/home/$ia/log_backup/$iia/*.*.log

{

       nocreate

       rotate 180

       noolddir

       missingok

       compress

       dateext

}

/home/$ia/log_backup/$iia/*..*.txt

{

       nocreate

       rotate 180

       noolddir

       missingok

       compress

       dateext

}

EOF

        fi

        if [ -d /home/$ia/log_backup/$iia ];then

            /usr/bin/find /home/$ia/$iia/logs/ -type f -mtime +7 -exec mv {} /home/$ia/log_backup/$iia \;

                            echo "run tomcatlog_file"

                /usr/sbin/logrotate -vf /etc/custom/log/tomcatlog_file_$ia$iia

        else

            mkdir /home/$ia/log_backup/$iia 

            /usr/bin/find /home/$ia/$iia/logs/ -type f -mtime +7 -exec mv {} /home/$ia/log_backup/$iia \;

                        /usr/sbin/logrotate -vf /etc/custom/log/tomcatlog_file_$ia$iia

        fi

    done

done

}

if [ ! -d /etc/custom/log ];then

    mkdir -p /etc/custom/log

        catalina

        log_file

else

    catalina

        log_file

fi

交流

使用logrotate是可以实现多用户压缩到指定目录,不这样做我考录的

1,是需要写很多目录及路径。每一个用户或者目录都需要单独写。

2,执行时间多在3点左右,这样导致日志分割的日期不是那么完美。

如果,你不需要归档,只需要分割catalina.out并且目录有规律可以这么做。

#cat /etc/custom/log/tomcatlog 

/home/shengbao0*/tomcat*/logs/catalina.out

{

       rotate 180

       copytruncate

       noolddir 

       nomissingok

       notifempty

       compress

       dateext

}

添加计划任务

55 23 * * * /usr/sbin/logrotate -vf /etc/custom/log/tomcatlog

weinxin
付生保个人博客
一个运维工程师的自媒体个人博客网站。也是关注IT技术学习和经验分享的原创独立自媒体个人博客。
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: