访问日志过滤

Envoy 中访问日志的另一个特点是可以指定过滤器,决定是否需要写入访问日志。例如,我们可以有一个访问日志过滤器,只记录 500 状态代码,只记录超过 5 秒的请求,等等。下表显示了支持的访问日志过滤器。

访问日志过滤器名称 描述
status_code_filter 对状态代码值进行过滤。
duration_filter 对总的请求持续时间进行过滤,单位为毫秒。
not_health_check_filter 对非健康检查请求的过滤。
traceable_filter 对可追踪的请求进行过滤。
runtime_filter 对请求进行随机抽样的过滤器。
and_filter 对过滤器列表中每个过滤器的结果进行逻辑 "和" 运算。过滤器是按顺序进行评估的。
or_filter 对过滤器列表中每个过滤器的结果进行逻辑 "或" 运算。过滤器是按顺序进行评估的。
header_filter 根据请求头的存在或值来过滤请求。
response_flag_filter 过滤那些收到设置了 Envoy 响应标志的响应的请求。
grpc_status_filter 根据响应状态过滤 gRPC 请求。
extension_filter 使用一个在运行时静态注册的扩展过滤器。
metadata_filter 基于匹配的动态元数据的过滤器。

每个过滤器都有不同的属性,我们可以选择设置。这里有一个片段,显示了如何使用状态代码、Header 和一个 and 过滤器。

...
access_log:
- name: envoy.access_loggers.stdout
  typed_config:
    "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog
  filter:
    and_filter:
      filters:
        header_filter:
          header:
            name: ":method"
            string_match:
              exact: "GET"
        status_code_filter:
          comparison:
            op: GE
            value:
              default_value: 400
...

上面的片段为所有响应代码大于或等于 400 的 GET 请求写了一条日志条目到标准输出。

results matching ""

    No results matching ""