Linux下使用rsyslog部署Log Service器 && 記錄history並發送到rsyslog伺服器,linuxrsyslog
一、syslog服務簡介
rsyslog 是一個 syslogd 的多線程增強版。rsyslog負責寫入日誌, logrotate負責備份和刪除舊日誌, 以及更新記錄檔
logger命令
將自訂的資訊寫入到本地日誌系統需要用到:logger 命令
logger 是一個shell 命令介面,可以通過該介面使用Syslog的系統日誌模組,還可以從命令列直接向系統記錄檔寫入一行資訊
logger -it error -p local5.info "hello world"
-i 在每行都記錄進程ID
-t 日誌中的每一行都加一個error標籤
-p 指定自訂的日誌裝置和記錄層級,相關內容參見文章附錄
日誌類型
| 日誌類型 |
說明 |
| auth |
pam產生的日誌 |
| authpriv |
ssh,ftp等登入資訊的驗證資訊 |
| cron |
時間任務相關 |
| kern |
核心 |
| lpr |
列印 |
| mail |
郵件 |
| mark(syslog) |
rsyslog服務內部的資訊,時間標識 |
| news |
新聞群組 |
| user |
使用者程式產生的相關資訊 |
| uucp |
unix to unix copy, unix主機之間相關的通訊 |
| local1~7 |
自訂的日誌裝置 |
記錄層級
| 層級 |
說明 |
| debug |
有調式資訊的,日誌資訊最多 |
| info |
一般資訊的日誌,最常用 |
| notice |
最具有重要性的普通條件的資訊 |
| warning |
警告層級 |
| err |
錯誤層級,阻止某個功能或者模組不能正常工作的資訊 |
| crit |
嚴重層級,阻止整個系統或者整個軟體不能正常工作的資訊 |
| alert |
需要立刻修改的資訊 |
| emerg |
核心崩潰等嚴重資訊 |
| none |
什麼都不記錄 |
二、syslog服務配置
[root@localhost]# yum install rsyslog rsyslog-mysql logrotate[root@localhost]# service rsyslog statusrsyslogd (pid 24331) is running...[root@localhost]# ps -ef | grep rsyslogd | grep -v greproot 24331 1 0 20:26 ? 00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 2 -r -x -m 180
server:
配置rsyslog
[root@localhost]# vim /etc/sysconfig/rsyslog 1 # Options for rsyslogd 2 # Syslogd options are deprecated since rsyslog v3. 3 # If you want to use them, switch to compatibility mode 2 by "-c 2" 4 # See rsyslogd(8) for more details 5 # SYSLOGD_OPTIONS="-c 5" 6 SYSLOGD_OPTIONS="-c 2 -r -x -m 180" 7 KLOGD_OPTIONS="-x"
各參數作用:
-c 指定運行相容模式。
-r 指定監聽連接埠。 預設514
-x 在接收用戶端訊息時,禁用DNS尋找。需和-r參數配合使用。
-m 標記時間戳記。單位是分鐘,為0時,表示禁用該功能。
編輯rsyslog.conf 開啟相關屬性
$ModLoad immark
$ModLoad imudp
$UDPServerRun 514
查看是否啟動
[root@localhost]# netstat -nultp | grep 514udp 0 0 0.0.0.0:514 0.0.0.0:* 24331/rsyslogd udp 0 0 :::514 :::* 24331/rsyslogd
Client:
編輯rsyslog.conf 新增以下:
*.* @192.168.1.10
說明:
注意:如果server端開啟的是tcp的514連接埠,上面就應該這樣寫:*.* @@rsyslog-server-ip記錄日誌(有一個很實用的功能記錄伺服器執行的history)
這裡有多種方法
第一種
修改bash源碼,重新編譯
# wget http://ftp.gnu.org/gnu/bash/bash-4.2.tar.gz# tar zxvf bash-4.2.tar.gz -C /usr/local/bash-4.2# cd /usr/local/bash-4.2。。。
可以參見 http://levichen.logdown.com/posts/2013/11/04/syslog-record-history
第二種 使用trap (Just add the following lines in your
/etc/profile)
function log2syslog{ declare command command=$(fc -ln -0) logger -p local1.notice -t bash -i — $USER : $command}trap log2syslog DEBUG第三種 (Just add the following lines in your
/etc/profile)
export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'export PROMPT_COMMAND='{ command=$(history 1 | { read x y; echo $y; }); logger -p local1.notice -t bash -i "user=$USER,from=$SSH_CLIENT,pwd=$PWD,command:$command"; }'alias precmd "history 1 | /bin/logger -p local1.notice -t `echo $SHELL`:`whoami`:`pwd`:`ip r l |cut -d' ' -f12` -i "PROMPT_COMMAND='history -a >(tee -a ~/.bash_history | logger -t "$USER[$$] $SSH_CONNECTION")'export PROMPT_COMMAND='if [ "$(id -u)" -ne 0 ]; then echo "$(date "+%Y-%m-%d.%H:%M:%S") $(pwd) $(history 1)" >> ~/.logs/bash-history-$(date "+%Y-%m-%d").log; fi'
有好多種方式來記錄,我採用第二條命令
三、rsyslog server檔案配置
修改設定檔
vim /etc/rsyslog.d/50-default.conf
新增內容
*.* /var/log/remotehost.log
建立儲存記錄檔
touch /var/log/remotehost.log
重啟rsyslog server,用tail動態查看
tail -f /var/log/remotehost.log
參考文章
http://levichen.logdown.com/posts/2013/11/04/syslog-record-history