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/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 扩展日志格式”。这种格式由 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”输入。