请教个Higress问题,有没有相关的envoyfilter配置参考?

请教个Higress问题,当请求request带有spanid,希望转发请求到下游时候改变这个值,也就是在打印access log之后改变,accesslog打印原来头里的值,在打印完以后转到下游时改为新的值。有没有相关的envoyfilter配置参考?

展开
收起
真的很搞笑 2024-01-10 11:18:23 77 分享 版权
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    可以使用 EnvoyFilter 的 HTTP_LOG_REQUEST_ATTRS 过滤器来实现这个需求。具体配置如下:

    apiVersion: networking.istio.io/v1alpha3
    kind: EnvoyFilter
    metadata:
      name: modify-spanid
    spec:
      workloadSelector:
        labels:
          app: your-app-name
      filters:
      - name: modify-spanid
        typedConfig:
          "@type": type.googleapis.com/envoy.extensions.filters.http.modify_request_headers.v3.ModifyRequestHeaders
          headers:
          - name: x-b3-spanid
            value: "new-spanid"
          requestHeaderOperations:
          - replace:
              operation: REPLACE
              path: /x-b3-spanid
              value: new-spanid
    

    将上述配置应用到你的 ServiceEntry 或 VirtualService 中,即可实现在打印 access log 之后改变请求头中的 spanid 值。

    2024-01-13 17:41:56
    赞同 展开评论
  • 在 Higress 中,您可以通过 EnvoyFilter 配置来修改请求中的 spanid。具体来说,这需要使用到 envoy.filters.http.header_to_metadata[0] 这个过滤器。这个过滤器可以将 HTTP 头信息转换为元数据,然后通过 EnvoyFilter 的配置来修改这些元数据。

    以下是一个示例配置,展示了如何将请求中的 "spanid" 头信息修改为新的值:

    apiVersion: networking.istio.io/v1alpha3
    kind: EnvoyFilter
    metadata:
      name: modify-spanid
    spec:
      workloadSelector:
        labels:
          app: myapp
      filters:
      - name: envoy.filters.http.header_to_metadata
        config:
          protoConfig:
            http:
              headers: [{"key": "spanid", "value": "new-spanid"}]
    

    在这个示例中,我们首先定义了一个名为 "modify-spanid" 的 EnvoyFilter。然后,我们使用 workloadSelector 属性来选择要应用此过滤器的工作负载。在这个例子中,我们选择了标签为 "app=myapp" 的工作负载。最后,我们定义了一个过滤器配置,该配置指定了要将 "spanid" 头信息转换为元数据的过滤器,并将其值设置为 "new-spanid"。

    2024-01-13 11:04:06
    赞同 展开评论
  • 请求结束才会打印日志,打印的就是修改后的值,你可以在修改逻辑里添加一个头来保留原始值,然后一并打印到日志里 ,此回答整理自钉群“Higress 社区交流1群(2群: 30735012403)”

    2024-01-10 12:27:44
    赞同 展开评论
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

还有其他疑问?
咨询AI助理