在 Linux 上使用 SNMP 监控 MongoDB
Overview
MongoDB Enterprise可以通过 SNMP 提供数据库指标,支持集中式数据集合和聚合。 此操作步骤介绍如何设置和配置 mongod
实例作为 SNMP 子代理,以及如何初始化和测试MongoDB Enterprise的 SNMP支持。
Considerations
配置文件
MongoDB Enterprise 包括以下 SNMP 配置文件:
MONGOD-MIB.txt
:定义 MongoDB 的 SNMP 输出的管理信息库 (MIB) 文件。 在 Ubuntu 和 Debian 平台上,此文件在交付时压缩为
MONGOD-MIB.txt.gz
,并且必须使用gunzip
解压缩。mongod.conf.subagent
:将
mongod
作为 SNMP 子代理运行的配置文件。 此文件设置 SNMP 运行时配置选项,包括用于连接到 SNMP 主节点的agentXSocket
。mongod.conf.master
:将
mongod
作为 SNMP 主节点运行的配置文件。 此文件设置 SNMP 运行时配置选项,包括要在其上运行的agentaddress
。
MongoDB SNMP 配置文件随 MongoDB Enterprise 安装提供,如下所示:
如果通过包经理安装 MongoDB Enterprise,则在包安装过程中,这些文件将安装到以下目录:
平台路径RHEL/CentOS
/usr/share/doc/mongodb-enterprise-server-5.0.29
Ubuntu/Debian
/usr/share/doc/mongodb-enterprise-server
SUSE
/usr/share/doc/packages/mongodb-enterprise-server
如果您通过
.tgz
tarball 安装了 MongoDB Enterprise,则这些文件包含在 tarball 中。
步骤
复制配置文件。
根据您的平台,将 MongoDB SNMP 配置文件从其安装位置复制到目标目录:
导航到 SNMP 文件的安装位置。 例如,如果您通过
yum
包经理安装了最新版本的 MongoDB:cd /usr/share/doc/mongodb-enterprise-server-5.0.29 将两个 MongoDB SNMP 文件复制到其目标目录:
sudo cp MONGOD-MIB.txt /usr/share/snmp/mibs/ sudo cp mongod.conf.subagent /etc/snmp/mongod.conf
导航到 SNMP 文件的安装位置。 例如,如果您通过
apt
包管理器安装了 MongoDB:cd /usr/share/doc/mongodb-enterprise-server 将
MONGOD-MIB.txt.gz
文件复制到其目标目录,然后解压缩:sudo cp MONGOD-MIB.txt.gz /usr/share/snmp/mibs/ sudo gunzip /usr/share/snmp/mibs/MONGOD-MIB.txt.gz 将
mongod.conf.subagent
文件复制到其目标目录:sudo cp mongod.conf.subagent /etc/snmp/mongod.conf
导航到 SNMP 文件的安装位置。 例如,如果您通过
zypper
包经理安装了最新版本的 MongoDB:cd /usr/share/doc/packages/mongodb-enterprise-server 将两个 MongoDB SNMP 文件复制到其目标目录:
sudo cp MONGOD-MIB.txt /usr/share/snmp/mibs/ sudo cp mongod.conf.subagent /etc/snmp/mongod.conf
配置 SNMP。
编辑/etc/snmp/snmpd.conf
文件,并添加以下内容:
# sec.name source community com2sec local localhost mongodb # group.name sec.model sec.name group MyRWGroup any local # incl/excl subtree mask view all included .1 80 # context sec.model sec.level prefix read write notif access MyRWGroup "" any noauth 0 all all all master agentx AgentXSocket /tmp/agentx/master AgentXPerms 0777 0777 mongod mongod
如果尚未安装
snmpd
,请安装:sudo apt-get install snmpd 编辑
/etc/snmp/snmpd.conf
文件,并添加以下内容:# sec.name source community com2sec local localhost mongodb # group.name sec.model sec.name group MyRWGroup any local # incl/excl subtree mask view all included .1 80 # context sec.model sec.level prefix read write notif access MyRWGroup "" any noauth 0 all all all AgentXSocket /tmp/agentx/master AgentXPerms 0777 0777 mongodb mongodb
编辑/etc/snmp/snmpd.conf
文件,并添加以下内容:
# sec.name source community com2sec local localhost mongodb # group.name sec.model sec.name group MyRWGroup any local # incl/excl subtree mask view all included .1 80 # context sec.model sec.level prefix read write notif access MyRWGroup "" any noauth 0 all all all master agentx AgentXSocket /tmp/agentx/master AgentXPerms 0777 0777 mongod mongod
此配置定义了一个 UNIX 域套接字,用于master代理 ( snmpd
) 和sub-agent(MongoDB) 之间的通信,并定义了用于访问相关 MongoDB SNMP 字段的基本 SNMP 权限。
注意
要将主节点绑定到非本地主机 IP 地址,请将该 IP 地址添加到/etc/snmp/snmpd.conf
文件中的agentaddress
字段,并更新相应的网络安全 ACL 以支持有效的地址范围。 作为示例, mongod.conf.master
配置文件中提供了地址范围 10.0.0.0/8(安全名称为“mynetwork”)。
上述配置仅作为示例;您不妨根据站点的安全要求自定义权限。 虽然 MongoDB 支持部门可以提供有关为 SNMP 配置 MongoDB 的指导,但在操作系统上配置 SNMP 超出了我们的范围。
启动 MongoDB。
使用 启动 ,以将数据发送到 SNMPmongod
snmp-subagent
主节点。
mongod --snmp-subagent
确认 SNMP 数据检索。
使用snmpwalk
测试命令验证 MongoDB 是否可用于 SNMP 查询。
在系统上安装
snmpwalk
:sudo yum install net-snmp-utils 使用以下参数运行
snmpwalk
,验证是否有能力从mongod
收集数据:snmpwalk -m /usr/share/snmp/mibs/MONGOD-MIB.txt -v 2c -c mongodb 127.0.0.1:161 1.3.6.1.4.1.34601
仅限Debian :如有必要,请将
non-free
存储库添加到/etc/apt/sources.list
文件中,以访问权限snmp-mibs-downloader
包。 示例,在Debian 9 "Stretch" 上,主节点 (primary node in the replica set)存储库条目可能如下所示:deb http://deb.debian.org/debian stretch main non-free deb-src http://deb.debian.org/debian stretch main non-free Debian / Ubuntu :安装
snmp-mibs-downloader
包以提供必要的 MIB 文件,然后重新启动snmpd
服务以重新加载新的 MIB 文件:sudo apt-get update sudo apt-get -y install snmp-mibs-downloader sudo service snmpd restart Debian / Ubuntu :使用以下参数运行
snmpwalk
,验证从mongod
收集数据的能力:snmpwalk -m /usr/share/snmp/mibs/MONGOD-MIB.txt -v 2c -c mongodb 127.0.0.1:161 1.3.6.1.4.1.34601
snmpwalk -m /usr/share/snmp/mibs/MONGOD-MIB.txt -v 2c -c mongodb 127.0.0.1:161 1.3.6.1.4.1.34601
snmpwalk
命令应显示 SNMP 字段的当前值,例如sysUpTime
和memoryResident
等。
可选:将 MongoDB 作为 SNMP 主节点运行
您可以使用 选项运行mongod
snmp-master
进行测试。为此,请使用 SNMP 主配置文件而不是子代理配置文件。 在包含解压缩的 MongoDB 安装文件的目录中:
cp mongod.conf.master /etc/snmp/mongod.conf
注意
要将主节点绑定到非本地主机 IP 地址,请将该 IP 地址添加到/etc/snmp/mongod.conf
文件中的agentaddress
字段,并更新相应的网络安全 ACL 以支持有效的地址范围。 以主配置文件中提供的地址范围 10.0.0.0/8 和安全名称为“mynetwork”为例。
然后,使用 选项启动mongod
snmp-master
:
mongod --snmp-master