跳转至

网关请求日志添加自定义属性

微服务引擎的网关底层使用的是 contour 作为控制面下发配置给 envoy, 其中请求日志的记录字段也会作为一项配置由 contour 下发给 envoy, 因此只需要在 contour 的配置文件中增加响应的需要记录的字段即可。

具体步骤如下:

  1. 进入微服务引擎——云原生网关列表,找到需要修改配置的网关所在的集群和命名空间。

    添加自定义属性

  2. 在网关所在的集群和命名空间查询自定义 CR ContourConfiguration。

    kubectl get contourconfig -n skoala-test
    
    NAME                          AGE
    contourconfig-vita-demo-gtw   21d
    
  3. 编辑上一步查询到的 CR 资源,在 .spec.envoy.logging.accessLogJSONFields 中增加想要记录的日志字段属性, 例如想要增加一个日志字段为响应头的 X-Envoy-Upstream-Service-Time 字段,可以增加一行 X-Envoy-Upstream-Service-Time=%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%

    kubectl edit contourconfig -n skoala-test
    

    编辑前:

    添加自定义属性

    编辑后:

    添加自定义属性

  4. 重启 contour 组件(不会对流量造成中断)

    kubectl get pods -n skoala-test | grep contour | awk '{print $1}' | xargs kubectl delete pod -n skoala-test
    
    pod "contour-vita-demo-gtw-785f495bdf-n7knb" deleted
    pod "contour-vita-demo-gtw-b5fcc57bb-pbssx" deleted
    
  5. Pod 启动成功后通过网关 API 访问接口,通过网关日志观察日志记录字段

    添加自定义属性

    选择某一条日志,查看原文:

    添加自定义属性

    可以看到自定义的响应头已经增加到了日志记录中。

Note

该功能适用于微服务引擎 0.29.0 及更高版本。

评论