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 格式的消息,我们建议优先选择 GELF,具体说明见下文。

请注意,syslog 格式的消息长度限制为 1024 个字符。

GELF 是“Graylog Extended Log Format”的缩写。该格式由 Graylog 创建,现已被众多产品广泛采用,成为行业标准。

GELF 格式的优势在于它以结构化方式发送日志。结构化日志允许您传递多个字段和值,而不是单一的非结构化文本消息。这让 Graylog 更容易解析和检索信息。

例如,如果您希望发送包含 IP 地址和请求类型的日志,可以发送包含 iprequest_type 两个字段的消息。在 Graylog 端,您可以直接基于这些字段进行检索,比如通过查询:request_type: POST 查找所有 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 字节。

与 UDP 不同,TCP 协议在您的应用程序与 Graylog 之间建立信息交互。这意味着您会收到 Graylog 已收到消息的确认。

TCP 的好处在于,如果消息未被 Graylog 接收(例如服务器不可用时),您可以重新发送消息。缺点是,如果 Graylog 变慢或无响应,您的应用程序必须等待响应或超时,可能会导致应用变慢。

另一个优点是,您可以通过 TLS(也称为 SSL)加密通信。

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

希望本指南能为您选择发送日志到 Graylog 的最佳格式和协议提供所需信息。

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