Unix/Linux 系統自動化管理: 日誌管理篇

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

本文是Unix/Linux系統管理自動化系列中的一篇,主要講述如何實現自動化監控系統日誌中的錯誤以及警告信息並及時通知系統管理員.

系統日誌Unix/Linux中一個非常重要的功能組成部分.它可以按照某種規範記錄下系統所產生的所有行為.我們可以使用系統日誌所記錄的信息進行系統排錯,系統性能優化,或者根據這些信息調整系統的行為.另外,系統日誌還可以為系統的安全管理提供重要的信息.

不同的操作系統可能會使用不同的日誌方式,如AIX的Error log和Linux的syslog/syslog-ng.本文將分別論述在AIX上對Error log的監控和在Linux上對syslog/syslog-ng的監控.

AIX Error log 簡介及其自動化監控機制

大部分的 Unix/Linux 系統都使用 syslog 作為系統日誌方式,AIX 也支持 syslog 機制,但是 AIX 操作系統及其主要應用程序相關的日誌都使用 Error log 來記錄日誌,只有少量的應用程序使用 syslog.AIX syslog 和 Linux syslog 的功能以及配置非常類似,在此不再重複論述.

AIX Error log 機制是 AIX 基本系統 (Base Operating System) 的一部分,在預設安裝情況下無需進行任何配置即可使用 AIX Error log 機制.

AIX Error log 機制組件

AIX Error log 機制主要由以下幾個部分組成:

  1. 設備文件 /dev/error: 用於接收內核以及應用程序產生的日誌信息.
  2. 守護進程 /usr/lib/errdemon:在系統初始化時自動啟動,監控內核以及應用程序傳遞給設備文件 /dev/error 的日誌信息,並將日誌信息計入日誌文件.
  3. 日誌文件 /var/adm/ras/errlog:預設日誌文件.日誌文件位置可以通過命令 /usr/lib/errdemon – i 進行配置
  4. 輔助程序:除了設備文件、守護進程和日誌文件外,AIX Error log 還提供了豐富的輔助程序對 Error log 進行配置、操作、分析和生成報告.在下面的章節中會對各輔助程序進行詳細的說明.

AIX Error log 配置

AIX Error log 可以在不進行任何配置的情況下使用而且預設配置基本上可以滿足各種場景的使用需求,但 AIX 仍然提供了配置介面.通過配置介面可以修改設備文件 /dev/error 的緩衝區尺寸、日誌文件的位置、日誌文件的尺寸限制以及對重複日誌的處理等等.AIX Error log 通過命令 /usr/lib/errdemon 進行配置.

  1. 修改 Error log 設備的緩衝區大小

    Error log 設備 /dev/error 為塊設備,需要使用緩衝區進行讀寫.預設情況下,/dev/error 的緩衝區大小為 8KB,我們可以通過 /usr/lib/errdemon – B 來配置 /dev/error 的緩衝區大小.如果新配置的緩衝區大小大於現有的配置,新配置將會立即生效;如果新配置的緩衝區大小小於現有的配置,則新配置會在 errdemon 重新啟動後生效.

  2. 配置日誌文件路徑

    預設情況下,AIX Error log 會使用文件 /var/adm/ras/errlog 存儲日誌信息,使用 /usr/lib/errdemon – i 可以配置 Error log 日誌文件的路徑.新配置的日誌文件路徑會立即生效.

  3. 配置日誌文件大小限制

    AIX Error log 的日誌文件大小是可配置的,配置命令為 /usr/lib/errdemon – s.如果新配置的日誌文件大小大於現有的配置,新配置將會立即生效;如果新配置的日誌文件大小小於現有的配置,則現有的日誌文件將會被備份為 *.log,然後 errdemon 會用新的日誌文件大小配置生成一個新的日誌文件.

  4. 配置對重複條目的處理

    如果操作系統或者應用程序發生了重複的信息或者錯誤,在 Error log 中就會造成重複的條目.AIX Error log 對重複的條目會進行相應的處理,如在一定時間內內容相同的條目將會被標記為重複,如果重複的條目數超過了預先設置的閾值,則新的重複的條目將不會再作為重複條目被記入 Error log.是否打開重複條目處理功能的配置參數為 /usr/lib/errdemon – d,重複條目的時間間隔配置參數為 /usr/lib/errdemon – t,最大重複條目數的配置參數為 /usr/lib/errdemon – m.

