## 故障注入
故障注入過濾器可用于測試微服務對不同形式故障的恢復能力。該過濾器可用于注入延遲和中止請求,并帶有用戶指定的錯誤代碼,從而能夠處理不同的故障情況,如服務故障,服務過載,高網絡延遲,網絡分區等。故障注入可限制在基于請求的(目的地)上游集群,以及特定的一組預定義的請求報頭組。
故障注入的范圍僅限于通過網絡進行通信的應用程序,以及可觀察到的范圍。無法模擬本地主機上的CPU和磁盤故障。
目前,故障注入過濾器有以下限制:
- 中止請求的錯誤代碼僅限于HTTP狀態碼
- 延遲被限制在一定的時間內
未來的版本將包括支持限制故障到特定的路由,注入gRPC和HTTP/2特定的錯誤代碼和基于分布的持續時延。
### 配置
**注意:故障注入過濾器必須在任何其他過濾器(包括路由器過濾器)之前插入。**
- [v1 API參考](../../v1APIreference/HTTPfilters/FaultInjection.md)
- [v2 API參考](../../v2APIreference/Filters/HTTPfilters/FaultInjection.md)
### 運行時設置
HTTP故障注入過濾器支持以下全局運行時設置:
- **fault.http.abort.abort_percent**<br />
如果頭部匹配,將被中止請求的百分比。在配置中默認使用`abort_percent`值。如果配置不包含`abort`項,則`abort_percent`默認為0。
- **fault.http.abort.http_status**<br />
將被用作請求的HTTP狀態碼,如果頭部匹配,則請求將被中止。默認為配置中指定的`http_status `。如果配置不包含`abort`項,則`http_status`默認為0。
- **fault.http.delay.fixed_delay_percent**<br />
如果頭部匹配,請求將被延遲的百分比。默認為配置中指定的`delay_percent`,否則為0。
- **fault.http.delay.fixed_duration_ms**<br />
延遲時間以毫秒為單位。如果未指定,則將使用配置中指定的`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 | 指定下游群集的中止請求總數 |
## 返回
- [上一級](../HTTPfilters.md)
- [首頁目錄](../../README.md)
- 首頁
- 簡介
- Envoy是什么
- 架構介紹
- 術語
- 線程模型
- 監聽器
- L3/L4網絡過濾器
- HTTP連接管理
- HTTP過濾器
- HTTP路由
- gRPC
- WebSocket支持
- 集群管理
- 服務發現
- 健康檢查
- 連接池
- 負載均衡
- 異常檢測
- 熔斷
- 全局限速
- TLS
- 統計
- 運行時配置
- 跟蹤
- TCP代理
- 訪問日志
- MongoDB
- DynamoDB
- Redis
- 熱重啟
- 動態配置
- 初始化
- 逐出
- 腳本
- 部署
- 業界對比
- 獲得幫助
- 歷史版本
- 編譯安裝
- 編譯
- 參考配置
- 演示沙箱
- 前端代理
- Zipkin跟蹤
- Jaeger跟蹤
- gRPC橋接
- 構建Envoy Docker鏡像
- 工具
- 配置參考
- V1 API 概述
- V2 API 概述
- 監聽器
- 網絡過濾器
- TLS客戶端身份認證
- Echo
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP連接管理器
- 路由匹配
- 流量轉移/分流
- HTTP頭部操作
- HTTP頭部清理
- 統計
- 運行時設置
- 路由發現服務
- HTTP過濾器
- 緩存
- CORS過濾器
- 故障注入
- DynamoDB
- gRPC HTTP/1.1 橋接
- gRPC-JSON 轉碼過濾器
- gRPC-Web 過濾器
- 健康檢查
- 速率限制
- 路由
- Lua
- 集群管理
- 統計
- 運行時設置
- 集群發現服務
- 健康檢查
- 熔斷
- 訪問日志
- 限速服務
- 運行時配置
- 路由表檢查工具
- 運維管理
- 命令行選項
- 熱重啟
- 管理接口
- 統計概述
- 運行時配置
- 文件系統
- 自定義擴展示例
- V1 API參考
- 監聽器
- 網絡過濾器
- TLS客戶端身份認證
- Echo
- HTTP連接管理
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP路由配置
- 虛擬主機
- 路由
- 虛擬集群
- 速率限制配置
- 路由發現服務
- HTTP過濾器
- 緩存
- CORS過濾器
- DynamoDB
- 故障注入
- gRPC HTTP/1.1 橋接
- gRPC-JSON 轉碼過濾器
- gRPC-Web 過濾器
- 健康檢查
- Lua
- 速率限制
- 路由
- 集群管理
- 集群
- 健康檢查
- 熔斷
- TLS上下文
- 異常值檢測
- HASH環負載均衡配置
- 異常檢測
- 集群發現服務
- 服務發現服務
- 訪問日志
- 管理接口
- 限速服務
- 運行時配置
- 跟蹤
- V2 API參考
- 啟動引導
- 監聽&監聽發現
- 集群&集群發現
- 服務發現
- 健康檢查
- HTTP路由管理&發現
- TLS配置
- 通用的類型
- 網絡地址
- 協議選項
- 發現API
- 限速組件
- 過濾器
- 網絡過濾器
- TLS客戶端身份認證
- HTTP連接管理
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP過濾器
- 緩存
- 故障注入
- 健康檢查
- Lua
- 速率限制
- 路由
- gRPC-JSON轉碼器
- 常見訪問日志類型
- 常見故障注入類型
- FAQ
- Envoy有多快?
- 我在哪里獲得二進制文件?
- 我如何設置SNI?
- 如何設置區域感知路由?
- 我如何設置Zipkin跟蹤?