云数据库 MongoDB 提供的监控功能可以实时查看实例资源的监控指标数据,通过可视化图形、表格、大屏、多种方式统计监控数据,并支持设置告警规格,通过消息推送的方式帮助您第一时间了解数据库服务的异常,及时调整业务,保障业务稳定运行。
监控粒度
云数据库 MongoDB 暂不支持监控数据采集粒度的自定义选择,自适应策略如下表所示:
时间跨度 | 监控粒度 | 保留时长 |
0天 - 1天 | 5秒 | 1天 |
0天 - 1天 | 1分钟 | 15天 |
0天 - 1天 | 5分钟 | 31天 |
0天 - 1天 | 1小时 | 93天 |
0天 - 1天 | 1天 | 186天 |
0天 - 7天 | 1小时 | 93天 |
0天 - 7天 | 1天 | 186天 |
7天 - 30天 | 1小时 | 93天 |
7天 - 30天 | 1天 | 186天 |
监控说明
云数据库 MongoDB 副本集架构通过部署多个服务器存储数据副本来达到高可用的能力,每一个副本集实例由一个 Primary 节点和一个或多个 Secondary 节点组成。云数据库 MongoDB 分片集群(Sharded Cluster)架构在副本集的基础上,通过多组复制集群的组合,实现数据的横向扩展。每一个分片集群实例由 mongos 节点、config server、shard 节点等组件组成。具体信息,请参见 系统架构。
云数据库 MongoDB 依据集群架构及请求下发及返回的链路,监控数据库的多项性能指标,包含:资源使用情况、请求时延、请求量统计和网络出入流量等。具体信息,请参见下表。
监控类别 | 监控范围 | | |
| 实例(主实例、只读实例、灾备实例) | 节点 | |
| | Mongod | Mongos |
资源监控 | 统计整个集群的所有节点 CPU 与内存的最大使用率、平均使用率,及其磁盘使用率。 | 统计集群中存储文档的 Mongod 节点的 CPU、内存及磁盘的使用率。 | 统计集群中存储文档的 Mongos 节点的 CPU 与内存的使用率。 |
网络监控 | 统计整个集群出入流量的字节数、及其客户端连接数量。 | 统计 Mongod 节点出入的字节数。 | 统计 Mongos 节点出入的字节数。 |
时延监控 | 统计请求从下发到集群至最终返回所产生的耗时。 | 统计请求到达 Mongod 节点再从 Mongod 返回整个过程的平均耗时。 | 统计请求到达 Mongos 节点,经 Mongos 路由至 Mongod,再经过 mongod 计算处理,最终从 Mongos 返回整个过程的平均耗时。 |
请求监控 | 统计所有下发至集群的请求数量及每秒的请求数量。 | 统计访问 Mongod 的请求数量及每秒的请求数量。 | 统计 Mongos 节点收到的请求数量及每秒收到请求数量。 |
内核监控 | - | 统计包含:活跃读写请求数量、读写排队长度、TTL、主从延迟、Cache 命中率等 | - |
监控指标
云数据库 MongoDB 所有性能监控指标及其含义,请参见下表。
实例
监控维度 | 监控指标中文名称 | 监控指标英文名称 | 单位 | 指标说明 |
CPU 监控 | Mongod 最大 CPU 使用率 | mongod_max_cpu_usage | % | 集群所有 Mongod 节点最大的 CPU 使用率。 |
| Mongod 平均 CPU 使用率 | monogd_avg_cpu_usage | % | 集群所有 Mongod 节点 CPU 使用率取平均值。 |
| Mongos 最大 CPU 使用率 | monogs_max_cpu_usage | % | 分片集群所有 Mongos 节点最大的 CPU 使用率。 |
| Mongos 平均 CPU 使用率 | monogs_avg_cpu_usage | % | 分片集群所有 Mongos 节点 CPU 使用率取平均值。 |
内存监控 | Mongod 最大内存使用率 | mongod_max_mem_usage | % | 集群所有 Mongod 节点最大的内存使用率。 |
| Mongod 平均内存使用率 | mongod_avg_mem_usage | % | 集群所有 Mongod 节点内存使用率取平均值。 |
| Mongos 最大内存使用率 | mongos_max_mem_usage | % | 分片集群所有 Mongos 节点最大的内存使用率。 |
| Mongos 平均内存使用率 | mongos_avg_mem_usage | % | 分片集群所有 Mongos 节点内存使用率取平均值。 |
磁盘监控 | 磁盘空间利用率 | disk_usage | % | 实际磁盘使用量与申请的磁盘空间的占比。 |
网络监控 | 连接数量 | cluster_conn | 个 | 连接到实例的 TCP 连接数量。 |
| 连接百分比 | connper | % | 当前集群的连接数量与最大连接数的比例。 |
| 入流量 | cluster_view | Bytes | 集群的入流量字节数统计。 |
| 出流量 | cluster_netout | Bytes | 集群的出流量字节数统计。 |
时延监控 | 所有请求平均时延 | avg_all_request_delay | ms | 集群所有请求执行的平均时延。 |
| 更新平均延迟 | avg_update_delay | ms | 集群更新请求的平均时延。 |
| 插入平均延迟 | avg_insert_delay | ms | 集群插入请求的平均时延。 |
| 读平均时延 | avg_read_delay | ms | 集群读请求的平均时延。 |
| 聚合请求平均时延 | avg_aggregate_delay | ms | 集群聚合请求的平均时延。 |
| Count 的平均延迟 | avg_count_delay | ms | 集群 Count 请求的平均时延。
Count 用于统计集合中满足指定条件的文档数量。 |
| Getmore 平均延迟 | avg_getmore_delay | ms | 集群 Getmore 请求的平均时延。 |
| 删除平均延迟 | avg_delete_delay | ms | 集群删除请求的平均时延。 |
| Command 平均时延 | avg_command_delay | ms | 集群 Command 请求的平均时延。Command 为除 insert、update、delete、query 以外命令的总称。 |
| 10毫秒 - 50毫秒 | 10ms | 次 | 执行时间在10毫秒和50毫秒之间的请求次数。 |
| 50毫秒 - 100毫秒 | 50ms | 次 | 执行时间在50毫秒和100毫秒之间的请求次数。 |
| 100毫秒 | 100ms | 次 | 执行时间超过100毫秒的请求次数。 |
请求监控 | 总请求量 | success_per_second | 次/秒 | 集群每秒所有请求执行成功的次数。 |
| 插入请求 | insert_per_second | 次/秒 | 集群每秒插入请求执行次数。插入请求是按实际插入行数统计,例如 insertMany() 实际插入10条记录,则监控会统计10次插入请求。 |
| 读请求 | read_per_second | 次/秒 | 集群每秒读请求执行次数。 |
| 更新请求 | update_per_second | 次/秒 | 集群每秒更新请求执行次数。 |
| 删除请求 | delete_per_second | 次/秒 | 集群每秒删除请求执行次数。 |
| count 请求 | count_per_second | 次/秒 | 集群每秒收到的 Count 请求的次数。 |
| Getmore 请求 | getmore_per_second | 次/秒 | 集群每秒收到的 Getmore 请求的次数。 |
| Aggregates 请求 | aggregate_per_second | 次/秒 | 集群每秒聚合请求的次数。 |
| Command 请求 | command_per_second | 次/秒 | 集群每秒收到的 Command 请求的次数。Command 为除 insert、update、delete、query 以外命令的总称。 |
请求量 | 总请求量 | node_success | 次 | 集群所有请求的次数。 |
| 插入请求 | node_inserts | 次 | 集群收到的插入请求的次数。插入请求是按实际插入行数统计,例如 insertMany() 实际插入10条记录,则监控会统计10次插入请求。 |
| 读请求 | node_reads | 次 | 集群收到的读请求的次数。 |
| 更新请求 | node_updates | 次 | 集群更新请求的次数。 |
| 删除请求 | node_deletes | 次 | 集群删除请求的次数。 |
| count 请求 | node_counts | 次 | 集群收到的 Count 请求的次数。 |
| Getmore 请求 | node_getmores | 次 | 集群收到的 Getmore 请求的次数。 |
| Aggregates 请求 | node_aggregates | 次 | 集群聚合所有请求的次数。 |
| Command 请求 | node_commands | 次 | 集群收到的 Command 请求的次数。Command 为除 insert、update、delete、query 以外命令的总称。 |
Mongod 节点
监控维度 | 监控指标中文名称 | 监控指标英文名称 | 单位 | 指标说明 |
CPU 监控 | CPU 使用率 | cpuusage | % | Mongod 节点 CPU 正在执行进程所占用的时间占 CPU 总时间的百分比。 |
内存监控 | 内存使用率 | memusage | % | Mongod 节点的内存中已被使用的空间占内存总容量的百分比。 |
磁盘监控 | 磁盘空间使用量 | diskusage | MBytes | Mongod 节点当前磁盘已被使用的空间占总空间的百分比。 |
| 磁盘读次数 | ioread | 次/秒 | Mongod 节点磁盘每秒读的次数。 |
| 磁盘写次数 | iowrite | 次/秒 | Mongod 节点磁盘每秒读的次数。 |
网络监控 | 入流量 | netin | Bytes | Mongod 节点入流量字节数统计。 |
| 出流量 | netout | Bytes | Mongod 节点的出流量字节数统计。 |
请求平均延迟监控 | 所有请求平均时延 | node_avg_all_requests_delay | ms | Mongod 节点收到的所有请求平均时延。 |
| 更新平均延迟 | node_avg_update_delay | ms | Mongod 节点 update 请求时延平均值。 |
| 插入平均延迟 | node_avg_insert_delay | ms | Mongod 节点 insert 请求时延平均值。 |
| 读平均时延 | node_avg_read_delay | ms | Mongod 节点读请求时延平均值。 |
| 聚合请求平均时延 | node_avg_aggregate_delay | ms | Mongod 节点聚合请求时延平均值。 |
| Count 的平均延迟 | node_avg_count_delay | ms | Mongod 节点 Count 请求时延平均值。 |
| Getmore 平均延迟 | node_avg_getmore_delay | ms | Mongod 节点 Getmore 请求时延平均值。 |
| 删除平均延迟 | node_avg_delete_delay | ms | Mongod 节点删除请求时延平均值。 |
| Command 平均时延 | node_avg_command_delay | ms | Mongod 节点 Command 请求时延平均值。 |
| 10-50毫秒 | 10ms | 次 | 执行时间在10毫秒和50毫秒之间的请求次数。 |
| 50-100毫秒 | 50ms | 次 | 执行时间在50毫秒和100毫秒之间的请求次数。 |
| 100毫秒 | 100ms | 次 | 执行时间超过100毫秒的请求次数。 |
请求监控 | 总请求 | node_success_per_second | 次/秒 | Mongod 节点每秒所有请求的次数。 |
| 插入请求 | node_insert_per_second | 次/秒 | Mongod 节点每秒插入请求的次数。插入请求是按实际插入行数统计,例如 insertMany() 实际插入10条记录,则监控会统计10次插入请求。 |
| 读请求 | node_read_per_second | 次/秒 | Mongod 节点每秒读请求的次数。 |
| 更新请求 | node_update_per_second | 次/秒 | Mongod 节点每秒更新请求的次数。 |
| 删除请求 | node_delete_per_second | 次/秒 | Mongod 节点每秒删除请求的次数。 |
| Count 请求 | node_count_per_second | 次/秒 | Mongod 节点每秒收到的 Count 请求的次数。 |
| Getmore 请求 | node_getmore_per_second | 次/秒 | Mongod 节点每秒收到的 Getmore 请求的次数。 |
| Aggregates 请求 | node_aggregate_per_second | 次/秒 | Mongod 节点每秒聚合请求的次数。 |
| Command 请求 | node_command_per_second | 次/秒 | Mongod 节点每秒收到的 Command 请求的次数。Command 为除 insert、update、delete、query 以外命令的总称 |
内核监控 | 活跃写请求 | aw | 个 | Mongod 节点数据在内存中被写请求的个数。 |
| 活跃读请求 | ar | 个 | Mongod 节点数据在内存中被读请求的个数。 |
| 排队读请求 | qr | 个 | 队列中 Read 请求的等待个数。 |
| 排队写请求 | qw | 个 | 队列中 Write 请求的等待个数。 |
| TTL 删除数据条数 | ttl_deleted | 次 | 在TTL过期后,数据库自动删除的数据条数。 |
| TTL 发起次数 | ttl_pass | 次 | 指在数据库中设置的TTL时间内,数据被检查的次数。 |
| 活跃 session 数量 | active_session | 个 | Session表示客户端与服务器之间的一次会话。在客户端与服务器建立连接后,可以通过创建一个session来进行数据的读写操作。当session被创建后,它会一直保持活跃状态,直到客户端主动关闭连接或者超时断开连接。该指标监控当前 Mongod 节点活跃的 session 数量。 |
| Oplog 保存时长 | node_oplog_reserved_time | 小时 | Oplog 用于记录数据库的操作日志,该指标统计其保存时长。 |
| 主从延迟 | node_slavedelay | 秒 | 从节点定期轮询主节点的 oplog(操作日志)来复制 Primary 节点的数据,该指标统计主从同步数据的时延。 |
| Cache 命中率 | hit_ratio | % | 当前集群 Cache 的命中率。 |
| Cache 使用百分比 | node_cache_used | % | Cache 使用量占总量的百分比。 |
| Cache脏数据百分比 | node_cache_dirty | % | Cache 脏数据占总量的百分比。 |
请求量 | 总请求量 | node_success | 次 | 集群总请求次数。 |
| 插入请求量 | node_inserts | 次 | 集群插入请求的次数。插入请求是按实际插入行数统计,例如 insertMany() 实际插入10条记录,则监控会统计10次插入请求。 |
| 读请求量 | node_reads | 次 | 集群读请求的次数。 |
| 更新请求量 | node_updates | 次 | 集群更新请求的次数。 |
| 删除请求量 | node_deletes | 次 | 集群删除请求的次数。 |
| Count 请求量 | node_counts | 次 | 集群收到的 Count 请求的次数。 |
| Getmore 请求量 | node_getmores | 次 | 集群收到的 Getmore 请求的次数。 |
| Aggregates 请求量 | node_aggregates | 次 | 集群聚合请求的次数。 |
| Command 请求量 | node_commands | 次 | 集群收到的 Command 请求的次数。Command 为除 insert、update、delete、query 以外命令的总称。 |
Mongos 节点(分片集群)
监控维度 | 监控指标中文名称 | 监控指标英文名称 | 单位 | 指标说明 |
CPU 监控 | CPU 使用率 | cpuusage | % | Mongos节点的 CPU 使用率。 |
内存监控 | 内存使用率 | memusage | % | Mongos 节点的内存使用率。 |
网络监控 | 内网入流量 | netin | Bytes | Mongos 节点入流量字节数统计。 |
| 内网出流量 | netout | Bytes | Mongos 节点的出流量字节数统计。 |
时延监控 | 所有请求平均时延 | node_avg_all_request_delay | ms | Mongos 节点收到的所有请求平均时延。 |
| 更新平均延迟 | node_avg_update_delay | ms | Mongos 节点更新命令时延平均值。 |
| 插入平均延迟 | replicaset_node | ms | Mongos 节点插入命令时延平均值。 |
| 读平均时延 | node_avg_read_delay | ms | Mongos 节点读命令时延平均值。 |
| 聚合请求平均时延 | node_avg_aggregate_delay | ms | Mongos 节点 aggregate 命令时延平均值。 |
| Count 的平均延迟 | node_avg_count_delay | ms | Mongos 节点 counts 命令时延平均值。 |
| Getmore 平均延迟 | node_avg_getmore_delay | ms | Mongos 节点 Getmore 命令时延平均值。 |
| 删除平均延迟 | node_avg_delete_delay | ms | Mongos 节点删除命令时延平均值。 |
| Command 平均时延 | node_avg_command_delay | ms | Mongos 节点 Command 命令时延平均值。Command 为除 insert、update、delete、query 以外命令的总称。 |
| 10-50毫秒 | 10ms | 次 | 执行时间在10毫秒和50毫秒之间每秒请求次数。 |
| 50-100毫秒 | 50ms | 次 | 执行时间在50毫秒和100毫秒之间每秒请求次数。 |
| 100毫秒 | 100ms | 次 | 执行时间超过100毫秒每秒请求次数。 |
请求监控 | 总请求 | qps | 次/秒 | Mongos 节点每秒所有请求的次数。 |
| 插入请求 | inserts | 次/秒 | Mongos 节点每秒插入请求的次数。插入请求是按实际插入行数统计,例如 insertMany() 实际插入10条记录,则监控会统计10次插入请求。 |
| 读请求 | reads | 次/秒 | Mongos 节点每秒读请求的次数。 |
| 更新请求 | updates | 次/秒 | Mongos 节点每秒更新请求的次数。 |
| 删除请求 | deletes | 次/秒 | Mongos 节点每秒删除请求的次数。 |
| Count 请求 | counts | 次/秒 | Mongos 节点每秒收到的 Count 请求的次数。 |
| Getmore 请求 | getmores | 次/秒 | Mongos 节点每秒收到的 Getmore 请求的次数。 |
| Aggregates 请求 | aggregates | 次/秒 | Mongos 节点每秒聚合请求的次数。 |
| Command 请求 | commands | 次/秒 | Mongos 节点每秒收到的 Command 请求的次数。Command 为除 insert、update、delete、query 以外命令的总称。 |
请求量 | 总请求量 | node_success | 次 | Mongos 节点收到的总请求次数。 |
| 插入请求量 | node_inserts | 次 | Mongos 节点收到的插入请求的次数。插入请求是按实际插入行数统计,例如 insertMany() 实际插入10条记录,则监控会统计10次插入请求。 |
| 读请求量 | node_reads | 次 | Mongos 节点收到的读请求的次数。 |
| 更新请求量 | node_updates | 次 | Mongos 节点收到的更新请求的次数。 |
| 删除请求量 | node_deletes | 次 | Mongos 节点收到的删除请求的次数。 |
| Count 请求量 | node_counts | 次 | Mongos 节点收到的 Count 请求的次数。 |
| Getmore 请求量 | node_getmores | 次 | Mongos节点收到的 Getmore 请求的次数。 |
| Aggregates 请求量 | node_aggregates | 次 | Mongos 节点收到的聚合请求的次数。 |
| Command 请求量 | node_commands | 次 | Mongos 节点收到的 Command 请求的次数。Command 为除 insert、update、delete、query 以外命令的总称。 |
说明:
对 MongoDB 4.4(WT.44.13.1)及以上版本实例,插入请求是按实际插入行数统计,例如 insertMany() 实际插入10条记录,则监控会统计10次插入请求。
监控与告警
查看各个监控指标的监控数据及视图,请参见 查看监控数据。
可配置告警的监控指标以及如何配置告警,请参见 配置指标告警。
可配置的告警的实践以及如何创建事件规则,请参见 配置事件告警。