AIX Error log 使用

AIX Error log 機制啟動后,操作系統或者應用程序將會通過 AIX Error log 記錄所發生的事件或者錯誤.本節將給出日常使用 AIX Error log 的常用命令及其使用方法.AIX Error log 的使用主要有生成 Error log 報告和刪除 Error log 條目.

生成 AIX Error log 報告

AIX 命令 errpt 可以用來生成 Error log 報告,errpt 提供了豐富的參數來指定源數據的範圍和報告的格式.如 -d 參數可以用來指定只顯示特定的錯誤種類,-s 和 -e 參數可以指定特定時間範圍內的日誌條目,-l 參數可以指定之顯示特定序號的日誌條目,-a 參數可以指定顯示日誌條目的詳細信息.具體 errpt 的用法可參見 errpt 的 manpage.

在此列舉 errpt 使用的一個例子並以此例子說明 AIX Error log 條目中各欄位的含義.


清單 1. errpt 命令輸出示例
				     #errpt -a -l 2     ---------------------------------------------------------     LABEL:          REBOOT_ID     IDENTIFIER:     2BFA76F6        Date/Time:       Mon Mar  2 21:38:21 2009     Sequence Number: 2     Machine Id:      00C0DD724C00     Node Id:         p6ml4n05     Class:           S     Type:            TEMP     WPAR:            Global     Resource Name:   SYSPROC        Description     SYSTEM SHUTDOWN BY USER        Probable Causes     SYSTEM SHUTDOWN        Detail Data     USER ID               0     0=SOFT IPL 1=HALT 2=TIME REBOOT               0     TIME TO REBOOT (FOR TIMED REBOOT ONLY)               0     #    

其中各主要欄位的含義如下:

LABEL:為該事件預先定義的名稱

IDENTIFIER:此事件的數字標識

Date/Time:事件發生的日期和時間

Sequence Number:事件序列號

Machine Id:此事件發生的節點處理器識別符

Node Id:此事件發生的節點名稱

Class:事件的類別.AIX Error log 目前支持的類別有:

H: 硬體

S:軟體

O:Informational 條目

U:無法確定事件的類別

Type:事件的嚴重程度,AIX Error log 目前支持的事件嚴重程度有:

PEND:設備或組件即將失效

PERF:設備或組件的性能已經低於可以接受的閾值

PERM:無法修復的錯誤.PERM 是所有錯誤中最嚴重的一種,PERM log 往往說明某個硬體或者軟體組件已經失效並且無法修復.

TEMP:在若干次失敗后某個錯誤被成功修復.TEMP 也可以用於標識 informational 條目.

UNKN:無法確定事件的嚴重程度

INFO:信息而並非錯誤

Resource Name:產生信息的組件名稱

Description:事件的簡短描述

Probable Causes:事件產生的可能原因

刪除 AIX Error log

刪除 AIX Error log 條目可以使用命令 errclear,errclear 也提供了選項用於指定刪除的範圍,如 -d 指定僅刪除特定類別的事件,-l 指定僅刪除特定序號的條目.通常情況下,errclear 可以被用作 cron 條目周期性執行用以清楚 Error log 文件.

手動生成 AIX Error log 條目

命令 errlogger 可以用於手動生成 AIX Error log 條目.手動生成 AIX Error log 條目可以用於測試 AIX Error log 功能或者測試下面將要論述的自動監控功能等.

AIX Error log 監控自動化

