作者 主題: Linux Log Server 教學  (閱讀 9812 次)

0 會員 與 1 訪客 正在閱讀本文。

HaWay

  • 大隻佬!
  • 老人組
  • 俺是博士!
  • *****
  • 文章數: 3977
    • 檢視個人資料
Linux Log Server 教學
« 於: 2013-07-24 10:58 »
用 Linux 內建的 rsyslog 就可以做一個間單的 log server
但是這個 log server 只能收集 log, 若要分析要靠其他工具

舊的 syslog 沒辦法當作 Server 用只能把資料丟出來
所以要當 Server 的機器最好找新一點的作業系統
要本身是 rsyslogd 不是 syslogd

修改設定檔 /etc/rsyslog.conf, 開啟 rsyslogd 聆聽在網路介面
預設是指接收本機 log, 把下面四個調整後就可以接收 log

log 丟出來的方式一般都是使用 UDP 的方式,
基本上我會建議你同時也把 TCP 打開, 一些比較重要的 Server
就指定使用 TCP 的方連線, 比較不會掉資料

代碼: [選擇]
# 這是 UDP 的設定
# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514

# 這是 TCP 的設定
# Provides TCP syslog reception
$ModLoad imtcp.so
$InputTCPServerRun 514

開啟這兩個設定後重新啟動 rsyslog 就可以看到 rsyslogd 聆聽在網路介面(Port 514)
UDP 連線請用 netstat -uap , TCP 請用 -tap 看

代碼: [選擇]
[root@abc ~]# netstat -uap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name

udp        0      0 *:syslog                    *:*                                     15626/rsyslogd

請記得開啟防火牆的 Port (UDP 跟 TCP 都要開)

接下來我先介紹 Clinet 怎麼把資料丟出來, 其實很簡單
假設 log server 的位置是 100.200.100.200
在 Clinet 的 /etc/syslog.conf 或 /etc/rsyslog.conf 最後設定

代碼: [選擇]
*.*                           @100.200.100.200

你可架設兩三台的 log Server 只要設定多台, 所有資料都會丟到每一台去
只要設定:

代碼: [選擇]
*.* @100.200.100.200
*.* @@100.200.100.201
*.* @100.200.100.202

兩個小老鼠表示要用 TCP 的方式傳送 log, 一個小老鼠表示 UDP

當然你也可以只丟某些資料譬如:

代碼: [選擇]
local1.* @100.200.100.200

記得要重新啟動 rsyslog

所以基本上 log server 你裝好了, Clinet 也設定好了
現在開始設定當資料丟到 log server 的時候你要怎麼分離這些資料
你總不想看到所有 Server 的 log 都混在一起, 在 log server 的
rsyslog.conf 的設定檔裡面可以針對不同的來源建立資料夾,
此處的範例將所有 log 都放在 apache 的目錄裡面, owner 也是 apache,
這樣就可以透過網頁來看 log 或抓 log
也可以依照不同的年月日跟主機來源區分
先設定 log server 會自動建立目錄

代碼: [選擇]
/etc/rsyslog.conf:

$CreateDirs on
$DirCreateMode 0755
$FileCreateMode 0644
$umask 0022
$DirGroup apache
$FileGroup apache

template 就可以設定資料擺放的位置跟方式可以在路徑的地方加上變數, 若不存在的路徑就會動建立
譬如來源 25.25.25.25 在 2013 年 4 月 2 號的 auth log 就會放在

"/var/www/html/25.25.25.25/2013/4/2/auth"

設定方式如下:

代碼: [選擇]
$template DynFile, "/var/www/html/%FROMHOST-IP%/%$YEAR%/%$MONTH%/%$DAY%/%syslogfacility-text%"
*.* ?DynFile

template 還有很多變數可以設定, 相關變數可參考 man rsyslog.conf  "Available Properties" 章節

記得先找台測試機試一下再上線~~
除了 Server 之外只要設備可以支援 syslog 都可以直接丟到 log server, 沒問題的
缺點就是目前我沒研究怎麼收 Windows 的 log .....

我做人那麼 nice, 肯定有什麼誤會.....

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17463
    • 檢視個人資料
    • http://www.study-area.org
Re: Linux Log Server 教學
« 回覆 #1 於: 2013-07-26 20:02 »
讚!

這位大大,可以來我們SA講一場嗎?(跪求〜〜

xiang

  • 鑽研的研究生
  • *****
  • 文章數: 711
  • 性別: 男
    • 檢視個人資料
Re: Linux Log Server 教學
« 回覆 #2 於: 2013-07-28 11:26 »
棒棒~~

日京三子

  • 全區板主
  • 俺是博士!
  • *****
  • 文章數: 8829
    • 檢視個人資料
    • http://www.24online.cjb.net
Re: Linux Log Server 教學
« 回覆 #3 於: 2013-07-29 11:15 »
這個讚! 超實用!!!
哈克不愛的多合一輸入平台----->新香草口味
過去的時間不斷流逝,抹去的眼淚已成追憶;
乾枯的雙手無力阻止,再會了我遠去的曾經。

西歪街

  • 鑽研的研究生
  • *****
  • 文章數: 696
  • 性別: 男
    • 檢視個人資料
Re: Linux Log Server 教學
« 回覆 #4 於: 2013-07-31 17:26 »
太厲害了,可以開場課現場教學嗎?

kojj

  • 懷疑的國中生
  • **
  • 文章數: 45
    • 檢視個人資料
Re: Linux Log Server 教學
« 回覆 #5 於: 2013-11-01 16:26 »
Windows 的event log 同樣也可以丟到syslog server去
大夥可以使用evtsys https://code.google.com/p/eventlog-to-syslog/
不過收log時,要注意一下log server語系設定,不然會發生丟進來但是看不懂

若要收IIS的log 則建議採用log paser
軟體說明 http://www.microsoft.com/taiwan/technet/iis/expand/LogParser.aspx
軟體下載 http://www.microsoft.com/en-us/download/details.aspx?id=24659
也是可以丟到syslog server 整理與分析