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 格式的消息,我们建议优先使用 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"
}
随后,您可以在 Graylog 上通过查询 device_id: abcd 检索所有来自设备“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”输入。