詳細(xì)介紹Linux日志管理
2009年已經(jīng)過去了,Linux受到了廣大用戶的關(guān)注。Linux是一個成熟而穩(wěn)定的網(wǎng)絡(luò)操作系統(tǒng),目前,越來越多的網(wǎng)站采用Linux操作系統(tǒng),你可能會遇到Linux日志管理的問題,這里將介紹Linux日志管理的技巧,在這里拿出來和大家分享一下。
目錄
1. 使用shell向syslog日志文件寫入信息
2. 輸出iptables日志到一個指定的文件
內(nèi)容
1. 使用shell向syslog日志文件寫入信息
應(yīng)用程序使用syslog協(xié)議發(fā)送信息給Linux系統(tǒng)的日志文件(位于/var/log目錄). Sysklogd提供兩個系統(tǒng)工具: 一個是系統(tǒng)日志記錄, 另一個是內(nèi)核信息捕獲. 通常大多程序都使用C語言或者syslog應(yīng)用程序或庫來發(fā)送syslog消息.
下面介紹怎么樣使用shell向syslog日志文件寫入信息:
1). 使用Logger命令
logger命令是一個shell命令(接口). 你可以通過該接口使用syslog的系統(tǒng)日志模塊 你還可以從命令行直接向系統(tǒng)日志文件寫入一行信息.
比如, 記錄硬盤升級后的系統(tǒng)重啟信息:
$ logger System rebooted for hard disk upgrade
然后你可以查看/var/log/message文件:
# tail -f /var/log/message
輸出為:
Jan 26 20:53:31 dell6400 logger: System rebooted for hard disk upgrade
你也可以通過腳本程序來使用logger命令. 看下面的實例:
- #!/bin/bash
- HDBS="db1 db2 db3 db4"
- BAK="/sout/email"
- [ ! -d $BAK ] && mkdir -p $BAK || :
- /bin/rm $BAK/*
- NOW=$(date +"%d-%m-%Y")
- ATTCH="/sout/backup.$NOW.tgz"
- [ -f $ATTCH ] && /bin/rm $ATTCH || :
- MTO="you@yourdomain.com"
- for db in $HDBS
- do
- FILE="$BAK/$db.$NOW-$(date +"%T").gz"
- mysqldump -u admin -p'password' $db | gzip -9> $FILE
- done
- tar -jcvf $ATTCH $BAK
- mutt -s "DB $NOW" -a $ATTCH $MTO <<EOF
- DBS $(date)
- EOF
- [ "$?" != "0" ] && logger "$0 - MySQL Backup failed" || :
如果mysql數(shù)據(jù)庫備份失敗, 上面最后一行代碼將會寫入一條信息到/var/log/message文件.
2). 其它用法
如果你需要記錄/var/log/myapp.log文件中的信息, 可以使用:
$ logger -f /var/log/myapp.log
把消息發(fā)送到屏幕(標(biāo)準(zhǔn)錯誤), 如系統(tǒng)日志:
$ logger -s "Hard disk full"
你可以參考man參考頁獲得更多的選項信息:
man logger
man syslogd
2. 輸出iptables日志到一個指定的文件
Iptables的man參考頁中提到: 我們可以使用iptables在linux內(nèi)核中建立, 維護(hù)和檢查IP包過濾規(guī)則表. 幾個不同的表可能已經(jīng)創(chuàng)建, 每一個表包含了很多內(nèi)嵌的鏈, 也可能包含用戶自定義的鏈.
Iptables默認(rèn)把日志信息輸出到/var/log/messages文件. 不過一些情況下你可能需要修改日志輸出的位置. 下面向大家介紹怎么樣建立一個新的日志文件/var/log/iptables.log. 通過修改或使用新的日志文件, 你可以創(chuàng)建更好的統(tǒng)計信息或者幫助你分析網(wǎng)絡(luò)攻擊信息.
1). Iptables默認(rèn)的日志文件
例如, 如果你輸入下面的命令, 屏幕將顯示/var/log/messages文件中的iptables日志信息:
# tail -f /var/log/messages
輸出:
- Oct 4 00:44:28 debian gconfd (vivek-4435): Resolved address "xml:readonly:/etc/gconf/gconf.xml.defaults" to a read-only configuration source at position 2
- Oct 4 01:14:19 debian kernel: IN=ra0 OUT= MAC=00:17:9a:0a:f6:44:00:08:5c:00:00:01:08:00 SRC=200.142.84.36 DST=192.168.1.2 LEN=60 TOS=0x00 PREC=0x00 TTL=51 ID=18374 DF PROTO=TCP SPT=46040 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0
2). 輸出iptables日志信息到一個指定文件的方法
打開你的/etc/syslog.conf文件:
# vi /etc/syslog.conf
在文件末尾加入下面一行信息
kern.warning /var/log/iptables.log
保存和關(guān)閉文件.
重新啟動syslogd(如果你使用Debian/Ubuntu Linux):
# /etc/init.d/sysklogd restart
另外, 使用下面命令重新啟動syslogd(如果你使用Red Hat/Cent OS/Fedora Core Linux):
# /etc/init.d/syslog restart
現(xiàn)在確認(rèn)你的iptables使用了log-level 4參數(shù)(前面有一個log-prefix標(biāo)志). 例如:
- # DROP everything and Log it
- iptables -A INPUT -j LOG –log-level 4
- iptables -A INPUT -j DROP
舉一個例子, 丟棄和記錄所有來自IP地址65.55.11.2的連接信息到/var/log/iptables.log文件.
- iptables -A INPUT -s 64.55.11.2 -m limit --limit 5/m --limit-burst 7 -j LOG –log-prefix ‘** HACKERS **’ --log-level 4
- iptables -A INPUT -s 64.55.11.2 -j DROP
命令解釋:
. - log-level 4: 記錄的級別. 級別4為警告(warning).
. - log-prefix ‘*** TEXT ***’: 這里定義了在日志輸出信息前加上TEXT前綴. TEXT信息最長可以是29個字符, 這樣你就可以在記錄文件中方便找到相關(guān)的信息.
現(xiàn)在你可以通過/var/log/iptables.log文件參考iptables的所有信息:
# tail -f /var/log/iptables.log
以上就是Linux日志管理的技巧的介紹。
【編輯推薦】