Graylog: 選擇輸入類型
如何選擇正確的 Graylog 輸入類型
👋 歡迎來到 Stackhero 文件!
Stackhero 提供即用型的 Graylog cloud 解決方案,帶來多項好處,包括:
- 包含無限和專用的 SMTP 電郵伺服器。
- 只需一鍵即可輕鬆更新。
- 使用 HTTPS 保護的可自訂域名(例如,https://logs.your-company.com)。
- 由專用私有 VM提供的最佳性能和強大安全性。
節省時間並簡化您的生活:只需 5 分鐘即可嘗試 Stackhero 的 Graylog cloud hosting 解決方案!
Graylog 提供多種輸入選項。這些輸入允許您將日誌發送到 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"
}
然後,您可以使用查詢 device_id: abcd 在 Graylog 上搜索來自設備 "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 字節。
TCP 協議
與 UDP 相比,TCP 協議在您的應用程式和 Graylog 之間交換信息。這意味著您會收到 Graylog 已收到訊息的確認。
TCP 的好處是,如果 Graylog 沒有收到訊息(例如伺服器宕機時),您可以重新發送訊息。缺點是,如果 Graylog 速度慢或無回應,您的應用程式必須等待回應或超時,這可能會使其變慢。
另一個好處是您可以使用 TLS(也稱為 SSL)加密您的通信。
優點
- 確保訊息已被接收。
- 支持加密(TLS)。
- 無訊息大小限制
缺點
- 如果 Graylog 速度慢或宕機,可能會使發送者變慢。
結論
我們希望本指南為您提供了選擇最佳格式和協議以將日誌發送到 Graylog 的必要信息。
請記住,您可以通過為每個輸入使用不同的端口同時運行多個輸入。例如,您可以在端口 514 上有一個 "syslog UDP" 輸入,並在端口 12201 上有一個 "GELF TCP" 輸入。