Linux – rsyslog

從 Ubuntu 11.04 (natty)之後的版本,就找不到 /var/log/messages ,因為原本的 syslog 變成了 rsyslog – RSYSLOG (rocket-fast system for log processing) .

圖片出自於 http://www.rsyslog.com/

rsyslog 檔案儲存在 /var/log/syslog ,RHEL / CentOS 6 ,7 使用 rsyslog 但保留一樣的檔案名稱 (/var/log/messages)

RSYSLOG 基本上就是強化版的 syslog 套件

  • Multi-threading
    可以同時記錄傳送多達(每秒高達百萬筆記錄),不管是本底端或是遠端資料.
  • TCP, SSL, TLS, RELP
    更安全的傳輸
  • MySQL, PostgreSQL, Oracle and more
    可以使用 MySQL 與 PostgreSQL 資料庫當做儲存的媒介
  • Filter any part of syslog message
    更好的過濾器 (Filter) 來分析記錄.
  • Fully configurable output format
    支援自定的紀錄格式以及可以使用
  • Suitable for enterprise-class relay chains
    適用於企業的資料

rsyslog 儲存名稱與路徑是依據 rsyslog 設定檔來決定,我們可以自行修改設定檔,將系統訊息寫到 /var/log/messages 以及其他的 log 中.

  • Ubuntu
    編輯 /etc/rsyslog.d/50-default.conf

    #sudo vi /etc/rsyslog.d/50-default.conf
    
  • RHEL/CentOS 6/7
    編輯 /etc/rsyslog.conf

    [root@localhost ~]$ vi /etc/rsyslog.conf 
    #### MODULES ####
    
    # The imjournal module bellow is now used as a message source instead of imuxsock.
    $ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
    $ModLoad imjournal # provides access to the systemd journal
    
    #### GLOBAL DIRECTIVES ####
    
    # Where to place auxiliary files
    $WorkDirectory /var/lib/rsyslog
    
    # Use default timestamp format
    $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
    
    # File syncing capability is disabled by default. This feature is usually not required,
    # not useful and an extreme performance hit
    #$ActionFileEnableSync on
    
    # Include all config files in /etc/rsyslog.d/
    $IncludeConfig /etc/rsyslog.d/*.conf
    
    # Turn off message reception via local log socket;
    # local messages are retrieved through imjournal now.
    $OmitLocalLogging on
    
    # File to store the position in the journal
    $IMJournalStateFile imjournal.state
    
    #### RULES ####
    # Log anything (except mail) of level info or higher.
    # Don't log private authentication messages!
    *.info;mail.none;authpriv.none;cron.none                /var/log/messages
    
    # The authpriv file has restricted access.
    authpriv.*                                              /var/log/secure
    
    # Log all the mail messages in one place.
    mail.*                                                  -/var/log/maillog
    
    # Log cron stuff
    cron.*                                                  /var/log/cron
    
    # Everybody gets emergency messages
    *.emerg                                                 :omusrmsg:*
    
    # Save news errors of level crit and higher in a special file.
    uucp,news.crit                                          /var/log/spooler
    
    # Save boot messages also to boot.log
    local7.*                                                /var/log/boot.log
    

設定方式類似 syslog 更多關於設定請參考 http://benjr.tw/22756
每一列都要包含的格式 facility.level action

  • facility
    用以代表訊息的來源, local0 至 local7 為使用者自定.系統預定的有

    • kern :kernel message
    • user : generic user level message
    • mail : mail system
    • daemon : other daemon
    • authpriv : security/authorization messages
    • syslog : internal syslog messages
    • lpr : printing system
    • news : news system
    • uucp : UUCP subsystem
    • authpriv : security/authorization messages
    • ftp : FTP daemon
    • cron : clock daemons(atd and crond)
  • level(priority)
    代表何種等級的錯誤訊息需要登錄,可選用的錯誤等級(由高至低):
    “emerg” (0), “alert” (1),”crit” (2), “err” (3), “warning” (4), “notice” (5), “info” (6),”debug” (7).
    使用*代表所有的錯誤皆登錄,還有一種為none代表系統停用此一登錄措施.
  • action
    代表系統日誌檔所存放的位址,除了本機可存放,還可以指定遠端機器來存放日誌檔.

裡面會在 Action 的設置中看到比較特別的寫法 -/var/log/maillog , 減號(-) 代表的是先記錄到記憶體中,之後在同步到檔案中.

修改存檔後,重新啟動 rsyslog

# sudo /etc/init.d/rsyslog restart

SystemD 版本的 Linux 則是透過本身的 systemd-journald 來協助記錄系統日誌 (可以透過指令 #journalctl 來檢視),讀取系統日誌檔時,可以依據需求做分類,請參考 http://benjr.tw/97011

沒有解決問題,試試搜尋本站其他內容

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料