1. 什麼是syslog
日誌的主要用途是系統審計,監測追蹤和分析統計. 爲了保證Linux系統正常運行,準確解決遇到的各類各樣的系統問題,認真地讀取日誌文件是管理員的一項很是重要的任務. Linux 內核由不少子系統組成,包括網絡,文件訪問,內存管理等.子系 統須要給用戶傳送一些消息,這些消息內容包括消息的來源及其重要性等 .全部的子系統都要把消息送到一個能夠維護的公用消息區,因而,就有了syslog. syslog是一個綜合的日誌記錄系統.它的主要功能是:方便日誌管理和分類存放日誌. syslog使程序設計者從繁重的,機械的編寫日誌文件代碼 的工做中解脫出來,使管理員更好地控制日誌的記錄過程.在syslog出現以前,每一個程序都使用本身的日誌記錄策略.管理員對保存什麼信息或是信息存放在 哪裏沒有控制權.
2. syslogd的配置文件
syslogd的配置文件/etc/syslog.conf規定了系統中須要監視的事件和相應的日誌的保存位置
cat /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# 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 #除了mail/news/authpriv/cron之外,將info或更高級別的消息送到/var/log/messages,其中*是通配符,表明 任何設備;none表示不對任何級別的信息進行記錄
# The authpriv file has restricted access.
authpriv.* /var/log/secure #將authpirv設備的任何級別的信息記錄到/var/log/secure文件中,這主要是一些和認證,權限使用相關的信息.
# Log all the mail messages in one place.
mail.* -/var/log/maillog #將mail設備中的任何級別的信息記錄到/var/log/maillog文件中, 這主要是和電子郵件相關的信息.
# Log cron stuff
cron.* /var/log/cron #將cron設備中的任何級別的信息記錄到/var/log/cron文件中, 這主要是和系統中按期執行的任務相關的信息.
# Everybody gets emergency messages
*.emerg * #將任何設備的emerg級別或更高級別的消息發送給全部正在系統上的用戶.
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler #將uucp和news設備的crit級別或更高級別的消息記錄到/var/log/spooler文件中.
# Save boot messages also to boot.log
local7.* /var/log/boot.log #將和本地系統啓動相關的信息記錄到/var/log/boot.log文件中.
3. syslogd語法
該配置文件的每一行的格式以下:
facility.priority action 設備.級別 動做
4. Syslogd設備字段
設備字段用來指定須要監視的事件.它可取的值以下:
authpriv cron daemon kern lpr syslog user uucp mail news
報告認證活動一般,口令等私有信息不會被記錄 報告與cron和at有關的信息 報告與xinetd有關的信息 報告與內核有關的信息 報告與打印服務有關的信息 由syslog生成的信息 報告由用戶程序生成的任何信息由UUCP生成的信息 報告與郵件服務有關的信息 報告與網絡新聞服務有關的信息
5. syslogd級別字段
級別字段用於指明與每一種功能有關的級別和優先級:
alert crit err warning notice info debug none * emerg
須要當即引發注意的狀況 危險狀況的警告 除了emerg,alert,crit的其餘錯誤 警告信息須要引發注意的狀況 值得報告的消息 由運行於debug模式的程序所產生的消息 用於禁止任何消息 全部級別,除了none 出現緊急狀況使得該系統不可用
6. syslogd動做字段
動做字段用於描述對應功能的動做
file username device @hostname
指定一個絕對路徑的日誌文件名記錄日誌信息 發送信息到指定用戶,*表示全部用戶 將信息發送到指定的設備中,如/dev/console將信息發送到可解析的遠程主機hostname,且該主機必須正在運行syslogd並能夠識別syslog的配置文件
7. 查看日誌文件
常見的日誌文件日誌文件一般存放在/var/log目錄下.在該目錄下除了包括syslogd 記錄的日誌以外,同時還包含全部應用程序的日誌. 爲了查看日誌文件的內容必需要有root權限.日誌文件中的信息很重要,只能讓超級用戶有訪問這些文件的權限.
8. log
cups/ httpd/ mail/ news/ boot.log dmesg maillog messages secure wtmp
存儲CUPS打印系統的日誌目錄 記錄apache的訪問日誌和錯誤日誌目錄 存儲mail日誌目錄 存儲INN新聞系統的日誌目錄 記錄系統啓動日誌記錄系統啓動時的消息日誌 記錄郵件系統的日誌 由syslogd記錄的info或更高級別的消息日誌 由syslogd記錄的認證日誌 一個用戶每次登陸進入和退出時間的永久記錄
9. 查看文本日誌文件
絕大多很多天志文件是純文本文件,每一行就是一個消息.只要是在Linux下可以處理純文本的工具都能用來查看日誌文件.可使用 cat,tac, more,less,tail和grep進行查看文件中每一行表示一個消息,並且都由四個域的固定格式組成: 時間標籤(Timestamp):表示消息發出的日期和時間. 主機名(Hostname):表示生成消息的計算機的名字. 生成消息的子系統的名字:能夠是"Kernel",表示消息來自內核或者 是進程的名字,表示發出消息的程序的名字. 在方括號裏的是進程的PID. 消息(Message),即消息的內容.
syslog發出的消息,說明了守護進程已經在 Dec 16,03:32:41 從新啓動了. Dec 16 03:32:41 cnetos5 syslogd 1.4.1: restart. # 在 Dec 19,00:20:56 啓動了內核日誌 klogd Dec 19 00:20:56 cnetos5 kernel: klogd 1.4.1, log source = /proc/kmsg started. # 在 Dec 19,00:21:01 啓動了xinetd Dec 19 00:21:01 cnetos5 xinetd[2418]: xinetd Version 2.3.14 started with libwrap loadavg labeled-networking options compiled in.
10. 查看非文本日誌文件Lastlog
也有一些日誌文件是二進制文件,須要使用相應的命令進行讀取.
使用lastlog命令來檢查某特定用戶上次登陸的時間,並格式化輸出上次登陸日誌 /var/log/lastlog 的內容
rpc **從未登陸過** rpcuser **從未登陸過** sshd **從未登陸過** pcap **從未登陸過** haldaemon **從未登陸過** xfs **從未登陸過** gdm **從未登陸過** boobooke **從未登陸過** baobao pts/1 192.168.1.2 三 11月 26 12:44:32 +0800 2008 abc **從未登陸過** test pts/1 192.168.1.5 四 11月 27 17:30:53 +0800 2008 test01 **從未登陸過**
last命令往回搜索/var/log/wtmp來顯示自從文件第一次建立以來登陸過用戶
root pts/1 116.226.69.195 Fri Aug 31 15:48 - 18:37 (02:49)
11. 查看非文本日誌文件lastb
lastb命令搜索/var/log/btmp來顯示登陸未成功的信息.
root ssh:notty 222.143.27.97 Thu Sep 6 19:43 - 19:43 (00:00)
12. 查看非文本日誌文件who
who命令查詢wtmp文件並報告當前登陸的每一個用戶.who命令的缺省輸出包括用戶名,終端類型,登陸日期及遠程主機.
[root
@server ~]# who
root pts/0 2012-09-08 10:18 (116.226.69.195)
[root
@server ~]# w
10:41:31 up 212 days, 20:19, 1 user, load average: 0.21, 0.16, 0.14
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 116.226.69.195 10:18 0.00s 0.09s 0.00s w
13.日誌滾動
爲何使用日誌滾動全部的日誌文件都會隨着時間的推移和訪問次數的增長而迅速增加,所以必須對日誌文件進行按期清理以避免形成磁盤空間的沒必要要的浪費.同時也 加快了管理員查看日誌所用的時間,由於打開小文件的速度比打開大文件的速度要快.
Logrotate 其命令格式爲: logrotate [選項] <configfile>
-d:詳細顯示指令執行過程,便於排錯或瞭解程序執行的狀況.
-f:強行啓動記錄文件維護操做,即便logrotate指令認爲無須要亦然 -m command:指定發送郵件的程序,默認爲 /usr/bin/mail. -s statefile:使用指定的狀態文件. -v:在執行日誌滾動時顯示詳細信息.
14. 日誌滾動
logrotate 默認的主配置文件是 /etc/logrotate.conf /etc/logrotate.d 的目錄下的文件,這些文件被 include 到主配置文件 /etc/logrotate.conf 中
# see "man logrotate" for details # 每週清理一第二天志文件
weekly #保存過去四周的日誌文件
rotate 4 #清除舊日誌文件的同時,建立新的空日誌文件
create #若使用壓縮的日誌文件,請刪除下面行的註釋符
#compress #包含/etc/logrotate.d目錄下的全部配置文件
include /etc/logrotate.d #設置/var/log/wtmp的日誌滾動
/var/log/wtmp {
monthly
minsize 1M
create 0664 root utmp
rotate 1
}
可使用ls命令顯示/etc/logrotate.d目錄:
[root
@server ~]# ls /etc/logrotate.d
mgetty psacct rpm setroubleshoot snmpd syslog yum
每一個文件的基本格式均相同
[root
@server ~]# cat /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron { #對日誌文件
sharedscripts #調用日誌滾動通用函數sharedscripts
postrotate #在日誌滾動以後執行語句括號postrotate和endscript之間的命令postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true #從新啓動syslogd
endscript
}
logrotate是由crond運行的,在默認配置中,能夠發如今/etc/cron.daily目錄中有一個名爲logrotate的文件
[root
@server ~]# cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
轉載請註明:
http://www.linuxeye.com/linuxrumen/781.html