21.10. 使用 SNMP 监控目录服务器
第 21 章 监控服务器和数据库活动 中描述的服务器和数据库活动监控日志设置特定于目录服务器。您还可以使用简单网络管理协议(SNMP)监控目录服务器,它是一个用于监控网络活动的管理协议,这些协议可用于实时监控各种设备。
目录服务器可以通过 AgentX 子代理通过 SNMP 监控。SNMP 监控收集有关目录服务器的有用信息,如绑定信息、服务器上执行的操作和缓存信息。目录服务器 SNMP 子代理支持 SNMP 陷阱来发送有关服务器实例运行状态更改的通知。
21.10.1. 关于 SNMP 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
SNMP 因其广泛的流行度的帐户变得可互操作性。它是这种互操作性,结合 SNMP 可以接管特定于整个设备类的大量作业,这使得 SNMP 成为全局网络控制和监控的理想标准机制。SNMP 允许网络管理员统一所有网络监控活动,以及 Directory Server 监控部分更广泛的照片。
SNMP 用于交换有关网络活动的数据。使用 SNMP,在托管设备和网络管理应用程序(NMS)之间传输数据,用户可远程管理网络。受管设备是运行 SNMP 的任何设备,如主机、路由器和目录服务器。NMS 通常是安装有一个或多个网络管理应用程序的强大工作站。网络管理应用程序以图形方式显示有关受管设备的信息,哪个设备为 up 或 down,以及收到了多少错误消息等。
使用两种类型的代理,在 NMS 和受管设备之间传输信息:子代理和主代理。子代理收集有关受管设备的信息,并将信息传递给 master 代理。目录服务器有一个子代理。主代理交换各种子代理和 NMS 之间的信息。主控机代理通常在与它所通信的子代理相同的主机计算机上运行,尽管它可以在远程计算机上运行。
SNMP 属性的值(也称为变量)的值将保存在受管设备上,并根据需要报告给 NMS。每个变量称为 受管对象,这是代理可以访问并发送到 NMS 的任何对象。所有受管对象都在管理信息基础(MIB)中定义,这是具有类似于树结构的数据库。层次结构的顶部包含有关网络的最常规信息。下面的每个分支都更为具体,处理不同的网络区域。
SNMP 以协议数据单元(PDU)的形式交换网络信息。PDU 包含有关存储在受管设备上的变量的信息。这些变量(也称为受管对象)具有报告给 NMS 的值和标题。NMS 和受管设备之间的通信由 NMS 发送更新或请求信息,或者由受管对象发送通知或警告(称为 trap )发生,当服务器关闭或启动时。
21.10.2. 启用和禁用 SNMP 支持 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
默认情况下,NNM 协议在 Directory 服务器中被启用,并在配置子代理后,您可以使用它。
要在实例中启用或禁用 SNMP,请将
nsSNMPEnabled 参数设置为 on 或 off。例如,要在目录服务器实例中禁用 SNMP:
21.10.3. 设置参数以使用 SNMP 识别实例 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
目录服务器提供以下属性,可帮助识别使用 SNMP 的实例:
nsSNMPOrganizationnsSNMPLocationnsSNMPContactnsSNMPDescription
有关参数的详情,请查看 红帽目录服务器配置、命令和文件参考中的 cn=SNMP 部分中的描述。
例如,要将
nsSNMPLocation 参数设置为 Munich,德国 :
21.10.4. 为目录服务器设置 SNMP 代理 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
要使用 SNMP 协议从目录服务器查询信息,请设置 SNMP 代理:
- 安装 389-ds-base-snmp 和 net-snmp 软件包:
yum install 389-ds-base-snmp net-snmp
# yum install 389-ds-base-snmp net-snmpCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 要配置 SNMP master 代理,请编辑
/etc/snmp/snmpd.conf文件,请添加以下条目来启用代理可扩展性(AgentX)协议:master agentx
master agentxCopy to Clipboard Copied! Toggle word wrap Toggle overflow 有关 AgentX 协议的详情,请参阅 RFC 2741。 - 要配置 SNMP 子代理,请编辑
/etc/dirsrv/config/ldap-agent.conf文件,为您要监控的每个目录服务器实例添加 server 参数。例如:server slapd-instance_name
server slapd-instance_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 另外,还可创建 SNMP 用户帐户:
- 停止
snmpd服务:systemctl stop snmpd
# systemctl stop snmpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建 SNMP 用户帐户。例如:
net-snmp-create-v3-user -A authentication_password -a SHA \ -X private_password -x AES user_name# net-snmp-create-v3-user -A authentication_password -a SHA \ -X private_password -x AES user_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 有关该命令中使用的参数的详情,请查看 net-snmp-create-v3-user(1) man page。 - 启动
snmpd服务:systemctl start snmpd
# systemctl start snmpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 另外,还可设置 Directory 服务器描述性属性。详情请查看 第 21.10.3 节 “设置参数以使用 SNMP 识别实例”。
- 启动
dirsrv-snmp服务:systemctl start dirsrv-snmp
# systemctl start dirsrv-snmpCopy to Clipboard Copied! Toggle word wrap Toggle overflow - (可选)验证配置:
- 安装 net-snmp-utils 软件包:
yum install net-snmp-utils
# yum install net-snmp-utilsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 查询目录服务器对象标识符(OID)。例如:
snmpwalk -v3 -u user_name -M /usr/share/snmp/mibs:/usr/share/dirsrv/mibs/ \ -l AuthPriv -m +RHDS-MIB -A authentication_password -a SHA# snmpwalk -v3 -u user_name -M /usr/share/snmp/mibs:/usr/share/dirsrv/mibs/ \ -l AuthPriv -m +RHDS-MIB -A authentication_password -a SHA -X private_password -x AES server.example.com .1.3.6.1.4.1.2312.6.1.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
21.10.5. 配置 SNMP Traps 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
SNMP 陷阱本质上是触发通知(如果被监控服务器遇到)的阈值。要使用陷阱,必须将 master 代理配置为接受陷阱并使用它们执行。例如,一个 trap 可以触发 Directory Server 实例的管理员的电子邮件通知停止。
子代理仅负责将 traps 发送到 master 代理。master 代理和 trap 处理程序必须根据您使用的 SNMP master 代理的文档进行配置。
陷阱由 实体表 的信息指示,其中包含特定于目录服务器实例的信息,如名称和版本号。实体表 在 第 21.10.6.3 节 “实体表” 中进行了描述。这意味着,主代理在接收陷阱时采取的操作非常灵活,例如,向 dsEntityContact 变量中定义的电子邮件地址发送电子邮件到
dsEntityContact 变量中定义的电子邮件地址,同时向另一个实例的 dsEntityContact 变量中的 pageEntityContact 变量发送通知。
子代理支持两个陷阱:
- DirectoryServerDown.每当子代理检测到 Directory 服务器时,都会生成此 trap。这个陷阱将随目录服务器实例描述、版本、物理位置和联系信息发送,这些信息在
dsEntityDescr,dsEntityVers,dsEntityLocation, 和dsEntityContact变量中详细介绍。 - DirectoryServerStart.每当子代理检测到目录服务器已启动或重启时,都会生成此陷阱。这个陷阱将随目录服务器实例描述、版本、物理位置和联系信息发送,这些信息在
dsEntityDescr,dsEntityVers,dsEntityLocation, 和dsEntityContact变量中详细介绍。
21.10.6. 使用管理信息库 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
目录服务器的 MIB 是存储在
/usr/share/dirsrv/mibs 目录中的一个名为 redhat-directory.mib 的文件。此 MIB 包含与目录网络管理相关的变量的定义。这些变量称为受管对象。使用目录 MIB 和 Net-SNMP,您可以像监控网络上的所有其他受管设备一样监控目录。有关使用 MIB 的详情,请参考 第 21.10.4 节 “为目录服务器设置 SNMP 代理”。
客户端工具需要加载目录服务器 MIB,以便使用以下部分中列出的变量名称。
通过利用目录 MIB,管理员可以利用 SNMP 查看有关 目录的管理信息并实时监控服务器。目录 MIB 分为四个不同的受管对象表:
注意
SNMP 监控的所有目录服务器属性对计数器使用 64 位整数,即使在 32 位系统上。
21.10.6.1. Operations Table 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Operations Table 提供有关目录服务器访问、操作和错误的统计信息。表 21.1 “Operations Table: Managed Objects 和 Descriptions” 描述
redhat-directory.mib 文件的 Operations Table 中存储的受管对象。
| 受管对象 | 描述 |
|---|---|
| dsAnonymousBinds | 自服务器启动以来,匿名绑定到目录的数量。 |
| dsUnauthBinds | 自服务器启动以来,未经身份验证的绑定至目录的数量。 |
| dsSimpleAuthBinds | 从服务器启动后,绑定到使用简单身份验证方法(如密码保护)建立的目录数量。 |
| dsStrongAuthBinds | 从服务器启动后,绑定到使用强大的身份验证方法(如 TLS 或 SASL 机制)建立的目录数量。 |
| dsBindSecurityErrors | 因为身份验证失败或因为服务器启动而无效凭证而导致目录拒绝的绑定请求数。 |
| dsInOps | 从服务器启动以来,从另一个目录转发到此目录的操作数量。 |
| dsReadOps | 自应用程序启动以来,此目录服务的读取操作数量。此对象的值始终为 0, 因为 LDAP 使用搜索操作间接实施读操作。 |
| dsCompareOps | 自服务器启动以来,此目录提供服务的比较操作数量。 |
| dsAddEntryOps | 自服务器启动以来,此目录服务的添加操作数量。 |
| dsRemoveEntryOps | 从服务器启动以来,此目录服务的删除操作数量。 |
| dsModifyEntryOps | 此目录服务的修改操作数量,自服务器启动以来。 |
| dsModifyRDNOps | 从服务器启动以来此目录提供服务的修改 RDN 操作数量。 |
| dsListOps | 从服务器启动以来此目录提供服务的列表操作数。此对象的值始终为 0, 因为 LDAP 使用搜索操作间接实施列表操作。 |
| dsSearchOps | 从服务器启动以来此目录提供服务的搜索操作总数。 |
| dsOneLevelSearchOps | 从服务器启动以来此目录提供服务的一个级别的搜索操作数。 |
| dsWholeSubtreeSearchOps | 从服务器启动以来此目录提供服务的整个子树搜索操作数量。 |
| dsReferrals | 此目录返回的引用数量,以响应自服务器启动以来的客户端请求。 |
| dsSecurityErrors | 转发到没有满足安全要求的这个目录的操作数量。 |
| dsErrors | 因为错误(除了安全或引用错误)无法提供服务的请求数。错误包括名称错误、更新错误、属性错误和服务错误。部分服务请求不会计入错误。 |
21.10.6.2. 条目表 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
条目表 提供有关目录条目内容的信息。表 21.2 “entries Table: Managed Objects 和 Descriptions” 描述
redhat-directory.mib 文件中的 Entries Table 中存储的受管对象。
| 受管对象 | 描述 |
|---|---|
| dsCopyEntries | 此目录包含副本的目录条目数。此对象的值始终为 0 ( 目前没有执行更新)。 |
| dsCacheEntries | 目录中缓存的条目数。 |
| dsCacheHits | 自应用程序启动以来从本地保存的缓存中服务的操作数量。 |
21.10.6.3. 实体表 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Entity Table 包含有关目录服务器实例的信息。Entity Table 的值在 cn=SNMP,cn=config 条目中设置,如 第 21.10.3 节 “设置参数以使用 SNMP 识别实例” 所述。
| 受管对象 | 描述 |
|---|---|
| dsEntityDescr | 为 Directory 服务器实例设置的描述。 |
| dsEntityVers | 目录服务器实例的版本号。 |
| dsEntityOrg | 负责目录服务器实例的机构。 |
| dsEntityLocation | 目录服务器实例的物理位置。 |
| dsEntityContact | 负责 Directory Server 实例的人员的名称和联系信息。 |
| dsEntityName | Directory 服务器实例的名称。 |
21.10.6.4. 互动表 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
注意
子代理 不支持 Interaction Table。子代理可以查询表,但不会使用有效数据进行更新。
| 受管对象 | 描述 |
|---|---|
| dsIntTable | 在表的每一行的详情,与被监控目录服务器交互的历史记录及其相应的对等目录服务器相关。 |
| dsIntEntry | 包含与对等目录服务器的目录服务器的交互详情的条目。 |
| dsIntIndex | 唯一密钥的一部分和 applIndex 来标识概念行,该行包含 Directory 服务器(由 applIndex)和对等目录服务器之间的有用信息。 |
| dsName | 此条目所属的对等目录服务器的可分辨名称(DN)。 |
| dsTimeOfCreation | 创建此行时 sysUpTime 的值。如果在网络管理子系统初始化之前创建该条目,此对象将包含 0 值。 |
| dsTimeOfLastAttempt | 当最后一次尝试联系这个目录服务器时,sysUpTime 的值。如果在网络管理子系统初始化之前进行最后一次尝试,此对象将包含 0 值。 |
| dsTimeOfLastSuccess | 当最后一次尝试联系这个目录服务器时,sysUpTime 的值成功。如果没有成功尝试,或者在网络管理子系统初始化前最后一次成功尝试,则此条目的值为零。 |
| dsFailuresSinceLastSuccess | 自最后一次尝试联系这个目录服务器时的失败次数是成功的。如果没有成功尝试,则此计数器将包含自创建此条目以来的失败次数。 |
| dsFailures | 自创建此条目以来的累积故障。 |
| dsSuccesses | 创建此条目后,累积成功。 |
| dsURL | 目录服务器应用程序的 URL。 |