监视 MongoDB
安装 Instana 代理后, MongoDB 传感器将自动部署并安装。
支持信息
为确保 MongoDB 传感器与您的当前配置兼容,请查阅以下支持信息部分:
受支持的操作系统
该传感器支持与 Instana 主机代理相同的操作系统。 有关详细信息,请参阅各主机代理的 “支持的操作系统 ”部分,例如:
支持的版本及支持政策
该传感器支持以下 MongoDB 和 MongoDB Atlas 版本:
- MongoDB 3.2.x
- MongoDB 3.4.x
- MongoDB 3.6.x
- MongoDB 4.0.x
- MongoDB 以及 MongoDB Atlas 4.2.x
- MongoDB 以及 MongoDB Atlas 4.4.x
- MongoDB 以及 MongoDB Atlas 5.0.x
- MongoDB 以及 MongoDB Atlas 6.0.x
- MongoDB 以及 MongoDB Atlas 7.0.x
- MongoDB 以及 MongoDB Atlas 8.0.4
下表列出了最新支持的版本及支持政策:
| 技术 | 支持策略 | 最新技术版本 | 最新的受支持版本 |
|---|---|---|---|
| MongoDB | 45 天 | 8.3.4 | 8.3.3 |
| MongoDB Atlas | 45 天 | 8.3.4 | 8.2.7 |
有关支持政策的更多信息,请参阅《 传感器支持策略》。
支持客户端追踪
配置
MongoDB 禁用身份验证
无须执行任何操作。 在configuration.yaml文件中不提供任何配置的情况下,会自动监视已禁用认证的 MongoDB。
MongoDB 启用了身份验证
要监视 MongoDB,您需要创建具有以下最低角色的用户:
read- 在admin数据库上clusterMonitoer- 在admin数据库上read- 在local数据库上
在 mongo shell 中,为 admin 数据库中的 Instana 代理程序创建用户:
- 以
admin用户身份进行认证:use admin db.auth("admin", "YOUR_MONGODB_ADMIN_PASSWORD") - 对于 MongoDB 3.x 和更高版本,请运行
createUser命令:db.createUser({ "user":"stan", "pwd": "UNIQUEPASSWORD", "roles" : [ {role: 'read', db: 'admin' }, {role: 'clusterMonitor', db: 'admin'}, {role: 'read', db: 'local' } ] })注意: 如果您使用 MongoDB Atlas ,请仅通过 MongoDB Atlas 管理控制台创建用户,并为其分配所有角色。 创建用户后,您可以在代理程序配置文件中对其进行配置:
com.instana.plugin.mongodb: user: 'stan' source: 'admin' password: 'UNIQUEPASSWORD' poll_rate: general_metrics: 1 # general MongoDB metrics (connections, ops, etc.) replicaset_metrics: 30 # replica set state metrics host: '' # Optional: Explicit hostname or fully qualified domain name (FQDN) for MongoDB connection (for example, 'mongodb.example.com'). If not specified, the first hostname from the MongoDB bindIp configuration is used.注意: 当您使用 Instana 监控 MongoDB 集群或独立实例时,请配置--bind_ip具体的 IP 地址,或保持未配置状态以使用默认值 127.0.0.1。 请勿使用该bind_ip_all参数。
MongoDB Atlas 支持
Instana 代理支持对不同项目和组织中的 MongoDB Atlas 集群进行远程监控。 要使 Instana 代理程序能够监视您的 MongoDB Atlas 组织,需要在以下位置进行配置<agent_install_dir>/etc/instana/configuration.yaml:
com.instana.plugin.mongodb:
user: 'stan'
source: 'admin'
password: 'UNIQUEPASSWORD'
poll_rate:
general_metrics: 1 # general MongoDB metrics (connections, ops, etc.)
replicaset_metrics: 30 # replica set state metrics
atlas:
- publicKey: 'your public key'
privateKey: 'your private key'
- publicKey: 'your public key'
privateKey: 'your private key'
Organization Read Only.SSL / TLS 支持
要使 Instana 代理程序安全地连接到 MongoDB 服务器,需要在以下位置进行配置<agent_install_dir>/etc/instana/configuration.yaml:
com.instana.plugin.mongodb:
...
sslTrustStore: '/path/to/truststore.jks'
sslTrustStorePassword: 'mongoTsPassword'
sslKeyStore: '/path/to/sslKeyStoreFile.jks'
sslKeyStorePassword: 'mongoKsPassword'
要启用 SSL / TLS 支持功能,密钥必须采用 Java 密钥库格式(JKS)。 可以使用 keytool 来创建这些密钥。
指标收集
要查看指标,请在 Instana 用户界面的侧边栏中选择 “基础设施 ”,点击一个受监控的主机,即可查看包含所有已收集指标和受监控进程的主机仪表板。
配置数据
- 版本
- 端口
- 存储引擎
- 数据库
config_server节点类型:对于分片集群,将实例标识为mongos、 或shard_server- 配置数据库连接字符串:仅适用于
mongos实例
绩效指标
数据库活动
| 指标 | 描述 |
|---|---|
| 读 | 读取的文档数 |
| 已插入 | 插入的文档数 |
| 已上载 | 已上载的文档数 |
| 已删除 | 已删除的文档数 |
操作总数
| 指标 | 描述 |
|---|---|
| 更新 | 自 mongod 实例上次启动以来接收到的更新操作总数。 |
| 插入 | 自 mongod 实例上次启动以来接收到的插入操作总数。 |
| 查询 | 自 mongod 实例上次启动以来收到的查询总数。 |
| 删除 | 自 mongod 实例上次启动以来,删除操作的总数。 |
| getMore | 自 mongod 实例上次启动以来, getMore 操作的总数。 |
内存
| 指标 | 描述 |
|---|---|
| 虚拟 | 整个 MongoDB 进程的虚拟内存。 如果启用了日志记录,该值通常是已映射内存大小的两倍。 |
| 已映射 | MongoDB 进程用于将您的数据库映射到内存中的虚拟内存使用量。 该值通常即为数据库的大小。 |
客户机数
| 指标 | 描述 |
|---|---|
| 连接 | 当前连接到 MongoDB 服务器的活跃客户端数量。 |
| ActiveClients 写程序 | 正在执行写入操作的活动客户端连接数。 |
| ActiveClients 阅读器 | 执行读取操作的活动客户端连接数。 |
数据库(按数据库计)
| 指标 | 描述 |
|---|---|
| 数据库大小 | 数据库大小 |
副本集(如有)
| 指标 | 描述 |
|---|---|
| 应用操作 | 内部应用操作的数量 |
| 应用批处理数 | 内部应用批处理数 |
| 应用批处理总数(毫秒) | 应用批处理的持续时间(以毫秒计) |
| 缓冲区计数 | 缓冲区数 |
| 缓冲区大小 | 缓冲区大小 |
| 网络操作数 | 网络操作次数 |
| 网络字节数 | 网络操作的大小 |
| 预装入文档 | 预装入文档操作的数目 |
| 预装入文档总数(毫秒) | 预装入文档的持续时间(以毫秒计) |
| 预装入 Idx | 预装入 idx 操作的数目 |
| 预装入 Idx 总计(毫秒) | 预装入 idx 的持续时间(以毫秒计) |
| 复制延迟 | 主项上的写操作与其复制到辅助项之间的延迟(毫秒) |
Atlas 集群(如果存在)
| 指标 | 描述 |
|---|---|
| 读 | 读取的文档数 |
| 已插入 | 插入的文档数 |
| 已上载 | 已上载的文档数 |
| 已删除 | 已删除的文档数 |
| 连接 | 当前连接的客户机数 |
| 网络操作数 | 网络操作次数 |
| 网络字节数 | 网络操作的大小 |
分片集群(Mongo和配置服务器)
对于 MongoDB 的分片集群, Instana 会同时监控 mongos 路由器实例和配置服务器,以追踪集群的健康状况和连接状态。
Mongos 指标(如有)
Mongos 配置数据
收集了以下关于 mongos 实例的配置信息:
| 配置项 | 描述 |
|---|---|
| 版本 | MongoDB 在 mongos 实例上运行的版本 |
| 端口 | mongos 实例监听的端口号 |
| 存储引擎 | mongos 实例使用的存储引擎 |
| 节点类型 | MongoDB 节点的类型(路由器实例使用mongos) |
| 配置数据库 | 配置服务器副本集的连接字符串 |
mongos 仪表盘中提供了以下指标:
| 指标类别 | 度量 | 描述 |
|---|---|---|
| 连接 | 连接 | 连接到 mongos 的活跃客户端数量 |
| 数据库大小 | 数据库总大小 | 可通过 mongos 访问的所有数据库的总大小 |
| 数据库活动 | 读取、插入、更新、删除 | 已读取、插入、更新和删除的文档数量 |
| 客户机数 | 连接 | 当前客户端连接数 |
| 内存 | 虚拟,映射 | mongos 进程的虚拟内存和映射内存使用情况 |
| 每秒的读取请求数 | 查询,了解更多 | 每秒的查询和 getMore 操作次数 |
| 每秒的写入请求数 | 插入、更新、删除 | 每秒插入、更新和删除操作的次数 |
| 客户读取操作的数量 | 在线客户、在线读者、可用连接 | 池中的活动读取客户端和可用连接 |
| 具有写操作的客户端数量 | 在线客户、在线写手、正在使用的连接 | 当前正在使用的活动写入客户端和连接 |
| 数据库 | 名称、尺寸 | 可通过此 mongos 实例访问的所有数据库列表 |
配置服务器指标(如有)
配置服务器配置数据
以下是针对配置服务器收集的配置信息:
| 配置项 | 描述 |
|---|---|
| 版本 | MongoDB 配置服务器上运行的版本 |
| 端口 | 配置服务器监听的端口号 |
| 存储引擎 | 配置服务器使用的存储引擎 |
| 节点类型 | MongoDB 节点的类型 |
| 副本集名称 | 配置服务器副本集的名称 |
| 角色 | 该节点在副本集中的当前角色 |
配置服务器是专门用于存储集群元数据和配置的 mongod 实例。 它们收集与常规 mongod 实例相同的标准 MongoDB 指标:
| 指标类别 | 度量 | 描述 |
|---|---|---|
| 连接 | 连接 | 连接到 mongod 的活跃客户端数量 |
| 数据库大小 | 数据库总大小 | 可通过 mongod 访问的所有数据库的总大小 |
| 数据库活动 | 读取、插入、更新、删除 | 已读取、插入、更新和删除的文档数量 |
| 客户机数 | 连接 | 当前客户端连接数 |
| 内存 | 虚拟,映射 | mongod 进程的虚拟内存和映射内存使用情况 |
| 每秒的读取请求数 | 查询,了解更多 | 每秒的查询和 getMore 操作次数 |
| 每秒的写入请求数 | 插入、更新、删除 | 每秒插入、更新和删除操作的次数 |
| 客户读取操作的数量 | 在线客户、在线读者、可用连接 | 池中的活动读取客户端和可用连接 |
| 具有写操作的客户端数量 | 在线客户、在线写手、正在使用的连接 | 当前正在使用的活动写入客户端和连接 |
| 数据库 | 名称、尺寸 | 可通过此 mongod 实例访问的所有数据库列表 |
配置服务器副本集指标(如有)
配置服务器以副本集的形式部署,以确保高可用性。 收集了以下副本集指标:
| 指标类别 | 度量 | 描述 |
|---|---|---|
| 数据库活动 | 读取、插入、更新、删除 | 已读取、插入、更新和删除的文档数量 |
| 复制性能 | 复制延迟 | 主存储器写入与次存储器复制之间的延迟(毫秒) |
| 客户机数 | 连接 | 活动客户端连接数 |
| 应用操作 | 应用操作、应用批次、批次总数 | 内部应用操作、批次及总时长(毫秒) |
| 网络 | 网络运维,网络字节 | 网络运营的数量和规模 |
| 产品缓冲量 | 缓冲区数量,缓冲区大小 | 缓冲区数量和缓冲区大小 |
| 预装入 | 文档、索引、文档总数、索引总数 | 文档和索引的预加载操作及其总耗时(毫秒) |
监控优势
分片集群监控可提供以下方面的可视化信息:
- Mongos 路由器 :路由查询的连接池健康状况与利用率
- 配置服务器可用性 :对集群元数据操作和配置更改至关重要
- 分片连接性和性能 :确保数据节点可达且响应及时
- 分片集群的整体健康状况 :分布式架构的端到端监控
这些指标有助于确保满足以下条件:
- Mongos 服务器会与配置服务器和分片保持活动连接
- 配置服务器已就绪且运行正常(这对集群运行至关重要)
- 分片集群基础设施在所有节点上均运行正常
- 查询路由性能已达到最佳状态
- 在潜在的连接问题影响应用程序之前,便能及早发现
健康指标
对于每个传感器,系统会将经过精心整理的健康指标知识库与实时采集的指标数据进行持续比对,并根据对用户的影响程度,据此触发问题或事件报告。
内置事件会根据实体的健康状态签名异常触发问题或事件,而自定义事件则会根据特定实体的某个指标的阈值触发问题或事件。
有关 MongoDB 传感器内置事件的信息,请参阅《内置事件参考》。有关包含mongos实例的 MongoDB 分片集群的更多信息,请参阅 MongoDB 分片集群(Mongos)。