您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Solaris中syslog機制有什么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
syslog機制負責發送、記錄系統內核及工具所產生的信息,由syslog()調用、syslogd守護進程和配置文件/etc/syslog.conf組成。當系統內核及工具產生信息時,通過調用syslog(),把信息送往syslogd,syslogd再根據/etc/syslog.conf中的配置要求,將這些信息分別作如下處理:
1.記錄到系統日志中;
2.輸出到系統控制臺上;
3.轉發給指定的用戶;
4.通過網絡轉發給其它主機上的syslogd。
通過syslog.conf的配置,我們可以靈活地對信息的發送和保存進行控制。
syslogd進程在系統啟動時由/etc/rc2.d/S74syslog啟動。如果需要手工啟動或停止syslogd,可以使用命令:
# /etc/init.d/syslog start | stop
/etc/syslog.conf文件中的一項配置記錄由“選項”(selector)和“動作”(action)兩個部分組成,兩者間用tab制表符進行分隔。而“選項”又由一個或多個形如“類型.級別”格式的保留字段組合而成,各保留字段間用分號分隔。
保留字段中的“類型”代表信息產生的源頭,可以是:
kern 由kernel產生的信息;
user 由用戶進程產生的信息。對那些由程序或不在此列出的工具產生的信息,其缺省類型都是“user”;
mail 郵件系統產生的信息;
daemon 系統守護進程的信息,如in.ftpd、telnetd;
auth 由login, su, getty等進行身份認證時產生的信息;
syslog 由syslogd自己內部產生的信息;
lpr 行打印spooling系統的信息;
news USENET 網絡新聞系統的信息;
uucp UUCP系統信息;
cron cron和at工具信息;
local0-7 保留為local使用;
mark syslogd內部產生的時間戳信息;
* 除mark之外的所有其它類型(此符號不可用以代表所有級別)。
保留字段中的“級別”代表信息的重要性,可以是:
emerg 緊急,處于Panic狀態。通常應廣播到所有用戶;
alert 告警,當前狀態必須立即進行糾正。例如,系統數據庫崩潰;
crit 關鍵狀態的警告。例如,硬件故障;
err 其它錯誤;
warning 警告;
notice 注意;非錯誤狀態的報告,但應特別處理;
info 通報信息;
debug 調試程序時的信息;
none 通常調試程序時用,指示帶有none級別的類型產生的信息無需送出。如*.debug;mail.none表示調試時除郵件信息外其它信息都送出。
“動作”域指示信息發送的目的地。可以是:
/filename 日志文件。由絕對路徑指出的文件名,此文件必須事先建立;
@host 遠程主機;
user1, user2 指定用戶。如果指定用戶已登錄,那么他們將收到信息;
* 所有用戶。所有已登錄的用戶都將收到信息。
我們來看看/etc/syslog.conf文件中的實例:
……
*.err;kern.debug;daemon.notice;mail.crit /var/adm/messages
……
這行中的“action”就是我們常關心的那個/var/adm/messages文件,輸出到它的信息源頭“selector”是:
*.err - 所有的一般錯誤信息;
kern.debug - 核心產生的調試信息;
daemon.notice - 守護進程的注意信息;
mail.crit - 郵件系統的關鍵警告信息
于是我們對/var/adm/messages中的東東怎么來的大致清楚一點了。再看下面(不理會那個注釋符號“#”):
……
# if a non-loghost machine chooses to have authentication messages
# sent to the loghost machine, un-comment out the following line:
#auth.notice ifdef(‘LOGHOST’, /var/log/authlog, @loghost)
……
這里涉及Solaris下的loghost和m4宏解釋器。loghost好理解,就是在局域網內多臺SUN機器中指定一臺作為loghost,大家的syslogd有水就都往它上面灌。具體誰是loghost在/etc/hosts中定義:
……
192.168.1.11 host1 loghost
192.168.1.22 host2
……
m4負責解釋ifdef,它的事跡這里就不去深究了(要考SA的兄弟姐妹們可要去看啊,有題的),反正上面那個ifdef的意思就是:如果本機是loghost,那么信息送到/var/log/authlog中,否則送到@后的主機上。
下面作為一個示例,看看如何使用syslog機制來對telnet登錄進行記錄。
Telnet和ftp等許多網絡服務是通過inetd來提供的。因此先檢查一下inetd使用了什么類型和級別的syslog調用:
# man inetd
……
-t Instructs inetd to trace the incoming
connections for all of its TCP services. It does this by
logging the client’s IP address and TCP port number,
along with the name of the service, using the syslog(3)
facility. UDP services can not be traced. When tracing is
enabled, inetd uses the syslog facility code ``daemon’’
and ``notice’’ priority level.
……
就是說,啟動帶-t選項的inetd,它才會調用syslog來記錄TCP服務的細節,類型是daemon,級別是notice。于是先修改inetd的啟動腳本/etc/init.d/inetsvc,找到inetd那行,改為:
/usr/sbin/inetd -s -t &
前面看到,daemon.notice已經包括在syslog.conf中,action是/var/adm/messages。如果action不想變,那么就不用做修改了。
重啟一下syslogd:
# /etc/init.d/syslog stop
# /etc/init.d/syslog start
重啟一下inetd:
# /etc/init.d/inetsvc stop
# /etc/init.d/inetsvc start
試驗一下結果。開一個窗口監視有沒有新的message來:
# tail -f /var/adm/messages
從另一臺機器上telnet或ftp上來。上面的監視窗口中應該有輸出(^C 終止監視):
……
Jun 18 12:08:42 host1 inetd[755]: [ID 317013 daemon.notice] ftp[759] from 192.168.1.88 1082
Jun 18 12:09:13 host1 inetd[755]: [ID 317013 daemon.notice] telnet[760] from 192.168.1.88 1083
Jun 18 12:11:22 host1 inetd[755]: [ID 317013 daemon.notice] ftp[771] from 192.168.1.88 1084
關于“Solaris中syslog機制有什么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。