新聞中心
在centos7中,Rsyslong是一個集中式的日志收集系統(tǒng),可以運行在TCP或者UDP的514端口上。

創(chuàng)新互聯主要從事成都做網站、網站設計、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務伊吾,10多年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575
目錄
- 開始之前
- 配置接收日志的主機
- 配置發(fā)送日志的主機
- 日志回滾
- 附件:創(chuàng)建日志接收模板
- 排錯
開始之前
本文的配置環(huán)境如下
系統(tǒng):CentOS7
主機數量:2
接收日志的主機ip:192.168.1.112;主機名:server112
發(fā)送日志的主機ip:192.168.1.204;主機名:server204
rsyslog版本號:rsyslog-7.4.7-7.el7_0.x86_64
目的:把server204上產生的所有日志信息和所有的操作命令都發(fā)送到server112主機上,以便集中監(jiān)控和分析日志
如果你的主機名在安裝系統(tǒng)時沒有修改,默認為localhost.domain,如果不修改主機名,那么所有的日志集中在一個服務器上時就會互相覆蓋。
查看當前的主機名:hostname
修改主機名流程:
在文件/etc/hostname中添加新的主機名
在文件/etc/hosts的第一行的兩個地方添加新的主機名
注意:一定要在localhost.domain的前面添加{主機名}.domain,否則不能在/var/log目錄下產生以主機名命名的目錄
相關文件可以到主機寶貝資源站下載:
具體下載目錄在 /2017年資料/2月/8日/CentOS 7搭建Rsyslong集中式日志系統(tǒng)/
在該項目下的scripts目錄下有兩個文件,configure_rsyslog_for_client.sh是用來配置發(fā)送日志的客戶端腳本,configure_rsyslog_for_server.sh是用來配置接收日志的服務器端腳本。往后會在該項目中添加日志分析系統(tǒng)和更為全面的日志管理方法。
配置接收日志的主機
查看你的系統(tǒng)上是否安裝了rsyslog系統(tǒng)
rpm -qa | grep rsyslog
在主機上安裝rsyslog
yum install rsyslog* -y
安裝完成后,打開文件/etc/rsyslog.conf進行配置,主要是把下面的注釋去掉,并添加三行字符
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" * *.* ?RemoteLogs & ~
如下圖所示:
在此對該模板進行簡單解釋,$template RemoteLogs(這里“RemoteLogs” 字符串可以為任何其他的描述性的名稱)指令使rsyslog后臺進程將日志消息寫到/var/log下的單獨的本地日志文件中,其中日志文件的名稱是基于遠程日志發(fā)送機器的主機名以及生成該日志的應用程序名進行定義的。其中第二行暗示了我們將RemoteLogs模板應用到所有接收到的日志上。
符號"& ~"表示了一個重定向規(guī)則,被用來告知rsyslog守護進程停止對日志消息的進一步處理,并且不要在本地寫入。如果沒有使用該重定向規(guī)則,那么所有的遠程消息都會在寫入上述描述的日志文件之外同時被寫入到本地日志文件,這就意味著日志消息實際上被寫了兩次。使用該規(guī)則的另外一個結果就是syslog服務器本身的日志消息只會被以該機器主機名命名的專有文件中
rsyslog進程的控制命令為
查看進程運行情況(Status) :systemctl status rsyslog
停止(Stop) :systemctl stop rsyslog
重啟(Restart) :systemctl restart rsyslog
啟動(Start) :systemctl start rsyslog
查看514端口是否啟動 :netstat -antup | grep 514
配置發(fā)送日志的主機
如果沒有安裝rsyslog,則安裝
yum install rsyslog -y
安裝完成后,同樣配置/etc/rsyslog.conf文件,在文件的最后一行添加如下字符
*.* @192.168.1.112:514
如果用的是TCP協議,則要多加一個@:*.* @@192.168.1.112:514
把該主機上的所有操作命令同時發(fā)送到日志主機去,打開配置文件/etc/bashrc
在文件的最后一行添加以下內容:
export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'
重新加載bash配置文件:
source /etc/bashrc
打開防火墻的514端口
firewall-cmd --add-port=514/udp --permanent firewall-cmd --add-port=514/tcp --permanent firewall-cmd --reload
重啟rsyslog
systemctl restart rsyslog
至此,基本配置完成
日志回滾
在接收日志的主機上,進入目錄/var/log,可以看到生成了兩個文件夾server112和server204(根據兩臺主機名生成的),在server204文件夾中的一個名為root.log文件就是該主機上執(zhí)行過的所有命令,其他文件都是根據進程名生成的。
設置日志回滾,編輯文件/etc/logrotate.d/syslog
把記錄日志的兩個路徑添加進去,記得把server112和server204替換為你的主機名
這樣就能自動回滾這兩個目錄下的所有日志
附件:創(chuàng)建日志接收模板
可以使用下面的模式對特定的設備或嚴重性級別使用新的模板直接來記錄日志消息。
[facility-level].[severity-level] ?RemoteLogs
serverity-level table(服務級別列表)
|
serverity-level table(服務級別列表) |
||
|
數字代碼 |
服務級別 |
描述 |
|
0 |
emerg |
系統(tǒng)不可用 |
|
1 |
alert |
必須馬上采取救援行動 |
|
2 |
crit |
嚴重錯誤信息 |
|
3 |
error |
錯誤信息 |
|
4 |
warning |
警告信息 |
|
5 |
notice |
普通但是值得注意的信息 |
|
6 |
info |
一般信息 |
|
7 |
debug |
調試信息 |
facility-level table(設備級別列表),如下圖
例如:
將全部優(yōu)先級別的所有內部用戶驗證消息指定為RemoteLogs模板:
authpriv.* ?RemoteLogs
將所有系統(tǒng)進程中除開mail、用戶驗證和cron消息之外的進程產生的消息級別的日志指定為RemoteLogs模板:
*.info,mail.none,authpriv.none,cron.none ?RemoteLogs
如果我們想要將所有從遠程客戶端接受到的消息寫入到一個以它們的IP地址命名的單個文件中,可以使用以下的模板。在此我們?yōu)樵撃0遒x予了“IpTemplate”名稱。
$template IpTemplate,"/var/log/%FROMHOST-IP%.log" *.* ?IpTemplate & ~
排錯
上面的配置很簡單,但是有時候服務端就是很詭異地接收不到客戶端發(fā)送的日志(在服務端的/var/log目錄下沒有以客戶端主機名命名的文件夾),此時就要逐一檢查以下問題:
1.檢查配置文件是否有錯
2.兩臺機器之間是否能ping通
3.查看服務端是否已經在監(jiān)控514端口:netstat -lnutp
4.注意服務端監(jiān)控的514端口究竟是udp還是tcp協議,而客戶端也必須使用一致的協議
文章題目:CentOS7搭建Rsyslong集中式日志系統(tǒng)
當前路徑:http://www.dlmjj.cn/article/cceopji.html


咨詢
建站咨詢
