微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何让 Serilog json 格式的日志在 Datadog 中正确显示

如何解决如何让 Serilog json 格式的日志在 Datadog 中正确显示

我被要求使用 DataDog 实现一个集中监控和日志记录系统,该系统将从各种服务和应用程序接收信息,一些在虚拟机上作为 Windows 服务运行,一些在 Kubernetes 集群内运行。为了实现日志记录方面以便 DataDog 可以正确摄取日志,我使用 Serilog 进行日志记录。

我目前的计划是将日志以 json 格式写入控制台,并在每个服务器或 k8s 节点上安装 DataDog 代理捕获并将它们发送到 DataDog。这有效,至少对于我到目前为止已经实现它的 k8s 节点。 (我试图避免为 DataDog 使用自定义 Serilog 接收器,因为 DataDog 文档中不鼓励这样做)。

我的问题是我无法在 DataDog 端正确摄取日志。 DataDog 期望 json 包含属性调用 Message,但 Serilog 将此属性命名为 RenderedMessage(如果我使用 JsonFormatter(renderMessage: true))或 @m(如果我使用 RenderedCompactJsonFormatter())。

如何将我的日志发送到 DataDog 并在 DataDog 端正确摄取?

解决方法

回答我自己的问题。

DataDog 日志记录页面有一个配置部分。在该页面上,“JSON 日志的预处理”部分允许您为一些主要日志消息属性指定备用属性名称。如果您将@m 添加到消息属性部分并将@l 添加到状态属性部分,您将正确地从 RenderedCompactJsonFormatter 格式化程序中摄取 JSON 消息。如果分别添加 RenderedMessage 和 Level,您将正确摄取 JsonFormatter(renderMessage: true) 格式化程序。您可以在每个部分中指定多个属性,因此您可以同时支持两种格式。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。