## Mongo代理
- MongoDB[體系結構概述](../../Introduction/Architectureoverview/MongoDB.md)
- [v1 API 參考](../../v1APIreference/Networkfilters/Mongoproxy.md)
- [v2 API 參考](v2APIreference/Filters/Networkfilters/Mongoproxy.md)
### 故障注入
Mongo代理過濾器支持故障注入。有關如何配置,請參閱v1和v2 API參考。
### 統計
每個配置的MongoDB代理過濾器的統計信息都以`mongo.<stat_prefix>`為根。統計如下:
| 名稱 | 類型 | 描述 |
| ----------------------- | ----------------------- | ----------------------- |
| decoding_error | Counter | MongoDB協議解碼錯誤的數量 |
| delay_injected | Counter | 注入被延遲的次數 |
| op_get_more | Counter | OP_GET_MORE消息的數量 |
| op_insert | Counter | OP_INSERT消息的數量 |
| op_kill_cursors | Counter | OP_KILL_CURSORS消息的數量 |
| op_query | Counter | OP_QUERY消息的數量 |
| op_query_tailable_cursor | Counter | 具有可設置cursor標示的OP_QUERY的數量 |
| op_query_no_cursor_timeout | Counter | 沒有設置cursor超時標志的OP_QUERY的數量 |
| op_query_await_data | Counter | 具有等待數據標志的OP_QUERY的數量 |
| op_query_exhaust | Counter | 設置耗盡標志的OP_QUERY數量 |
| op_query_no_max_time | Counter | 沒有設置maxTimeMS的查詢數量 |
| op_query_scatter_get | Counter | 分散查詢的數量 |
| op_query_multi_get | Counter | 多重查詢的次數 |
| op_query_active | Gauge | 活躍查詢的數量 |
| op_reply | Counter | OP_REPLY消息的數量 |
| op_reply_cursor_not_found | Counter | 未找到設置cursor標志的OP_REPLY數量 |
| op_reply_query_failure | Counter | 設置了查詢失敗標志的OP_REPLY數量 |
| op_reply_valid_cursor | Counter | 具有有效cursor標志的OP_REPLY數量 |
| cx_destroy_local_with_active_rq | Counter | 使用在本地銷毀查詢連接總數 |
| cx_destroy_remote_with_active_rq | Counter | 使用遠程銷毀查詢連接總數 |
| cx_drain_close | Counter | 在服務退出時,連接被優雅關閉的總數 |
### 分散GETS
Envoy將 `scatter get` 定義為任何不使用`_id`字段作為查詢參數的查詢。同時在文檔以及`_id`的`$query`字段中查找。
### 多重GETS
Envoy將 `multi get` 定義為任何使用`_id`字段作為查詢參數的查詢,但其中`_id`不是標量值(即文檔或數組)。同時在文檔以及`_id`的`$query`字段中查找。
### 注釋解析
如果一個查詢的頂層有一個`$comment`字段(通常添加了一個`$query`字段),Envoy會將其解析為JSON并查找以下結構:
```
{
"callingFunction": "..."
}
```
**callingFunction**<br />
*(required, string)* 查詢功能。如果可用,該函數將用于調用查詢點的統計。
### 按命令統計
MongoDB過濾器將收集命名空間為`mongo.<stat_prefix>.cmd.<cmd>.`中命令的統計信息。
|名稱 |類型 |描述 |
|------------|------------|----------|
|total | Counter |命令的數量 |
|reply_num_docs | Histogram |應答中的文件數量 |
|reply_size | Histogram |應答的字節數(單位bytes) |
|reply_time_ms | Histogram |命令的時間(單位毫秒) |
### 查詢統計收集
MongoDB過濾器將收集mongo中查詢的統計信息,命名空間`mongo.<stat_prefix>.collection.<collection>.query.`。
| 名稱 | 類型 | 描述 |
| ----------------------- | ----------------------- | ----------------------- |
| total | Counter | 查詢數量 |
| scatter_get | Counter | 分散查詢的數量 |
| multi_get | Counter | 多重查詢的數量 |
| reply_num_docs | Histogram | 應答文件的數量 |
| reply_size | Histogram | 應答大小(單位:字節) |
| reply_time_ms | Histogram | 查詢時間(單位:毫秒) |
### 查詢的調用點統計收集
如果應用程序在`$comment`字段中提供調用函數,Envoy將生成每個調用點統計信息。 這些統計信息匹配每個查詢信息,匹配的命名空間為
`mongo.<stat_prefix>.collection.<collection>.callsite.<callsite>.query.`。
### 運行時
Mongo代理過濾器支持以下運行配置:
**mongo.connection_logging_enabled**
- 將啟用日志記錄連接的百分比。默認為100。若允許有百分之百連接的日志記錄,但這些連接上的所有消息都將被記錄。
**mongo.proxy_enabled**
- 將會啟用代理連接的百分比。默認為100。
**mongo.logging_enabled**
- 將被記錄的消息的百分比。默認為100,如果小于100,沒有查詢回復可能會被記錄等。
**mongo.mongo.drain_close_enabled**
- 如果服務器逐出關閉,將會關閉的連接百分比,否則將嘗試強制關閉。默認為100。
**mongo.fault.fixed_delay.percent**
- 當沒有活躍的故障時,正常的MongoDB操作,受到注入故障影響的概率。默認為`percent`配置。
**mongo.fault.fixed_delay.duration_ms**
- 延遲時間以毫秒為單位。默認在使用`duration_ms`配置。
### 訪問日志格式
訪問日志格式不可定制,并具有以下布局:
```
{"time": "...", "message": "...", "upstream_host": "..."}
```
**time**
- 完整的消息被解析的系統時間,包括毫秒。
**message**
- 消息的文本擴展。消息是否完全展開取決于上下文。有時會提供匯總數據,以避免超大日志。
**upstream_host**
- 代理連接的上游主機。如果與[TCP代理過濾器](TCPproxy.md)一起使用,則會填充此項。
## 返回
- [上一級](../Networkfilters.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跟蹤?