监视 MongoDB

安装 Instana 代理后, MongoDB 传感器将自动部署并安装。

支持信息

为确保 MongoDB 传感器与您的当前配置兼容,请查阅以下支持信息部分:

受支持的操作系统

该传感器支持与 Instana 主机代理相同的操作系统。 有关详细信息,请参阅各主机代理的 “支持的操作系统 ”部分,例如:

注: 操作系统支持情况取决于具体技术和监控方法。 对于远程监控, Instana 代理程序可在 Instana 支持的任何操作系统上运行,无论该技术本身基于何种操作系统。 对于原生监控, 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 代理程序创建用户:

  1. admin 用户身份进行认证:
    use admin
    db.auth("admin", "YOUR_MONGODB_ADMIN_PASSWORD")
     
  2. 对于 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 管理控制台创建用户,并为其分配所有角色。
  3. 创建用户后,您可以在代理程序配置文件中对其进行配置:

    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.
    注意: 通用指标的默认间隔为 1 秒,而副本集的默认间隔为 30 秒。 seconds.The source 指的是定义该用户的数据库或身份验证源。 如需更多信息,请参阅 MongoDB 文档
    注意: 当您使用 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'
 
注意: 通用指标的默认间隔为 1 秒,副本集的默认间隔为 30 秒。
注意:API 密钥由公钥和私钥组成,您必须在 MongoDB Atlas 组织级别进行定义。 所需的最低组织权限是 Organization Read Only.
注意: 如果您使用 MongoDB Atlas ,请仅通过 MongoDB Atlas 管理控制台创建用户,并为其分配所有角色。

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 代理通过 SSL / TLS 连接到 MongoDB。 建立连接后,将使用凭据(用户名和密码)访问身份验证数据库。

指标收集

要查看指标,请在 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)