如何使用 syslog-ng 從遠程 Linux 機器上收集日誌
如果你的數據中心全是 Linux 伺服器,而你就是系統管理員。那麼你的其中一項工作內容就是查看伺服器的日誌文件。但是,如果你在大量的機器上去查看日誌文件,那麼意味著你需要挨個去登入到機器中來閱讀日誌文件。如果你管理的機器很多,僅這項工作就可以花費你一天的時間。
另外的選擇是,你可以配置一台單獨的 Linux 機器去收集這些日誌。這將使你的每日工作更加高效。要實現這個目的,有很多的不同系統可供你選擇,而 syslog-ng 就是其中之一。
syslog-ng 的不足是文檔並不容易梳理。但是,我已經解決了這個問題,我可以通過這種方法馬上進行安裝和配置 syslog-ng。下面我將在 Ubuntu Server 16.04 上示範這兩種方法:
- UBUNTUSERVERVM 的 IP 地址是 192.168.1.118 ,將配置為日誌收集器
- UBUNTUSERVERVM2 將配置為一個客戶端,發送日誌文件到收集器
現在我們來開始安裝和配置。
安裝
安裝很簡單。為了儘可能容易,我將從標準倉庫安裝。打開一個終端窗口,運行如下命令:
sudo apt install syslog-ng
你必須在收集器和客戶端的機器上都要運行上面的命令。安裝完成之後,你將開始配置。
配置收集器
現在,我們開始日誌收集器的配置。它的配置文件是 /etc/syslog-ng/syslog-ng.conf
。syslog-ng 安裝完成時就已經包含了一個配置文件。我們不使用這個默認的配置文件,可以使用 mv /etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf.BAK
將這個自帶的默認配置文件重命名。現在使用 sudo nano /etc/syslog/syslog-ng.conf
命令創建一個新的配置文件。在這個文件中添加如下的行:
@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 埠,你需要確保在你的網路上它可以被訪問。
保存並關閉這個文件。上面的配置將轉存期望的日誌文件(由 system()
和 internal()
指出)到 /var/log/syslog-ng/logs.txt
中。因此,你需要使用如下的命令去創建所需的目錄和文件:
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
配置客戶端
我們將在客戶端上做同樣的事情(移動默認配置文件並創建新配置文件)。拷貝下列文本到新的客戶端配置文件中:
@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 地址。
保存和關閉這個文件。與在配置為收集器的機器上一樣的方法啟動和啟用 syslog-ng。
查看日誌文件
回到你的配置為收集器的伺服器上,運行這個命令 sudo tail -f /var/log/syslog-ng/logs.txt
。你將看到包含了收集器和客戶端的日誌條目的輸出(圖 A)。
恭喜你!syslog-ng 已經正常工作了。你現在可以登入到你的收集器上查看本地機器和遠程客戶端的日誌了。如果你的數據中心有很多 Linux 伺服器,在每台伺服器上都安裝上 syslog-ng 並配置它們作為客戶端發送日誌到收集器,這樣你就不需要登入到每個機器去查看它們的日誌了。
作者:Jack Wallen 譯者:qhwdw 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive