Mongo 代理

  • MongoDB 架构概述

  • 此过滤器应使用类型 URL type.googleapis.com/envoy.extensions.filters.network.mongo_proxy.v3.MongoProxy 配置。

  • v3 API 参考

故障注入

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

$comment 解析

如果查询具有顶级 $comment 字段(通常除了 $query 字段之外),Envoy 会将其解析为 JSON 并查找以下结构

{
  "callingFunction": "..."
}
callingFunction

(必需,字符串)发出查询的函数。如果可用,该函数将用于 调用站点 查询统计信息。

每个命令统计信息

MongoDB 过滤器将收集 mongo.<stat_prefix>.cmd.<cmd>. 命名空间中命令的统计信息。

名称

类型

描述

total

计数器

命令数量

reply_num_docs

直方图

回复中文档的数量

reply_size

直方图

回复的大小(以字节为单位)

reply_time_ms

直方图

命令时间(以毫秒为单位)

可以配置这些指标发出其的命令列表,方法是通过 配置;默认情况下,指标会为 deleteinsertupdate 发出。

每个集合查询统计信息

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

表示对资源执行的操作(插入/更新/查询/删除)的字符串列表。