Sysstat 日誌收集說明

1. 安裝 sysstat 命令

執行以下命令以安裝 sysstat

sudo apt update
sudo apt-get install sysstat

2. 啟用 sysstat

編輯配置文件:

sudo vi /etc/default/sysstat

ENABLED=false 改為 ENABLED=true

ENABLED="true"

重啟服務:

sudo systemctl restart sysstat

3. 建立自動化收集腳本

建立日誌存放資料夾:

mkdir /home/bimap/sardata

編輯腳本文件:

vim /home/bimap/bin/ipoc_sar.sh

ipoc_sar.sh 內容如下:

#!/bin/bash
export LC_ALL=C

#################################################
########        設定環境變數               ########
#################################################
Host=$(hostname)
Seconds=${1:-60}   # 默認每次間隔60秒,可以通過參數傳遞修改
Count=${2:-60}     # 默認每60次收集數據,可以通過參數傳遞修改
RetentionDays=30   # 超過30天的檔案不做保留,需要的話請開啟尾段的註解
Yesterday=$(perl -MPOSIX -le 'print strftime "%y%m%d", localtime(time()-86400)')
DateTime=$(perl -MPOSIX -le 'print strftime "%Y%m%d%H%M", localtime')
LogDir="/home/bimap/sardata"
SentDir="$LogDir/sent"
BackupDir="$LogDir/backup"
UploadDir="/home/sftpuser/master"  # 日誌上傳路徑

# SCP 目標路徑設定
SCP_TARGET="bimap@10.99.1.106:$UploadDir"

# FTP 設定參數
FTPURL="10.99.1.106"
FTPUSER="sftpuser"
FTPPASS="1qaz2wsx"

# 上傳方法選擇:可選 "ftp"、"mv" 或 "scp"
UPLOAD_METHOD="scp"

if [[ ! " ftp mv scp " =~ " ${UPLOAD_METHOD} " ]]; then
  echo "未知的上傳方式: $UPLOAD_METHOD. 請選擇 'ftp', 'mv' 或 'scp'."
  exit 1
fi

echo "上傳方式: $UPLOAD_METHOD"
echo "收集間隔: $Seconds 秒, 收集次數: $Count 次"

#################################################
########         執行收集命令              ########
#################################################
Header="===== CollectLinuxServer: $Host-sar $DateTime ====="

Cpu="$Host-$DateTime.cpu"
Net="$Host-$DateTime.network"
Mem="$Host-$DateTime.mem"
Diskio="$Host-$DateTime.diskio"
Process="$Host-$DateTime.process"
Disk="$Host-$DateTime.disk"

mkdir -p $SentDir
mkdir -p $BackupDir
mkdir -p $LogDir

cd $LogDir
# 獲取舊的sar文件
Files=$(ls $Host* 2> /dev/null)
if [ -z "$Files" ]; then
  echo "沒有舊的文件需要移動"
else
  # 將舊文件移動到SentDir
  mv $Files $SentDir
fi

# 收集新的sar文件
for i in $Cpu $Net $Mem $Diskio $Process $Disk
do
    touch $i && echo $Header > $i
done

sar -P ALL $Seconds $Count >> $Cpu &
sar -n DEV $Seconds $Count >> $Net &
vmstat -n $Seconds $Count >> $Mem &
iostat -tkdx $Seconds $Count >> $Diskio &
top -d $Seconds -n $Count -b -i >> $Process &
df -k | head -n 1 >> $Disk
for i in `seq 1 $Count`; do
    echo "disk: $i `date +"%D %T"`" >> $Disk
    df -k | awk '{if ($3 ~/[0-9]/) print $0}' >> $Disk
    sleep $Seconds
done

sleep 10

#################################################
########      根據選擇的方式上傳文件         ########
#################################################
cd $SentDir

case $UPLOAD_METHOD in
  "ftp")
    if [ "$(ls -A $SentDir)" ]; then
      ftp -inv $FTPURL << EOF > $LogDir/ftplog.txt
user $FTPUSER $FTPPASS
binary
mput *
bye
EOF
      msg=$(grep "complete" $LogDir/ftplog.txt)
      if [ -n "$msg" ]; then
          mv $SentDir/*.* $BackupDir
      fi
      rm -rf $LogDir/ftplog.txt
    fi
    ;;

  "mv")
    if [ "$(ls -A $SentDir)" ]; then
      mv $SentDir/* $UploadDir
    fi
    ;;

  "scp")
    if [ "$(ls -A $SentDir)" ]; then
      scp * $SCP_TARGET
      if [ $? -eq 0 ]; then
          mv $SentDir/*.* $BackupDir
      fi
    fi
    ;;

  *)
    echo "未知的上傳方式: $UPLOAD_METHOD"
    exit 1
    ;;
esac

#################################################
########          壓縮並備份             ########
#################################################
# 1. 檢查並將昨天的檔案,保存成一份壓縮檔
cd $BackupDir
if ls *$Yesterday* 1> /dev/null 2>&1; then
    # 如果存在,將該檔案壓縮起來
    tar -czvf "${Host}-${Yesterday}.tar.gz" *$Yesterday*.* && rm -rf *$Yesterday*.*
fi

# 2. 定期將檔案清除,需要的話請開啟註解並檢查RetentionDays參數設定
# find $BackupDir/*.tar.gz -maxdepth 1 -mtime +$RetentionDays -type f -delete

exit

授予腳本執行權限:

chmod +x /home/bimap/bin/ipoc_sar.sh

4. 設定 crontab 每小時執行一次自動化收集腳本

編輯 crontab:

crontab -e

添加以下行:

0 * * * * /home/bimap/bin/ipoc_sar.sh

日誌檔案範例

執行當下小時會產生6種日誌檔案 (.cpu、.disk、.diskio、.mem、.network、.process):

[root@bimap sardata]$ ll /home/bimap/sardata
total 376
drwxr-xr-x. 2 root root      6 Mar 29 12:00 sent
drwxr-xr-x. 2 root root  24576 Mar 29 12:00 backup
-rw-r--r--. 1 root root  26514 Mar 29 12:33 bimap-202303291200.cpu
-rw-r--r--. 1 root root  29388 Mar 29 12:33 bimap-202303291200.disk
-rw-r--r--. 1 root root  19360 Mar 29 12:33 bimap-202303291200.diskio
-rw-r--r--. 1 root root   3085 Mar 29 12:33 bimap-202303291200.mem
-rw-r--r--. 1 root root  10212 Mar 29 12:33 bimap-202303291200.network
-rw-r--r--. 1 root root 222572 Mar 29 12:33 bimap-202303291200.process

整點會自動將上個小時檔案傳送後移動到 backup 資料夾,昨天的檔案會自動壓縮為 tar.gz 檔:

[root@bimap sardata]$ ll /home/bimap/sardata/backup

-rw-r--r--. 1 root root 1064377 Mar 24 01:00 bimap-20230323.tar.gz
-rw-r--r--. 1 root root 1064810 Mar 25 01:00 bimap-20230324.tar.gz
-rw-r--r--. 1 root root 1076652 Mar 26 01:00 bimap-20230325.tar.gz
-rw-r--r--. 1 root root 1083895 Mar 27 01:00 bimap-20230326.tar.gz
-rw-r--r--. 1 root root 1317158 Mar 28 01:00 bimap-20230327.tar.gz
-rw-r--r--. 1 root root 1443695 Mar 29 01:00 bimap-20230328.tar.gz

results matching ""

    No results matching ""