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/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"
}

然後,您可以使用查詢 device_id: abcd 在 Graylog 上搜索來自設備 "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 字節。

TCP 協議與 UDP 相反,它在您的應用程式和 Graylog 之間交換信息。這意味著您會收到 Graylog 已收到訊息的確認。

TCP 的好處是,如果 Graylog 沒有收到訊息(例如,當伺服器停機時),您可以重新發送訊息。缺點是,如果 Graylog 緩慢或無回應,您的應用程式必須等待回應或超時,這可能會使其變慢。

另一個好處是您可以使用 TLS(也稱為 SSL)加密您的通信。

  • 確保訊息已被接收。
  • 支持加密(TLS)。
  • 無訊息大小限制
  • 如果 Graylog 回應緩慢或停機,可能會使發送者變慢。

我們希望本指南為您提供了選擇最佳格式和協議以將日誌發送到 Graylog 的必要信息。

請記住,您可以通過為每個輸入使用不同的端口同時運行多個輸入。例如,您可以在端口 514 上有一個 "syslog UDP" 輸入,同時在端口 12201 上有一個 "GELF TCP" 輸入。