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/Plaintext、Syslog 或 GELF。
RAW/Plaintext 格式
這是最簡單的格式。它適用於任何系統,因為它會發送純文字訊息。非常容易使用,非常適合初步測試,例如使用 netcat 工具發送訊息。
要測試,您可以建立一個「Raw/Plaintext UDP」輸入,然後用以下其中一條指令發送測試日誌:
- macOS:
echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555 - Linux:
echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555
是不是很簡單?但由於這是基本格式,很快就會遇到限制。因此,我們不建議將它用於簡單測試以外的情境。
Syslog 格式
這是一種廣泛用於伺服器環境儲存和傳送日誌的格式。您可以在 Linux、Windows、*BSD 及其他作業系統中找到它。
如果您正在使用 Syslog、Rsyslog 或其他相容服務,並希望從伺服器發送日誌到 Graylog,syslog 輸入是最簡單的選擇。
不過,由於 GELF 更強大,如果您能夠發送 GELF 格式的訊息,我們建議您這樣做,詳情請見下文。
請注意,syslog 格式的訊息長度限制為 1024 個字元。
GELF 格式(推薦)
GELF 代表「Graylog Extended Log Format」。這個格式由 Graylog 創建,現已被許多產品廣泛採用,成為業界標準。
GELF 格式的優勢在於它能以結構化方式發送日誌。結構化日誌讓您可以傳送多個欄位及其值,而不只是單一未結構化的文字訊息。這讓 Graylog 更容易解析和檢索資訊。
例如,若您想發送一條包含 IP 地址和請求類型的日誌,可以傳送一個包含 ip 和 request_type 兩個欄位的訊息。在 Graylog 端,您可以直接根據這些欄位搜尋,例如查找所有 request_type: POST 的請求。
GELF 以 JSON 為基礎,必須至少包含 version、host 和 short_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、.NET 及 Python。
選擇合適的協定
當您選定合適的格式(我們希望您選擇了 GELF!)後,還需要在 TCP 和 UDP 之間選擇通訊協定。
UDP 協定
UDP 協定非常簡單。您的應用程式會將訊息發送到伺服器,無需等待接收確認。客戶端與伺服器之間沒有對話,也就是說伺服器不會確認已收到訊息。
這種方式的好處是,如果您的 Graylog 伺服器反應慢或暫時無法使用,並不會影響應用程式的效能。不過,缺點是您無法保證每一條從應用程式發送的日誌都能送達伺服器。此外,UDP 不支援加密。
優點
- 如果 Graylog 反應慢或暫時無法使用,不會影響您的應用程式。
缺點
- 有些訊息可能會遺失。
- 不支援加密。
- 訊息大小限制為 8192 bytes。
TCP 協定
TCP 協定與 UDP 不同,會在您的應用程式與 Graylog 之間進行資訊交換。這代表您會收到 Graylog 已收到訊息的確認。
TCP 的好處是,如果訊息未被 Graylog 收到(例如伺服器暫時無法使用),您可以重新發送訊息。缺點是,如果 Graylog 反應慢或無回應,您的應用程式必須等待回應或逾時,這可能會拖慢應用程式。
另一個優點是,您可以使用 TLS(又稱 SSL)加密通訊。
優點
- 能確保訊息已被接收。
- 支援加密(TLS)。
- 無訊息大小限制
缺點
- 如果 Graylog 反應慢或暫時無法使用,可能會拖慢發送端。
結論
我們希望這份指南能為您提供選擇最佳格式及協定以發送日誌到 Graylog 所需的資訊。
請記住,您可以同時運行多個輸入,只需為每個輸入使用不同的連接埠。例如,您可以在 514 埠設置一個「syslog UDP」輸入,同時在 12201 埠設置一個「GELF TCP」輸入。