系統日誌rsyslog基本概念

日誌檔(log)記錄著系統訊息、網路訊息及歷史事件,對於系統管理者來說是很重要的檔案,是系統除錯不可缺少的重要武器。

設定檔(/etc/rsyslog.conf)內定義著這些日誌檔的規則(Rules),這些規則是由Selectors所組成的Actions,參考以下表格。

註:Use a dash mark (-) as a prefix of the file path you specified if you want to omit syncing the desired log file after every syslog message is generated.(參考文章

本人拿其中兩條規則來解譯:
  1. *.info;mail.none;authpriv.none;cron.none /var/log/messages
  2. 所有服務在Security Level 6 以上的訊息;除了mail訊息;除了登入認證訊息;除了自動排程訊息 都記錄在/var/log/messages  //;分號表示後者條件可以覆蓋前者條件,例如mail.info會被mail.none所覆蓋。那麼為何要排除mail、authpriv及cron的訊息呢?請參考表格,因為他們都已經另外有日誌檔。

  3. *.emerg *
  4. 只要有服務發生emerg的訊息(Security Level 0、最嚴重的等級),立刻通知在線上的使用者,讓使用者來通知管理員修復服務。
補充:若以*.debug方式記錄訊息,那麼資料量將非常龐大。

若不希望日誌檔內容過於龐大,可使用日誌輪替(logrotate),依照檔案大小或週期性的產生數個日誌檔。
日誌輪替主設定檔範例:/etc/logrotate.conf # rotate log files weekly
weekly  //每個禮拜輪替一次

# keep 4 weeks worth of backlogs
rotate 4  //保留四個日誌檔

# create new (empty) log files after rotating old ones
create  //原有日誌檔先被更名,再產生新的日誌檔。例如:vsftpd.log更名成vsftpd.log-20130101,再產生一個vsfptd.log的日誌檔。

# use date as a suffix of the rotated file
dateext  //被更名的日誌檔加上日期,例如vsftpd.log-20130101

# uncomment this if you want your log files compressed
compress  //被更名的日誌檔進行壓縮

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {  //記錄使用者login及logout時間,指令last會查詢此檔案。
monthly
create 0664 root utmp
minsize 1M  //若有註明檔案大小,則會忽略時間參數monthly
rotate 1
}

/var/log/btmp {  //記錄嘗試登入失敗的使用者名稱及時間,指令lastb會查詢此檔案。
missingok
monthly
create 0600 root utmp
rotate 1
}

備份MySQL資料庫II-自動備份的Script

  • 備份 MySQL 資料庫 I-基本資料庫操作

  • Script 的撰寫 # vim /root/mysql-backup.sh
     #!/bin/bash
     YMD=$(date +%Y-%m-%d)
     YMD180=$(date +%Y-%m-%d --date -180days)
     basedir="/var/www/mysqlbackup"

     #備份當月資料庫
     /usr/bin/mysqldump -u root -pQUpM6EaQHMaaEJnu --all-database > "$basedir"/"$YMD".ccdb.sql

     #刪除半年以前的備份
     /bin/rm -rf "$basedir"/"$YMD180".ccdb.sql

     #備份至 NAS 空間
     /usr/bin/rsync -av --progress --delete --port=873 --password-file=/etc/rsyncd.secrets "$basedir"/ admin@192.168.xxx.xxx::mysqlbackup  // /etc/rsyncd.secrets 的內容是連到 NAS 的管理者密碼
     export LANG=zh_TW.UTF-8
     mail -s "網頁伺服器維護通知信" root@localhost < /root/backuplog.txt   // 維護通知信的內容

    # vim /root/backuplog.txt
     每月1日早上6點進行資料庫備份作業,保留半年內的備份。

     已完成MySQL資料庫自動備份作業
     已完成MySQL資料庫備份檔上傳NAS作業(\\backupserver\mysqlbackup)
    註:192.168.xxx.xxx::mysqlbackup是NAS路徑。

    自動排程:每月1日早上6點進行資料庫備份作業 # crontab -e
     0 6 1 * * /root/mysql-backup.sh