Mongo 代理
MongoDB 架构概述
此过滤器应使用类型 URL
type.googleapis.com/envoy.extensions.filters.network.mongo_proxy.v3.MongoProxy配置。
故障注入
Mongo 代理过滤器支持故障注入。有关如何配置的详细信息,请参阅 v3 API 参考。
统计信息
每个配置的 MongoDB 代理过滤器都有以 mongo.<stat_prefix>. 为根的统计信息,并具有以下统计信息
名称 |
类型 |
描述 |
|---|---|---|
decoding_error |
计数器 |
MongoDB 协议解码错误的数量 |
delay_injected |
计数器 |
注入延迟的次数 |
op_get_more |
计数器 |
OP_GET_MORE 消息的数量 |
op_insert |
计数器 |
OP_INSERT 消息的数量 |
op_kill_cursors |
计数器 |
OP_KILL_CURSORS 消息的数量 |
op_query |
计数器 |
OP_QUERY 消息的数量 |
op_query_tailable_cursor |
计数器 |
设置了可尾随游标标志的 OP_QUERY 的数量 |
op_query_no_cursor_timeout |
计数器 |
没有设置游标超时标志的 OP_QUERY 的数量 |
op_query_await_data |
计数器 |
设置了等待数据标志的 OP_QUERY 的数量 |
op_query_exhaust |
计数器 |
设置了穷尽标志的 OP_QUERY 的数量 |
op_query_no_max_time |
计数器 |
没有设置 maxTimeMS 的查询数量 |
op_query_scatter_get |
计数器 |
散布获取查询的数量 |
op_query_multi_get |
计数器 |
多获取查询的数量 |
op_query_active |
测量 |
活动查询的数量 |
op_reply |
计数器 |
OP_REPLY 消息的数量 |
op_reply_cursor_not_found |
计数器 |
设置了游标未找到标志的 OP_REPLY 的数量 |
op_reply_query_failure |
计数器 |
设置了查询失败标志的 OP_REPLY 的数量 |
op_reply_valid_cursor |
计数器 |
具有有效游标的 OP_REPLY 的数量 |
cx_destroy_local_with_active_rq |
计数器 |
在本地销毁具有活动查询的连接 |
cx_destroy_remote_with_active_rq |
计数器 |
在远程销毁具有活动查询的连接 |
cx_drain_close |
计数器 |
在服务器排水期间在回复边界优雅地关闭连接 |
散布获取
Envoy 将任何不使用 _id 字段作为查询参数的查询定义为 散布获取。Envoy 在顶级文档以及 $query 字段中查找 _id。
多获取
Envoy 将任何使用 _id 字段作为查询参数,但 _id 不是标量值(即文档或数组)的查询定义为 多获取。Envoy 在顶级文档以及 $query 字段中查找 _id。
每个命令统计信息
MongoDB 过滤器将收集 mongo.<stat_prefix>.cmd.<cmd>. 命名空间中命令的统计信息。
名称 |
类型 |
描述 |
|---|---|---|
total |
计数器 |
命令数量 |
reply_num_docs |
直方图 |
回复中文档的数量 |
reply_size |
直方图 |
回复的大小(以字节为单位) |
reply_time_ms |
直方图 |
命令时间(以毫秒为单位) |
可以配置这些指标发出其的命令列表,方法是通过 配置;默认情况下,指标会为 delete、insert 和 update 发出。
每个集合查询统计信息
MongoDB 过滤器将收集 mongo.<stat_prefix>.collection.<collection>.query. 命名空间中查询的统计信息。
名称 |
类型 |
描述 |
|---|---|---|
total |
计数器 |
查询数量 |
scatter_get |
计数器 |
散布获取的数量 |
multi_get |
计数器 |
多获取的数量 |
reply_num_docs |
直方图 |
回复中文档的数量 |
reply_size |
直方图 |
回复的大小(以字节为单位) |
reply_time_ms |
直方图 |
查询时间(以毫秒为单位) |
每个集合和调用站点查询统计信息
如果应用程序在 $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 操作受到注入故障影响的概率。默认为配置中指定的 百分比。
- mongo.fault.fixed_delay.duration_ms
延迟持续时间(以毫秒为单位)。默认为配置中指定的 duration_ms。
访问日志格式
访问日志格式不可自定义,并且具有以下布局
{"time": "...", "message": "...", "upstream_host": "..."}
- time
解析完整消息的系统时间,包括毫秒。
- message
消息的文本扩展。消息是否完全展开取决于上下文。有时会显示摘要数据以避免日志大小过大。
- upstream_host
如果可用,连接代理到的上游主机。如果该过滤器与 TCP 代理过滤器 一起使用,则会填充此项。
动态元数据
当通过 配置 启用时,Mongo 过滤器会发出以下动态元数据。此动态元数据以键值对的形式提供,其中键表示要访问的数据库和集合,而值是对集合执行的操作列表。
名称 |
类型 |
描述 |
|---|---|---|
key |
string |
以 db.collection 格式表示的资源名称。 |
value |
array |
表示对资源执行的操作(插入/更新/查询/删除)的字符串列表。 |
$comment 解析
如果查询具有顶级 $comment 字段(通常除了 $query 字段之外),Envoy 会将其解析为 JSON 并查找以下结构
(必需,字符串)发出查询的函数。如果可用,该函数将用于 调用站点 查询统计信息。