【问题标题】:JSON ordering and logging response/request body in envoy特使中的 JSON 排序和记录响应/请求正文
【发布时间】:2021-08-14 13:51:21
【问题描述】:

我在我的应用程序中使用 envoy 代理,并尝试通过以下三种方式打印日志:

  1. 采用固定的 ORDERING JSON 格式
  2. 需要将请求的请求和响应正文添加到日志中
  3. 我们能否添加路由级别的日志记录(启用/禁用),而不是使用 Lua?

以下所有场景日志级别都添加到我的应用程序的侦听器过滤器中。

#1: 我能够添加stdout 访问日志并能够以 JSON 格式打印日志,但无法以固定格式订购它们,例如第一个键应该是响应代码等等。每次 JSON 日志打印键更改的顺序。

#2:如何在我的日志中添加我的请求和响应正文?我试图找到特使支持的格式,但没有运气。

我需要在json_format 中添加哪些额外参数才能获取正文?

 json_format": {"protocol": "%PROTOCOL%","duration": "%DURATION%","my_custom_header": "%REQ(MY_CUSTOM_HEADER)%"}

#3:我们能否在 envoy 中添加路由级别日志记录,并在路由级别启用/禁用?我阅读了文档,但找不到任何东西。

在 Lua 中,我们可以在路由级别添加如下所示,如果没有 Lua/其他插件,我们可以这样做吗?

envoy.filters.http.lua:
  "@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.LuaPerRoute
   # name: bye.lua
   disabled : true

【问题讨论】:

  • 您使用的是哪个 istio 版本?还请编辑您的问题并将您的代码粘贴为文本。不要使用图片。
  • 我使用的是 envoy 而不是 istio。
  • 你使用了 istio 标签,所以我的问题。

标签: proxy envoyproxy


【解决方案1】:

对于#1,我对#1 有同样的问题。我们无法控制访问日志的 JSON 顺序,这很糟糕。

对于#2,我认为打印请求正文不是一个好主意。您可以尝试在您的应用程序中记录请求正文并使用相同的x-request-id 跟踪特使日志和您的应用程序日志。

对于#3,我对 lua 过滤器没有进一步的了解。但是enovy访问日志本身有很多针对UPSTEAM和DOWNSTREAM的字段。

希望您已经解决了问题并分享:)

【讨论】:

  • 对于#1,我没有找到任何订单,但对于 Prometheus,就我而言,现在只需要 JSON,不需要订购。 #2正确,在日志中打印不好,但为了调试我需要它但我找不到任何东西#3。如果没有 Lua,我们将无法登录路由级别或启用和禁用它们
猜你喜欢
  • 2021-07-21
  • 1970-01-01
  • 2017-02-21
  • 2019-02-17
  • 2019-05-17
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2014-03-20
相关资源
最近更新 更多