1. 程式人生 > 其它 >KingbaseES R3叢集cluster日誌切割和清理案例

KingbaseES R3叢集cluster日誌切割和清理案例

案例說明:
對於KingbaseES R3叢集的cluster日誌預設系統是不做切割和清理的,隨著執行時長的增加,日誌將增長為一個非常大的檔案,佔用比較大的磁碟空間,並且在分析問題讀取大檔案時效率很低,所以本案例藉助Linux系統的Logrotate工具進行cluster日誌切割,將cluster日誌按需切割成小的檔案,並按需保留和清理。crond程序會按照清理的配置檔案按需自動完成對日誌的清理工作。

如下圖所示:

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 178 Nov 24  2015 chrony
-rw-r--r--. 1 root root  71 Jul 21  2015 cups
-rw-r--r--. 1 root root 172 Nov 20  2015 iscsiuiolog
-rw-r--r--. 1 root root 165 Nov 21  2015 libvirtd
-rw-r--r--. 1 root root 163 Nov 21  2015 libvirtd.qemu
-rw-r--r--. 1 root root 893 Nov 21  2015 mariadb
-rw-r--r--. 1 root root 106 Mar  6  2015 numad
-rw-r--r--. 1 root root 136 Jun 10  2014 ppp
-rw-r--r--. 1 root root 408 Mar  6  2015 psacct
-rw-r--r--. 1 root root 115 Nov 21  2015 samba
-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程序自動清理。使用者只需要按需做好配置檔案的配置,一切交給系統進行管理即可。