## 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跟踪?