AIX 操作系統為 Error log 提供了一種通過 ODM 類 errnotify 進行錯誤通知 (Error Notification) 的機制.用戶可以通過添加一個 errnotify 的 ODM 類實例來實現 AIX Error log 的錯誤通知,即當 AIX Error log 機制記錄了錯誤條目后,errnotify 會調用預先定義好的命令通知系統管理員或者進行其它的修復動作.

AIX Error log 的錯誤通知機制的功能完全符合了監控自動化的要求,我們可以通過添加一個 errnotify 類實例來實現對 AIX Error log 的監控,當定義的錯誤發生后,errnotify 會調用相應的命令來通知系統管理員.需要注意的是只有 root 用戶才能添加 errnotify 類實例.

以下是添加 errnotify 類實例以及利用 errnotify 機制自動監控 AIX Error log 的具體步驟:

  1. 生成一個 ODM errnotify 類實例的 stanza 文件

    生成一個 ODM errnotify 類實例的 stanza 文件需要指定若干選項,各主要選項的說明如下:

    en_name:errnotify 類實例的名字,名字需要全局唯一.

    en_persistenceflg:在系統重新引導時是否自動刪除該實例,0 為在系統重新引導時自動刪除該實例,1 為在系統重新引導時不刪除該實例.

    en_type:指定僅監控特定嚴重程度的 Error log 條目如 INFO、PEND 等.

    en_class:指定僅監控特定類別的 Error log 條目如 H、S 等.

    en_method:定義在監測到 AIX Error log 條目后所採取的動作,動作可以為任何的腳本程序或者操作系統命令.errnotify 自動設置了關於 Error log 條目信息的變數可供監控程序使用:

    $1 error log 條目的序號

    $2 error log 條目的 ID

    $3 error log 條目的事件類別

    $4 error log 條目的事件嚴重程度

    $5 error log 條目的 Alert flags

    $6 error log 條目的產生的組件名稱

    $7 error log 條目的產生的組件種類 (Type)

    $8 error log 條目的產生的組件類 (Class)

    $9 error log 條目的錯誤標籤

    關於 errnotify 類實例的各欄位的具體說明,請參見 AIX 文檔《 General Programming Concepts: Writing and Debugging Programs 》

    例如我們可以生成一個 errnotify 類實例的 stanza 如下:



    清單 2. errnotify 類實例 stanza
    				    errnotify:       en_name = "errlog_notify"      en_persistenceflg = 1       en_method = "mail -s "Events occured in Error log: sequence = $1 error_id = $2      class = $3 type = $4 alert_flags = $5 res_name = $6 res_type = $7 res_class = $8      label = $9" root"      

    該 stanza 的內容可解釋為當任何的 AIX Error log 事件發生時,都會給 root 用戶發送一個郵件,郵件的內容中包含了 Error log 條目的具體信息.

  2. 將類實例添加到 ODM 資料庫

    AIX 命令 odmadd 可以將 ODM 類實例添加到 ODM 資料庫中.

    如 : odmadd /errnotifystanza

  3. 驗證 ODM errnotify 類實例

    可以用命令 odmget 來驗證 errnotify 類實例已經被正確添加.



    清單 3. 使用 odmget 命令查看 errnotify 類實例
    				    [node01][/]> odmget -q en_name="errlog_notify" errnotify       errnotify:         en_pid = 0         en_name = "errlog_notify"        en_persistenceflg = 1         en_label = ""        en_crcid = 0         en_class = ""        en_type = ""        en_alertflg = ""        en_resource = ""        en_rtype = ""        en_rclass = ""        en_symptom = ""        en_err64 = ""        en_dup = ""        en_method = "mail -s "Events occured in Error log: sequence = $1 error_id = $2        class = $3 type = $4 alert_flags = $5 res_name = $6 res_type = $7 res_class = $8        label = $9  contents = n`errpt -a -l $1n" root"   

  • 手動生成 Error log 條目測試監控是否工作

    在確認 errnotify 類實例已經被正確添加后即可以通過 errologger 手動生成 Error log 條目測試監控是否工作.如:



    清單 4. 使用 errlogger 命令生成測試日誌
    				     errlogger "this is a test for Error log monitoring"   

    然後即可以查看 root 的郵件中是否已經收到了該 Error log,如果工作正常 root 的郵件中會收到內容如下的郵件:



    清單 5. mail 命令
    				    Message 37:    From root Fri Mar 20 02:43:15 2009    Date: Fri, 20 Mar 2009 02:43:15 -0400    From: root    To: root    Subject: Events occured in Error log: sequence = 142983 error_id = 0xaa8ab241    class = O type = TEMP alert_flags = FALSE res_name = OPERATOR res_type = NONE    res_class = NONE label = OPMSG  contents =        ---------------------------------------------------------------------------     LABEL:          OPMSG     IDENTIFIER:     AA8AB241        Date/Time:       Fri Mar 20 02:43:14 EDT 2009     Sequence Number: 142983     Machine Id:      000181404C00     Node Id:         hacsmdev3     Class:           O     Type:            TEMP     Resource Name:   OPERATOR        Description     OPERATOR NOTIFICATION        User Causes     ERRLOGGER COMMAND               Recommended Actions            REVIEW DETAILED DATA        Detail Data     MESSAGE FROM ERRLOGGER COMMAND     this is a test for Error log monitoring 				   

  • 停止監控 AIX Error log

    如果想停止通過 errnotify 監控 AIX Error log,只需要將 errnotify 類實例從 ODM 資料庫中刪除即可.



    清單 6. 刪除 errnotify 類實例
    				     [node01][/]> odmdelete -q en_name="errlog_notify" -o errnotify     1 objects deleted    
  • Linux syslog/syslog-ng 簡介及其自動化監控機制

    大部分的 Linux 系統中都要使用 syslog 機制來記錄系統日誌,它具有很強的靈活性,能使系統根據不同日誌配置採取不同的動作.一般來講,syslog 能通過產生日誌的子系統和信息優先順序對日誌做分類處理,包括將日誌條目寫到一個文件,一個設備,或給用戶發送一個信息.它既可以記錄本地事件,也可能通過網路紀錄另一個主機上的事件.

    但是,隨著系統中運行的應用程序越來越多,一個子系統有可能同時被多個應用程序使用,這樣就導致一些不是很重要的信息將重要的信息掩蓋,僅憑產生日誌的子系統和信息優先順序來區分日誌的方法已經不能明確地甄別出系統管理者感興趣的信息.

    syslog-ng(下一代系統日誌工具)應運而生,它的一個設計原則就是建立更好的消息過濾粒度.syslog-ng 可以完全替代 syslog 的服務,並且通過定義規則,實現更好的過濾功能.

    下面我們將分別對 syslog 和 syslog-ng 機製做具體的介紹.

    Linux syslog/syslog-ng 機制組件

    Linux syslog/syslog-ng 機制主要由以下幾個部分組成:

    1. 設備文件 /dev/log: 用於接收內核以及應用程序產生的日誌信息.
    2. 守護進程:在系統初始化時自動啟動,監控內核以及應用程序傳遞給設備文件 /dev/log 的日誌信息,並將日誌信息計入日誌文件.
    3. 在 syslog 機制中為 /sbin/syslogd;在 syslog-ng 機制中為 /sbin/syslog-ng.
    4. 配置文件:為守護進程提供配置信息,在程序啟動時讀取,用於指定日誌記錄規則.

    在 syslog 機制中配置文件的默認位置為 /etc/syslog.conf;在 syslog-ng 機制中為 /etc/syslog-ng/syslog-ng.conf.

    日誌文件 /var/log/messages:預設日誌文件.用於記錄郵件以外其他設備優先順序高於」info」的日誌信息.

    Linux syslog/syslog-ng 配置和使用

    Linux 中 syslog/syslog-ng 的配置較 AIX 簡單而靈活,用戶只需手動修改 syslog.conf/syslog-ng.conf 文件中的配置條目后,重新啟動 syslog 服務即可完成,下面我們具體介紹配置方法:

    • 在 syslog 機制中配置文件 /etc/syslog.conf 的規則格式如下:

      facility.level action

      其中 facility.level 又稱為選擇符 (selector),facility 指產生日誌的子系統,level 指日誌級別.

      例如:

      authpriv.* /var/log/secure

      表示將來自子系統 authpriv 的所有優先順序日誌條目都寫入 /var/log/secure 文件中.

      facility 可以設置為下面的關鍵字之一:

      auth 由 pam_pwdb 報告的認證活動.

      authpriv 包括私有信息 ( 如用戶名 ) 在內的認證活動

      cron 與 cron 和 at 有關的信息.

      daemon 與 inetd 守護進程有關的信息.

      ftp 與 FTP 有關的信息

      kern 內核信息,通過 klogd 傳遞.

      lpr 與列印服務有關的信息.

      mail 與電子郵件有關的信息

      mark syslog 內部功能用於生成時間戳

      news 來自新聞伺服器的信息

      syslog 由 syslog 生成的信息

      user 由用戶程序生成的信息

      uucp 由 uucp 生成的信息

      local0 ~ local7 由自定義程序使用,例如使用 local5 做為 ssh 功能

      * 通配符代表除了 mark 以外的所有功能

      level 可以設置為下面的關鍵字之一 ( 降序排列,嚴重性越來越低 ):

      emerg 系統不可用

      alert 需要立即被修改的條件

      crit 阻止某些工具或子系統功能實現的錯誤條件

      err 阻止工具或某些子系統部分功能實現的錯誤條件

      warning 預警信息

      notice 具有重要性的普通條件

      info 提供信息的消息

      debug 不包含函數條件或問題的其他信息

      none 沒有優先順序,通常用於排錯

      * 除了 none 之外的所有級別

    • 在 syslog-ng 機制中配置文件 /etc/syslog-ng/syslog-ng.conf 的規則格式如下:

      log { source S1; source S2; ... filter F1; filter F2; ... destination D1; destination D2; ... };

      其中 source 為消息源標誌符,filter 為過濾器標誌符,destination 為目的地標誌符.

      例如:

      source src { unix-dgram("/dev/log"); };

      filter f_warn { level(warn, err, crit); };

      destination warn { file("/var/log/warn" fsync(yes)); };

      log { source(src); filter(f_warn); destination(warn); };

      表示將 /dev/log 設備收到的所有日誌信息做過濾處理,只把優先順序是 warn, err, crit 的日誌寫入 /var/log/warn 文件中.

      用戶可以選擇使用系統提供的 source/filter/destination 規則定義,也可以按規定格式定義用戶化的配置項.一般情況下,我們只創建自定義的 destination 並結合系統提供的 source 和 filter 一起使用.關於這些配置項的定義方法請參見 syslog-ng.conf manpage.

    Linux syslog-ng 監控自動化

    在 Linux 系統中,預設情況下,除 iptables, news 和 mail 子系統外,其它所有子系統的日誌信息都會存儲在 /var/log/messages 文件中.當系統中運行應用程序越來越多,各相關子系產生的日誌也會越來越繁雜,從系統日誌中分離出對自己有用的信息並對其實現自動監控往往令系統管理員頭痛不已.

    syslog-ng 服務就提供了一種消息粒度更小定義更為靈活的日誌過濾機機制,用戶可以根據不同的需要定義不同的消息源,過濾器和目的地,從而將特定的日誌信息存儲到特定的位置;同時,系統管理員還可以創建自動化腳本對這些分類后的日誌文件做進一步的處理.例如,定時監控系統錯誤信息並以郵件的方式通知系統管理員.

    下面我們將介紹對特定日誌信息中系統錯誤進行自動監控的具體步驟:

    1. 根據需要定義 filter 和 destination

      前面我們已經講過 Linux syslog-ng 中 /etc/syslog-ng/syslog-ng.conf 文件對 source,filter 和 destination 的定義規則,在這裡假設當前應用程序使用 local6 做網路管理功能,我們需要對來自這一子系統的優先順序為 err(錯誤)的系統消息做監控和管理.

      那麼,我們需要在 /etc/syslog-ng/syslog-ng.conf 文件中定義 filter 如下:

      filter f_local6err { level(err) and facility(local6); };

      定義 destination 如下:

      destination local6err { pipe(「/var/log/local6.err」 group(root) perm(0644)); };

      表示目的地為隊列 /var/log/local6.err,該隊列屬於 root 組,其訪問屬性為 0644.

    2. 組建 log 配置條目

      定義了 filter 和 destination 之後,我們需要將它們組合在一起,形成一個 syslog-ng 的 log 配置條目,例如:

      log { source(src); filter(f_ local6err); destination(local6err); };

      然後重新啟動 syslog-ng 服務使新配置生效:

      # /etc/init.d/syslog restart

      Shutting down syslog services done

      Starting syslog services done

    #

    這樣,系統中來自 local6 子系統的所有 err 日誌都將被存儲在 /var/log/local6.err 隊列中.這裡之將日誌目的設置為隊列而非普通文件主要是為下一步中自動監控做準備.並且,在設置前需要調用命令 「mkfifo /var/log/local6.err」來預告創建好這個隊列.

  • 創建腳本對目標隊列做自動監控

    為了能將 /var/log/local6.err 隊列接收到系統錯誤及時地通知給系統管理員,我們需要創建一個腳本定期讀取 local6.err 隊列,一旦監測到有新的系統錯誤產生,就以 mail 的形式通知系統管理員.

    下面是一個監測隊列的自動化腳本的 perl 實例僅供參考.



    清單 7. 監測隊列的自動化腳本
    				     # script monitor_fifo     #!/usr/bin/perl        # $fifo 為目標隊列    my $fifo = 「/var/log/local6.err」;        # 檢測 fifo 的有效性   	 local $SIG{ALRM} = sub { die "alarmn" };    	 eval {    		 alarm 4;    		 open(PIPE, $fifo) or die            print 「Error: $fifo can not be opened.n」;    		 alarm 0;    	 };    	 if ($@ =~ /alarm/) { close PIPE; exit 0; }        # 讀取 fifo    	 my $allinfo = "";    	 while (1)    	 {    		 my $line;    		 eval {    			 alarm 2;    			 $line = <PIPE>;    			 alarm 0;    		 };    		 if ($@ =~ /alarm/) {    				 close PIPE;                    # 如果讀到系統錯誤日誌,郵件通知系統管理員   		     if ($allinfo)    		         {    			  my $command = 「echo 「$allinfo」 | mail -s 」$fifo」 root」;    			  my $rc = system($command);                        if ($rc)                        {                            print 「Notification to root failed.n」;    					 }    				 }       				 exit 0;    		 }    		 $allinfo .= $line;    	 }    	 close PIPE; 	   

    不難發現,這個自動化腳本會將目標隊列中現存的所有日誌以郵件的形式發送給系統 root 用戶,如果系統管理員需要連續地定期地對這一目標隊列進行自動監控,那麼就需要藉助 Linux 系統的 crontab 功能,使系統可以定期地調用 monitor_fifo 腳本.

    例如:

    使用 crontab -e 命令編輯 crontab 配置文件,並添加如下條目:

    */1 * * * * /root/monitor_fifo 1>/dev/null 2>/dev/null

    上面的例子表示每一分鐘調用一次 monitor_fifo 腳本.

  • 驗證配置是否成功

    管理員可以使用 logger 命令產生幾條測試日誌信息.

    # logger -p local6.err "This is a local6.err test message1."

    # logger -p local6.err "This is a local6.err test message2."

    # logger -p local6.err "This is a local6.err test message3."

    表示產生三條 facility 為 local6,level 為 err 的消息內容為 This is a local6.err test message# 的系統日誌.

    如果配置正確,這條消息將會被存放在目標隊列 /var/log/local6.err 中.通過系統調用 /root/monitor_fifo 腳本,這條系統錯誤日誌信息會被郵寄給 root 用戶,使用 mail 命令即可讀取這些郵件.



    清單 8. mail 命令
    				     # mail     mailx version nail 11.25 7/29/05.  Type ? for help.    "/var/mail/root": 1 message 1 new     >N  1 root@p6hv8n02.clus Tue Apr 14 03:19   21/808   /var/log/monitor.warn     ?        Message  1:     From root@p6hv8n02.clusters.com  Tue Apr 14 03:19:37 2009     X-Original-To: root     Delivered-To: root@p6hv8n02.clusters.com     Date: Tue, 14 Apr 2009 03:19:37  0000     To: root@p6hv8n02.clusters.com     Subject: /var/log/monitor.warn     User-Agent: nail 11.25 7/29/05     MIME-Version: 1.0     Content-Type: text/plain; charset=us-ascii     Content-Transfer-Encoding: 7bit     From: root@p6hv8n02.clusters.com (root)        Apr 14 03:19:26 p6hv8n02 root: This is a local6.err test message1.     Apr 14 03:19:28 p6hv8n02 root: This is a local6.err test message2.     Apr 14 03:19:30 p6hv8n02 root: This is a local6.err test message3.    
     
     

    我們可以看出,通過這一配置,系統管理員可以很方便對系統錯誤進行自動監控.

  • 注意事項

    在 Linux 系統中,一些安全設置會影響到 syslog/syslog-ng 的使用,在配置過程中要特別注意否則 syslog/syslog-ng 將不能正常工作.

    在 RedHat 系統中,使用 syslog/syslog-ng 時 SELinux (Security-Enhanced Linux) 服務關閉,可參見如下方法:

    • 修改 /etc/selinux/config 文件,設置 SELINUX=permissive.
    • 重啟系統使 selinux 設置生效.

    在 SLES10 SP1 及其以上服務級的系統中,為使 syslog/syslog-ng 正常工作,我們需要修改 /etc/apparmor.d/sbin.syslog-ng 文件或者從 AppArmor 列表中刪除 syslog 項.下面兩個例子分別介紹如何修改 sbin.syslog-ng 文件和從 Apparmor 列表中刪除 syslog 項的具體方法:

      • 修改 sbin.syslog-ng 文件,設置 fifo /var/log/local6.err 為讀寫許可權,並重新啟動 boot.apparmor 服務.如下:



    清單 9. 修改 apparmor 訪問許可權
    				     # cat /etc/apparmor.d/sbin.syslog-ng     #include <tunables/global>     /sbin/syslog-ng {     #include <abstractions/base>     .     .     .     /var/run/syslog-ng.pid w,     /var/log/local6.err wr,     }        # /etc/init.d/boot.apparmor restart    

      • 從 AppArmor 列表中刪除 syslog 項,並重新啟動 boot.apparmor 服務.如下:

    #rm -f /etc/apparmor.d/sbin.syslogd

    #rm -f /etc/apparmor.d/sbin.syslog-ng

    # /etc/init.d/boot.apparmor restart

  • 取消配置

    Linux syslog/syslog-ng 的取消配置操作相對簡單,只需要手動編輯 /etc/syslog.conf 或 /etc/syslog-ng/syslog-ng.conf 文件,刪除相關的配置信息,然後重新啟動 syslog 服務即可.

    在這個例子中,除取消 syslog/syslog-ng 配置外,我們還需要清除 crontab 中的配置信息.

      小結

      本文介紹了 AIX 和 Linux 上的日誌方式 AIX Error log 和 Linux syslog 以及如何自動化監控 AIX Error log 和 Linux syslog.監控系統日誌會給系統管理員提供豐富的關於系統運行的信息,自動化監控的實現更能為系統管理員在系統發生異常時採取迅速的措施提供了方便





    1. [火星人 ] Unix/Linux 系統自動化管理: 日誌管理篇已經有1070次圍觀

      http://coctec.com/docs/linux/show-post-52995.html