Graylog: 選擇輸入類型

如何選擇合適的 Graylog 輸入類型

👋 歡迎來到 Stackhero 文件!

Stackhero 提供即用型的 Graylog cloud 解決方案,帶來多項好處,包括:

  • 包含無限和專用的 SMTP 電郵伺服器
  • 只需一鍵即可輕鬆更新
  • 使用 HTTPS 保護的可自訂域名(例如,https://logs.your-company.com)。
  • 專用私有 VM提供的最佳性能和強大安全性

節省時間簡化您的生活:只需 5 分鐘即可嘗試 Stackhero 的 Graylog cloud hosting 解決方案!

Graylog 提供多種輸入方式。這些輸入讓您可以將日誌(logs)發送到 Graylog 伺服器,或讓 Graylog 從其他來源擷取日誌。

在幾乎所有情況下,您都會希望從應用程式或裝置將資料發送到 Graylog 伺服器。 本文不會涵蓋讓 Graylog 從其他地方擷取日誌的進階情境。不過,如果您有這個需求,請放心,設定起來非常簡單。

要選擇最合適的輸入類型,首先需要決定您想要發送到 Graylog 的日誌格式。我們建議使用 GELF 格式,詳情請參閱下文。

接下來,您需要選擇協定:UDP 或 TCP。

第一步是決定您的日誌訊息格式。主要有三個選項:RAW/PlaintextSyslogGELF

這是最簡單的格式。它適用於任何系統,因為它會發送純文字訊息。非常容易使用,非常適合初步測試,例如使用 netcat 工具發送訊息。

要測試,您可以建立一個「Raw/Plaintext UDP」輸入,然後用以下其中一條指令發送測試日誌:

  1. macOS:echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555
  2. Linux:echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555

是不是很簡單?但由於這是基本格式,很快就會遇到限制。因此,我們不建議將它用於簡單測試以外的情境。

這是一種廣泛用於伺服器環境儲存和傳送日誌的格式。您可以在 Linux、Windows、*BSD 及其他作業系統中找到它。

如果您正在使用 Syslog、Rsyslog 或其他相容服務,並希望從伺服器發送日誌到 Graylog,syslog 輸入是最簡單的選擇。

不過,由於 GELF 更強大,如果您能夠發送 GELF 格式的訊息,我們建議您這樣做,詳情請見下文。

請注意,syslog 格式的訊息長度限制為 1024 個字元。

GELF 代表「Graylog Extended Log Format」。這個格式由 Graylog 創建,現已被許多產品廣泛採用,成為業界標準。

GELF 格式的優勢在於它能以結構化方式發送日誌。結構化日誌讓您可以傳送多個欄位及其值,而不只是單一未結構化的文字訊息。這讓 Graylog 更容易解析和檢索資訊。

例如,若您想發送一條包含 IP 地址和請求類型的日誌,可以傳送一個包含 iprequest_type 兩個欄位的訊息。在 Graylog 端,您可以直接根據這些欄位搜尋,例如查找所有 request_type: POST 的請求。

GELF 以 JSON 為基礎,必須至少包含 versionhostshort_message 這三個欄位。您還可以加入其他欄位,但欄位名稱必須以底線(_)開頭。

例如,一條包含額外欄位 device_id 的簡單訊息如下:

{
  "version": "1.1",
  "host": "myIotDevice",
  "short_message": "Something is happening",
  "_device_id": "abcd"
}

然後,您可以在 Graylog 上用查詢 device_id: abcd 搜尋所有來自「abcd」這個裝置的訊息。

如需更多 GELF 詳情,請參閱官方規格說明:https://docs.graylog.org/en/4.0/pages/gelf.html

如果您想從伺服器或應用程式發送日誌,可以使用現有的多種函式庫自動建立及發送訊息。相關範例可參考 Node.js.NETPython

當您選定合適的格式(我們希望您選擇了 GELF!)後,還需要在 TCP 和 UDP 之間選擇通訊協定。

UDP 協定非常簡單。您的應用程式會將訊息發送到伺服器,無需等待接收確認。客戶端與伺服器之間沒有對話,也就是說伺服器不會確認已收到訊息。

這種方式的好處是,如果您的 Graylog 伺服器反應慢或暫時無法使用,並不會影響應用程式的效能。不過,缺點是您無法保證每一條從應用程式發送的日誌都能送達伺服器。此外,UDP 不支援加密。

  1. 如果 Graylog 反應慢或暫時無法使用,不會影響您的應用程式。
  1. 有些訊息可能會遺失。
  2. 不支援加密。
  3. 訊息大小限制為 8192 bytes。

TCP 協定與 UDP 不同,會在您的應用程式與 Graylog 之間進行資訊交換。這代表您會收到 Graylog 已收到訊息的確認。

TCP 的好處是,如果訊息未被 Graylog 收到(例如伺服器暫時無法使用),您可以重新發送訊息。缺點是,如果 Graylog 反應慢或無回應,您的應用程式必須等待回應或逾時,這可能會拖慢應用程式。

另一個優點是,您可以使用 TLS(又稱 SSL)加密通訊。

  • 能確保訊息已被接收。
  • 支援加密(TLS)。
  • 無訊息大小限制
  • 如果 Graylog 反應慢或暫時無法使用,可能會拖慢發送端。

我們希望這份指南能為您提供選擇最佳格式及協定以發送日誌到 Graylog 所需的資訊。

請記住,您可以同時運行多個輸入,只需為每個輸入使用不同的連接埠。例如,您可以在 514 埠設置一個「syslog UDP」輸入,同時在 12201 埠設置一個「GELF TCP」輸入。