故障注入

故障注入过滤器可用于测试微服务对不同形式故障的恢复能力。该过滤器可用于注入延迟和中止请求,并带有用户指定的错误代码,从而能够处理不同的故障情况,如服务故障,服务过载,高网络延迟,网络分区等。故障注入可限制在基于请求的(目的地)上游集群,以及特定的一组预定义的请求报头组。

故障注入的范围仅限于通过网络进行通信的应用程序,以及可观察到的范围。无法模拟本地主机上的CPU和磁盘故障。

目前,故障注入过滤器有以下限制:

  • 中止请求的错误代码仅限于HTTP状态码
  • 延迟被限制在一定的时间内

未来的版本将包括支持限制故障到特定的路由,注入gRPC和HTTP/2特定的错误代码和基于分布的持续时延。

配置

注意:故障注入过滤器必须在任何其他过滤器(包括路由器过滤器)之前插入。

运行时设置

HTTP故障注入过滤器支持以下全局运行时设置:

  • fault.http.abort.abort_percent
    如果头部匹配,将被中止请求的百分比。在配置中默认使用abort_percent值。如果配置不包含abort项,则abort_percent默认为0。

  • fault.http.abort.http_status
    将被用作请求的HTTP状态码,如果头部匹配,则请求将被中止。默认为配置中指定的http_status。如果配置不包含abort项,则http_status默认为0。

  • fault.http.delay.fixed_delay_percent
    如果头部匹配,请求将被延迟的百分比。默认为配置中指定的delay_percent,否则为0。

  • fault.http.delay.fixed_duration_ms
    延迟时间以毫秒为单位。如果未指定,则将使用配置中指定的fixed_duration_ms。如果在运行时和配置中缺少这个字段,则不会注入延迟。

请注意,在特定下游群集中,如果存在以下运行时配置值,则故障过滤器默认值会被覆盖。以下是下游指定的运行时配置值:

  • fault.http.<downstream-cluster>.abort.abort_percent
  • fault.http.<downstream-cluster>.abort.http_status
  • fault.http.<downstream-cluster>.delay.fixed_delay_percent
  • fault.http.<downstream-cluster>.delay.fixed_duration_ms

下游集群名称取自HTTP x-envoy-downstream-service-cluster头部。如果在运行系统中找不到,则默认使用全局运行时设置为缺省配置。

统计

故障过滤器输出统计信息命名空间为http.<stat_prefix>.fault.stat_prefix来自所拥有的HTTP连接管理器。

名称 类型 描述
delays_injected Counter 延迟请求总数
aborts_injected Counter 已中止的请求总数
<downstream-cluster>.delays_injected Counter 指定下游群集的延迟请求总数
<downstream-cluster>.aborts_injected Counter 指定下游群集的中止请求总数

返回