全面剖析syslogd

日誌系統:操作系統在運行過程中會有很多信息產生,這些信息即是我們去觀察系統運行過程當中正常狀況一種途徑;同時爲我們提供了當發生故障的時候定位問題所在位置根源

syslogd與klogd介紹

  1. syslogd;專門記錄非內核的其他設施所產生的日誌;當系統的控制權 由內核轉交給init的時候,這時候的日誌信息的記錄由syslog記錄 
  2. klogd:內核 主要負責內核所產生的日誌當系統啓動完成之後就會 
  3. 由klogd進程記錄控制並把這些內容記錄在/var/log/dmesg中 

查看命令

  1. # dmesg(專門負責打開var/log/dmesg文件,並顯示出來的 
  2. # cat命令也可以查看 

相關文件存放日誌信息類型介紹

  1. var/log/dmesg:存放的是內核產生的日誌信息,即啓動init程序之前產生的日誌信息 
  2. /var/log/messages:系統標準錯誤日誌信息;非內核產生的引導信息大多數的子系統所產生的日誌信息都會記錄到這裏 
  3. /var/log/maillog:存放由郵件系統產生的日誌信息; 
  4. /var/log/secure:存放與安全有關的日誌信息,裏面記錄了用戶正確或錯誤登錄系統的詳細的私密信息
  5. 只有管理員才能查看; 

日誌級別介紹

  1. priority(log level)日誌的級別,一般有以下幾種級別(從低到高)    
  2. debug           # 程序或系統的調試信息【級別越低,記錄的日誌越詳細,同時會導致硬盤工作超負荷 
  3. info            # 一般信息   
  4. notice          # 不影響正常功能,需要注意的消息    
  5. warning/warn    # 可能影響系統功能,需要提醒用戶的重要事件    
  6. err/error       # 錯誤信息    
  7. crit            # 比較嚴重的 【相當於發出藍色警報】   
  8. alert           # 必須馬上處理的 【相當於發出橙色警報】   
  9. emerg/panic     # 會導致系統不可用的 【相當於發出紅色警報】   
  10. *               # 表示所有的日誌級別    
  11. none            # 跟* 相反,表示什麼也不記錄 

facility(可以理解爲產生日誌的來源)經常用的總結如下

  1. auth                 # 認證相關的    
  2.  authpriv             # 權限,授權相關的    
  3.  cron                 # 任務計劃相關的    
  4. daemon               # 守護進程相關的 比如:httpd 工作在後臺的   
  5.  kern                 # 內核相關的    
  6.  lpr                  # 打印相關的    
  7.  mail                 # 郵件相關的    
  8.  mark                 # 標記相關的    
  9.  news                 # 新聞相關的    
  10.  security             # 安全相關的,與auth 類似     
  11.  syslog               # syslog自己的    
  12.  user                 # 用戶相關的    
  13.  uucp                 # unix to unix cp 相關的    
  14.  local0 到 local7     # 用戶自定義使用    
  15.  *                    # *表示所有的facility    

action(可以理解爲對日誌的處理辦法)

  1. 系統上的絕對路徑  # 普通文件 如: /var/log/xxx    
  2. |             # 管道  通過管道送給其他的命令處理    
  3. 終端           # 終端   如:/dev/console    
  4. @HOST         # 遠程主機 如: @10.0.0.1         
  5. 用戶           # 系統用戶 如: root    
  6. *             # 登錄到系統上的所有用戶,一般emerg級別的日誌是這樣定義的 

格式示例的詳解

  1. mail.info   /var/log/mail.log # 表示將mail相關的,級別爲info及以上級別的信息記錄到/var/log/mail.log文件中  
  2. auth.=info  @172.16.0.1       # 表示將auth相關的,只是把info級別的信息記錄到10.0.0.1主機上去  
  3. user.!=error                  # 表示記錄user相關的,除了error級別外的信息  
  4. user.!error                   # 比error低的級別信息  
  5. *.info                        # 所有可能產生日誌信息的子系統的info級別及其以上級別信息 
  6. mail.*                        # mail子系統產生的所有日誌信息 
  7. *.*                           # 記錄所有的日誌信息的所有級別的日誌信息  
  8. cron.info;mail.info           # 記錄多個日誌系統信息,中間用“;”隔開 
  9. cron,mail.info                # 意思同上  
  10. mail.*;mail.!=info            # 記錄mail相關的所有級別的信息,但是不包括info級別的  

對/etc/logrotate.conf配置文件的分析

  1. # see "man logrotate" for details   
  2. # rotate log files weekly   
  3. weekly       (意思是每週更新一次日誌文件)   
  4.   
  5. # keep 4 weeks worth of backlogs   
  6. rotate 4     (定義保留4個版本,超出這個定義的數就會被清除)    
  7. create new (empty) log files after rotating old ones   
  8. create       (滾動結束之後,生成新的一個空的日誌文件)   
  9.   
  10. # uncomment this if you want your log files compressed   
  11. #compress   
  12.   
  13. # RPM packages drop log rotation information into this directory   
  14. include /etc/logrotate.d     (日誌文件同時還依賴於這個文件,在/etc/logrotate.d中爲每個文件定義一個子系統的日誌滾動機制)   
  15. no packages own wtmp -- we'll rotate them here   
  16. /var/log/wtmp {              (指定一個日誌文件)  
  17.     monthly                (按月滾動,以這個日誌文件定義的滾動時間爲主,如果全局定義了,這個沒定義,以全局爲主) 
  18.     minsize 1M               (最小爲1M)  
  19.     create 0664 root utmp    (創建一個新的文件,權限爲0664,屬主爲root,日誌文件名爲utmp )  
  20.     rotate 1                 (保留1個歷史版本)   
  21. }   
  22. /var/log/btmp {   
  23.     missingok   
  24.     monthly   
  25.     minsize 1M   
  26.     create 0600 root utmp   
  27.     rotate 1   
  28. }  

對/etc/syslog.conf配置文件的分析

  1. # Log all kernel messages to the console.   
  2. # Logging much else clutters up the screen.   
  3. #kern.*                                                 /dev/console   
  4.   
  5. # Log anything (except mail) of level info or higher.   
  6. # Don't log private authentication messages!   
  7. *.info;mail.none;authpriv.none;cron.none                /var/log/messages   
  8. (除了mail,authpriv,cron之外所有facility產生的info以及info以上的級別都放在/var/llog/messages) 
  9. # The authpriv file has restricted access.   
  10. authpriv.*                                              /var/log/secure   
  11. 跟用戶授權相關的所有級別都記錄在/var/log/secure文件中   
  12. # Log all the mail messages in one place.   
  13. mail.*                                                  -/var/log/maillog   
  14. (與郵件相關的所有級別都記錄在/var/log/maillog文件中,此處的“-”表示異步寫入,不會同時寫入到磁盤上去)   
  15.   
  16. # Log cron stuff   
  17. cron.*                                                  /var/log/cron   
  18. (與cron相關的所有級別都記錄在/var/log/cron文件中 )  
  19. # Everybody gets emergency messages   
  20. *.emerg                                                 *   
  21. (相當於向每一個用戶發出紅色警報)   
  22. # Save news errors of level crit and higher in a special file.   
  23. uucp,news.crit                                          /var/log/spooler   
  24. (在uucp和news相關的crit和crit以上級別記錄在/var/log/spooler文件中)  
  25. # Save boot messages also to boot.log   
  26. local7.*                                                /var/log/boot.log   
  27. (用戶自定義的跟引導相關的所有級別都記錄在/var/log/boot.log文件中) 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章