我想记录从传入流量到我的每个微服务的请求和响应正文。在 Istio (Envoy) 中是否可以开箱即用?我在 Mixer 的 EntryLog 中没有看到用于映射的 body 属性。也许它会在 Istio 的未来版本中添加?
当然我可以通过在微服务中实现我自己的过滤器来实现这一点,但也许有更好的解决方案来实现这一点。
我想记录从传入流量到我的每个微服务的请求和响应正文。在 Istio (Envoy) 中是否可以开箱即用?我在 Mixer 的 EntryLog 中没有看到用于映射的 body 属性。也许它会在 Istio 的未来版本中添加?
当然我可以通过在微服务中实现我自己的过滤器来实现这一点,但也许有更好的解决方案来实现这一点。
如果我正确理解了您的问题,那么您应该查看 Lua 过滤器的文档。 https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/lua_filter https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/lua_filter#script-examples
body = handle:body() 应该根据句柄为您提供请求或响应正文。
handle:logInfo(message) 应该可以帮助您记录它。
对我来说,打印声明也有效。例如 print(headers["Cache-Control"]) 将标头值放入 GCP 项目的 kubernetes 集群上我的应用程序的日志中。
您需要在您的 kubernetes 集群中应用 EnvoyFilter,并且在 lua 代码中,您可以记录请求正文。另请记住,“过滤器应仅配置名称为 envoy.lua”