歡迎光臨
每天分享高質量文章

如何使用 syslog-ng 從遠端 Linux 機器上收集日誌 | Linux 中國

你可以配置一臺單獨的 Linux 機器去收集這些日誌。這將使你的每日工作更加高效。要實現這個目的,有很多的不同系統可供你選擇,而 syslog-ng 就是其中之一。
— Jack Wallen


致謝
編譯自 | https://www.techrepublic.com/article/how-to-use-syslog-ng-to-collect-logs-from-remote-linux-machines/ 
 作者 | Jack Wallen
 譯者 | qhwdw ? ? ? ? ? 共計翻譯:88 篇 貢獻時間:127 天

如果你的資料中心全是 Linux 伺服器,而你就是系統管理員。那麼你的其中一項工作內容就是檢視伺服器的日誌檔案。但是,如果你在大量的機器上去檢視日誌檔案,那麼意味著你需要挨個去登入到機器中來閱讀日誌檔案。如果你管理的機器很多,僅這項工作就可以花費你一天的時間。

另外的選擇是,你可以配置一臺單獨的 Linux 機器去收集這些日誌。這將使你的每日工作更加高效。要實現這個目的,有很多的不同系統可供你選擇,而 syslog-ng 就是其中之一。

syslog-ng 的不足是檔案並不容易梳理。但是,我已經解決了這個問題,我可以透過這種方法馬上進行安裝和配置 syslog-ng。下麵我將在 Ubuntu Server 16.04 上示範這兩種方法:

◈ UBUNTUSERVERVM 的 IP 地址是 192.168.1.118 ,將配置為日誌收集器
◈ UBUNTUSERVERVM2 將配置為一個客戶端,傳送日誌檔案到收集器

現在我們來開始安裝和配置。

安裝

安裝很簡單。為了盡可能容易,我將從標準倉庫安裝。開啟一個終端視窗,執行如下命令:

  1. 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 命令建立一個新的配置檔案。在這個檔案中新增如下的行:

  1. @version: 3.5

  2. @include "scl.conf"

  3. @include "`scl-root`/system/tty10.conf"

  4.    options {

  5.        time-reap(30);

  6.        mark-freq(10);

  7.        keep-hostname(yes);

  8.        };

  9.    source s_local { system(); internal(); };

  10.    source s_network {

  11.        syslog(transport(tcp) port(514));

  12.        };

  13.    destination d_local {

  14.    file("/var/log/syslog-ng/messages_${HOST}"); };

  15.    destination d_logs {

  16.        file(

  17.            "/var/log/syslog-ng/logs.txt"

  18.            owner("root")

  19.            group("root")

  20.            perm(0777)

  21.            ); };

  22.    log { source(s_local); source(s_network); destination(d_logs); };

需要註意的是,syslog-ng 使用 514 埠,你需要確保在你的網路上它可以被訪問。

儲存並關閉這個檔案。上面的配置將轉存期望的日誌檔案(由 system() 和 internal() 指出)到 /var/log/syslog-ng/logs.txt 中。因此,你需要使用如下的命令去建立所需的目錄和檔案:

  1. sudo mkdir /var/log/syslog-ng

  2. sudo touch /var/log/syslog-ng/logs.txt

使用如下的命令啟動和啟用 syslog-ng:

  1. sudo systemctl start syslog-ng

  2. sudo systemctl enable syslog-ng

配置客戶端

我們將在客戶端上做同樣的事情(移動預設配置檔案並建立新配置檔案)。複製下列文字到新的客戶端配置檔案中:

  1. @version: 3.5

  2. @include "scl.conf"

  3. @include "`scl-root`/system/tty10.conf"

  4. source s_local { system(); internal(); };

  5. destination d_syslog_tcp {

  6.              syslog("192.168.1.118" transport("tcp") port(514)); };

  7. log { source(s_local);destination(d_syslog_tcp); };

請註意:請將 IP 地址修改為收集器的 IP 地址。

儲存和關閉這個檔案。與在配置為收集器的機器上一樣的方法啟動和啟用 syslog-ng。

檢視日誌檔案

回到你的配置為收集器的伺服器上,執行這個命令 sudo tail -f /var/log/syslog-ng/logs.txt。你將看到包含了收集器和客戶端的日誌條目的輸出(圖 A)。

圖 A

恭喜你!syslog-ng 已經正常工作了。你現在可以登入到你的收集器上檢視本地機器和遠端客戶端的日誌了。如果你的資料中心有很多 Linux 伺服器,在每臺伺服器上都安裝上 syslog-ng 並配置它們作為客戶端傳送日誌到收集器,這樣你就不需要登入到每個機器去檢視它們的日誌了。


via: https://www.techrepublic.com/article/how-to-use-syslog-ng-to-collect-logs-from-remote-linux-machines/

作者:Jack Wallen[2] 譯者:qhwdw 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

贊(0)

分享創造快樂