Graylog: 选择输入类型

如何选择正确的 Graylog 输入类型

👋 欢迎阅读 Stackhero 文档!

Stackhero 提供现成的 Graylog 云 解决方案,具有众多优势,包括:

  • 包含无限制和专用的 SMTP 电子邮件服务器
  • 只需点击即可轻松完成更新
  • 使用 HTTPS 保护的可定制域名(例如,https://logs.your-company.com)。
  • 专用私有 VM提供的最佳性能和强大安全性

节省时间简化您的生活:只需 5 分钟即可试用 Stackhero 的 Graylog 云托管 解决方案!

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 扩展日志格式”。这种格式由 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 字节。

与 UDP 相比,TCP 协议在您的应用程序和 Graylog 之间交换信息。这意味着您会收到 Graylog 已收到消息的确认。

TCP 的好处是,如果 Graylog 没有收到消息(例如,当服务器宕机时),您可以重新发送消息。缺点是,如果 Graylog 速度慢或无响应,您的应用程序必须等待响应或超时,可能会减慢速度。

另一个好处是您可以使用 TLS(也称为 SSL)加密您的通信。

  • 确保消息已被接收。
  • 支持加密(TLS)。
  • 无消息大小限制
  • 如果 Graylog 响应慢或宕机,可能会减慢发送方速度。

我们希望本指南为您提供了选择最佳格式和协议以将日志发送到 Graylog 的必要信息。

请记住,您可以通过为每个输入使用不同的端口同时运行多个输入。例如,您可以在端口 514 上有一个“syslog UDP”输入,同时在端口 12201 上有一个“GELF TCP”输入。