KingbaseES V8R3 集群运维案例之 -- cluster日志切割和清理案例

案例说明:
对于KingbaseES V8R3集群的cluster.log日志文件默认系统是不做切割和清理的,随着运行时长的增加,日志文件将占用比较大的磁盘空间,并且在分析问题读取大文件时效率很低,所以本案例借助Linux系统的Logrotate工具进行cluster.log日志文件切割,将cluster.log日志文件按需切割成小的文件,并按需保留和清理;crond进程会按照清理的配置文件按需自动完成对日志的清理工作。

如下图所示:

适用版本:
KingbaseES V8R3

Logrotate说明:
logrotate是Linux系统自带的日志切割工具,可以按月、周、天来切割日志文件并压缩,解决了日志备份以及备份日志的可读性。其基于crontab运行,系统自动触发。

logrotate配置文件相关:

1)cron运行脚本/etc/cron.daily/logrotate

#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0


2)配置文件/etc/logrotate.d/ 下
.......
-rw-r--r--. 1 root root 224 Sep  8  2015 syslog
-rw-r--r--. 1 root root 100 Jun 16  2015 wpa_supplicant
-rw-r--r--. 1 root root 100 Dec  3  2015 yum


3)配置文件参数详解
compress:对转储后的日志文件进行压缩;
nocompress:不对转储的日志文件进行压缩;
delaycompress:与 compress 一起使用,转储的日志文件到下一次转储进行压缩;
nodelaycompress:与 compress 一起使用,转储的日志文件本次转储进行压缩;
copytruncate:备份正在打开的日志文件,将当前节点之前的文件备份出来,然后清空源文件;
nocopytruncate:直接备份整个日志文件,不做切割处理;
create mode owner group:使用指定属性创建新文件;
nocreate:不建立新的日志文件;
ifempty:如果文件为空也转储;
notifempty:如果是空文件的话,不转储;
missingok:如果日志文件丢失,不报错继续下一个日志文件转储;
errors address:把转储时的错误信息发送到指定的Email 地址;
mail address:把转储的日志文件发送到指定的E-mail 地址;
nomail:转储时不发邮件;
olddir directory:转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统;
noolddir:转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript:在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行;
postrotate/endscript:在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行;
daily:指定转储周期为每天;
weekly:指定转储周期为每周;
monthly:指定转储周期为每月;
dateext:使用当前日期作为转储文件的命名格式,没有此配置转储文件以1、3、4....为格式;
dateformat:配合dateext使用,定义转储文件格式,只支持%Y%m%d%s四个参数;
rotate count:指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份;
size size:当日志文件到达指定的大小时才转储,Size 可以指定 bytes 以及KB 或者MB;

一、kingbaseES集群日志切割和清理配置文件

1、查看配置文件信息

# 配置文件存储路径
[root@node3 logrotate.d]# pwd
/etc/logrotate.d

# 配置文件
[root@node3 logrotate.d]# ls -lh kingbase 
-rw-r--r-- 1 root root 727 Mar  2 12:27 kingbase

2、查看配置文件内容

=此主机是一个测试环境,在此主机也部署了kingbaseES V8R6的集群,部署完成后kingbaseES V8R6集群对hamgr.log和kbha.log做了切割和清理,所以kingbase文件里,配置了hamgr.log和kbha.log的日志切割和清理的配置信息。因此,对于kingbaseES V8R3的的cluster.log的配置,只需添加到此文件的尾部即可。对于生产环境,只部署了kingbaseES V8R3的集群,所以你只需要创建kingbase的文件,进行编辑,将cluster.log的配置写入文件即可。=

[root@node3 logrotate.d]# cat kingbase 
# Generate by sys_monitor.sh at Mon Mar  1 17:26:29 CST 2021
/home/kingbase/cluster/R6HA/KHA/kingbase/bin/../kbha.log {
        weekly
        maxsize 100M
        su kingbase kingbase
        create 0600 kingbase kingbase
        rotate 3
        copytruncate
        dateext
}
/home/kingbase/cluster/R6HA/KHA/kingbase/hamgr.log {
        weekly
        maxsize 100M
        su kingbase kingbase
        create 0600 kingbase kingbase
        rotate 3
        copytruncate
        dateext
}

/home/kingbase/cluster/kha/log/cluster.log {
        daily
        maxsize 2M
        #su kingbase kingbase
        #create 0600 kingbase kingbase
        create 0600  root root
        rotate 3
        copytruncate
        dateext
}

3、cluster.log日志清理配置文件

[root@node3 logrotate.d]# cat kingbase 
# Generate by sys_monitor.sh at Mon Mar  1 17:26:29 CST 2021

/home/kingbase/cluster/kha/log/cluster.log {
        daily                   # 按日清理
        maxsize 2M              # 日志文件大小为2M
        #su kingbase kingbase
        #create 0600 kingbase kingbase    
        create 0600  root root   # 文件属主 root
        rotate 3                # 只保留最近三个文件
        copytruncate
        dateext
}

二、测试cluster.log日志的清理

1、查看cluster.log日志信息

[kingbase@node3 log]$ ls -lh cluster*
total 8.7M
-rw-r--r-- 1 root     root     3.2M Mar  2 12:27 cluster.log
-rw-r--r-- 1 root     root     266K Mar  2 12:33 cluster_restart.log
-rw-r--r-- 1 root     root      110 Mar  1 13:58 clusterstop
.......

2、测试logrotate 手工切割和清理
[root@node3 logrotate.d]# logrotate /etc/logrotate.d/kingbase

3、查看切割后的cluster.log信息

=如下所示,生成了‘cluster.log-20210302’的日志文件,当前的cluster.log日志文件内容被清空。=

[kingbase@node3 log]$ ls -lh cluster*
-rw-r--r-- 1 root root  17K Mar  2 12:35 cluster.log
-rw-r--r-- 1 root root 3.2M Mar  2 12:27 cluster.log-20210302         #切割后的历史文件
-rw-r--r-- 1 root root 266K Mar  2 12:34 cluster_restart.log
-rw-r--r-- 1 root root  110 Mar  1 13:58 clusterstop

三、总结

对与Linux系统下的日志清理,可以借助于logrotate工具。通过crond进程自动清理。用户只需要按需做好配置文件的配置,一切交给系统进行管理即可。

posted @ 2022-03-10 19:55  KINGBASE研究院  阅读(270)  评论(0编辑  收藏  举报