【发布时间】:2019-05-17 19:08:27
【问题描述】:
我想记录从传入流量到我的每个微服务的请求和响应正文。 在 Istio (Envoy) 中是否可以开箱即用? 我在 Mixer 的 EntryLog 中没有看到用于映射的 body 属性。 也许它会在未来版本的 Istio 中添加?
当然我可以通过在微服务中实现我自己的过滤器来实现这一点,但也许有更好的解决方案来实现这一点。
【问题讨论】:
标签: microservices istio envoyproxy
我想记录从传入流量到我的每个微服务的请求和响应正文。 在 Istio (Envoy) 中是否可以开箱即用? 我在 Mixer 的 EntryLog 中没有看到用于映射的 body 属性。 也许它会在未来版本的 Istio 中添加?
当然我可以通过在微服务中实现我自己的过滤器来实现这一点,但也许有更好的解决方案来实现这一点。
【问题讨论】:
标签: microservices istio envoyproxy
如果我正确理解了您的问题,那么您应该查看 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”
【讨论】:
userdata,如果与tostring()一起应用,则会得到0x40ef2f98之类的东西