歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

Linux操作系統日志管理的技巧介紹

1. 使用Shell向Syslog日志文件寫入信息

應用程序使用Syslog協議發送信息給Linux系統的日志文件(位於/var/log目錄)。Sysklogd提供兩個系統工具: 一個是系統日志記錄, 另一個是內核信息捕獲。通常大多程序都使用C語言或者Syslog應用程序或庫來發送Syslog消息。

下面介紹如何使用sShell向Syslog日志文件寫入信息:

1). 使用Logger命令

Logger命令是一個Shell命令(接口)。你可以通過該接口使用Syslog的系統日志模塊 你還可以從命令行直接向系統日志文件寫入一行信息。

比如, 記錄硬盤升級後的系統重啟信息:

$ 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="[email protected]"
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數據庫備份失敗, 上面最後一行代碼將會寫入一條信息到/var/log/message文件。

2). 其它用法

如果你需要記錄/var/log/myapp.log文件中的信息, 可以使用:

$ logger -f /var/log/myapp.log

把消息發送到屏幕(標准錯誤), 如系統日志:

$ logger -s "Hard disk full"

你可以參考man參考頁獲得更多的選項信息:

man logger
man syslogd

2. 輸出Iptables日志到一個指定的文件

Iptables的man參考頁中提到: 我們可以使用Iptables在Linux內核中建立, 維護和檢查IP包過濾規則表。幾個不同的表可能已經創建, 每一個表包含了很多內嵌的鏈, 也可能包含用戶自定義的鏈。

Iptables默認把日志信息輸出到/var/log/messages文件。不過一些情況下你可能需要修改日志輸出的位置。下面向大家介紹如何建立一個新的日志文件/var/log/iptables.log。通過修改或使用新的日志文件, 你可以創建更好的統計信息或者幫助你分析網絡攻擊信息。

1). Iptables默認的日志文件

例如, 如果你輸入下面的命令, 屏幕將顯示/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

保存和關閉文件。

重新啟動Syslogd(如果你使用Debian/Ubuntu Linux):

# /etc/init.d/sysklogd restart

另外, 使用下面命令重新啟動Syslogd(如果你使用Red Hat/Cent OS/Fedora Core Linux):

# /etc/init.d/syslog restart

現在確認你的Iptables使用了log-level 4參數(前面有一個log-prefix標志)。例如:

# 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個字符, 這樣你就可以在記錄文件中方便找到相關的信息。

現在你可以通過/var/log/iptables.log文件參考Iptables的所有信息:

# tail -f /var/log/iptables.log
Copyright © Linux教程網 All Rights Reserved