如何使用syslog-ng從遠(yuǎn)程Linux機(jī)器上收集日志
如果你的數(shù)據(jù)中心全是 Linux 服務(wù)器,而你就是系統(tǒng)管理員。那么你的其中一項(xiàng)工作內(nèi)容就是查看服務(wù)器的日志文件。但是,如果你在大量的機(jī)器上去查看日志文件,那么意味著你需要挨個去登入到機(jī)器中來閱讀日志文件。如果你管理的機(jī)器很多,僅這項(xiàng)工作就可以花費(fèi)你一天的時間。
另外的選擇是,你可以配置一臺單獨(dú)的 Linux 機(jī)器去收集這些日志。這將使你的每日工作更加高效。要實(shí)現(xiàn)這個目的,有很多的不同系統(tǒng)可供你選擇,而 syslog-ng 就是其中之一。
syslog-ng 的不足是文檔并不容易梳理。但是,我已經(jīng)解決了這個問題,我可以通過這種方法馬上進(jìn)行安裝和配置 syslog-ng。下面我將在 Ubuntu Server 16.04 上示范這兩種方法:
- UBUNTUSERVERVM 的 IP 地址是 192.168.1.118 ,將配置為日志收集器
- UBUNTUSERVERVM2 將配置為一個客戶端,發(fā)送日志文件到收集器
現(xiàn)在我們來開始安裝和配置。
安裝
安裝很簡單。為了盡可能容易,我將從標(biāo)準(zhǔn)倉庫安裝。打開一個終端窗口,運(yùn)行如下命令:
sudo apt install syslog-ng
你必須在收集器和客戶端的機(jī)器上都要運(yùn)行上面的命令。安裝完成之后,你將開始配置。
配置收集器
現(xiàn)在,我們開始日志收集器的配置。它的配置文件是 /etc/syslog-ng/syslog-ng.conf
。syslog-ng 安裝完成時就已經(jīng)包含了一個配置文件。我們不使用這個默認(rèn)的配置文件,可以使用 mv /etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf.BAK
將這個自帶的默認(rèn)配置文件重命名?,F(xiàn)在使用 sudo nano /etc/syslog/syslog-ng.conf
命令創(chuàng)建一個新的配置文件。在這個文件中添加如下的行:
@version: 3.5
@include "scl.conf"
@include "`scl-root`/system/tty10.conf"
options {
time-reap(30);
mark-freq(10);
keep-hostname(yes);
};
source s_local { system(); internal(); };
source s_network {
syslog(transport(tcp) port(514));
};
destination d_local {
file("/var/log/syslog-ng/messages_${HOST}"); };
destination d_logs {
file(
"/var/log/syslog-ng/logs.txt"
owner("root")
group("root")
perm(0777)
); };
log { source(s_local); source(s_network); destination(d_logs); };
需要注意的是,syslog-ng 使用 514 端口,你需要確保在你的網(wǎng)絡(luò)上它可以被訪問。
保存并關(guān)閉這個文件。上面的配置將轉(zhuǎn)存期望的日志文件(由 system()
和 internal()
指出)到 /var/log/syslog-ng/logs.txt
中。因此,你需要使用如下的命令去創(chuàng)建所需的目錄和文件:
sudo mkdir /var/log/syslog-ng
sudo touch /var/log/syslog-ng/logs.txt
使用如下的命令啟動和啟用 syslog-ng:
sudo systemctl start syslog-ng
sudo systemctl enable syslog-ng
配置客戶端
我們將在客戶端上做同樣的事情(移動默認(rèn)配置文件并創(chuàng)建新配置文件)??截愊铝形谋镜叫碌目蛻舳伺渲梦募校?/p>
@version: 3.5
@include "scl.conf"
@include "`scl-root`/system/tty10.conf"
source s_local { system(); internal(); };
destination d_syslog_tcp {
syslog("192.168.1.118" transport("tcp") port(514)); };
log { source(s_local);destination(d_syslog_tcp); };
請注意:請將 IP 地址修改為收集器的 IP 地址。
保存和關(guān)閉這個文件。與在配置為收集器的機(jī)器上一樣的方法啟動和啟用 syslog-ng。
查看日志文件
回到你的配置為收集器的服務(wù)器上,運(yùn)行這個命令 sudo tail -f /var/log/syslog-ng/logs.txt
。你將看到包含了收集器和客戶端的日志條目的輸出(圖 A)。
圖 A
恭喜你!syslog-ng 已經(jīng)正常工作了。你現(xiàn)在可以登入到你的收集器上查看本地機(jī)器和遠(yuǎn)程客戶端的日志了。如果你的數(shù)據(jù)中心有很多 Linux 服務(wù)器,在每臺服務(wù)器上都安裝上 syslog-ng 并配置它們作為客戶端發(fā)送日志到收集器,這樣你就不需要登入到每個機(jī)器去查看它們的日志了。