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 查找所有 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”输入。