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 参数设置为 onoff。例如,要在目录服务器实例中禁用 SNMP:
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x

dn: cn=SNMP,cn=config
changetype: modify
replace: nsSNMPEnabled
nsSNMPEnabled: on
Copy to Clipboard Toggle word wrap

21.10.3. 设置参数以使用 SNMP 识别实例

目录服务器提供以下属性,可帮助识别使用 SNMP 的实例:
  • nsSNMPOrganization
  • nsSNMPLocation
  • nsSNMPContact
  • nsSNMPDescription
有关参数的详情,请查看 红帽目录服务器配置、命令和文件参考中的 cn=SNMP 部分中的描述。
例如,要将 nsSNMPLocation 参数设置为 Munich,德国
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x

dn: cn=SNMP,cn=config
changetype: modify
replace: nsSNMPLocation
nsSNMPLocation: Munich, Germany
Copy to Clipboard Toggle word wrap

21.10.4. 为目录服务器设置 SNMP 代理

要使用 SNMP 协议从目录服务器查询信息,请设置 SNMP 代理:
  1. 安装 389-ds-base-snmpnet-snmp 软件包:
    # yum install 389-ds-base-snmp net-snmp
    Copy to Clipboard Toggle word wrap
  2. 要配置 SNMP master 代理,请编辑 /etc/snmp/snmpd.conf 文件,请添加以下条目来启用代理可扩展性(AgentX)协议:
    master agentx
    Copy to Clipboard Toggle word wrap
    有关 AgentX 协议的详情,请参阅 RFC 2741
  3. 要配置 SNMP 子代理,请编辑 /etc/dirsrv/config/ldap-agent.conf 文件,为您要监控的每个目录服务器实例添加 server 参数。例如:
    server slapd-instance_name
    Copy to Clipboard Toggle word wrap
  4. 另外,还可创建 SNMP 用户帐户:
    1. 停止 snmpd 服务:
      # systemctl stop snmpd
      Copy to Clipboard Toggle word wrap
    2. 创建 SNMP 用户帐户。例如:
      # net-snmp-create-v3-user -A authentication_password -a SHA \
           -X private_password -x AES user_name
      Copy to Clipboard Toggle word wrap
      有关该命令中使用的参数的详情,请查看 net-snmp-create-v3-user(1) man page。
    3. 启动 snmpd 服务:
      # systemctl start snmpd
      Copy to Clipboard Toggle word wrap
  5. 另外,还可设置 Directory 服务器描述性属性。详情请查看 第 21.10.3 节 “设置参数以使用 SNMP 识别实例”
  6. 启动 dirsrv-snmp 服务:
    # systemctl start dirsrv-snmp
    Copy to Clipboard Toggle word wrap
  7. (可选)验证配置:
    1. 安装 net-snmp-utils 软件包:
      # yum install net-snmp-utils
      Copy to Clipboard Toggle word wrap
    2. 查询目录服务器对象标识符(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
           -X private_password -x AES server.example.com .1.3.6.1.4.1.2312.6.1.1
      Copy to Clipboard Toggle word wrap

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 中存储的受管对象。
Expand
表 21.1. Operations Table: Managed Objects 和 Descriptions
受管对象 描述
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 中存储的受管对象。
Expand
表 21.2. entries Table: Managed Objects 和 Descriptions
受管对象 描述
dsCopyEntries 此目录包含副本的目录条目数。此对象的值始终为 0 ( 目前没有执行更新)。
dsCacheEntries 目录中缓存的条目数。
dsCacheHits 自应用程序启动以来从本地保存的缓存中服务的操作数量。

21.10.6.3. 实体表

Entity Table 包含有关目录服务器实例的信息。Entity Table 的值在 cn=SNMP,cn=config 条目中设置,如 第 21.10.3 节 “设置参数以使用 SNMP 识别实例” 所述。
表 21.3 “实体表: 管理的对象和描述” 描述存储在 redhat-directory.mib 文件的 Entity Table 中的受管对象。
Expand
表 21.3. 实体表: 管理的对象和描述
受管对象 描述
dsEntityDescr 为 Directory 服务器实例设置的描述。
dsEntityVers 目录服务器实例的版本号。
dsEntityOrg 负责目录服务器实例的机构。
dsEntityLocation 目录服务器实例的物理位置。
dsEntityContact 负责 Directory Server 实例的人员的名称和联系信息。
dsEntityName Directory 服务器实例的名称。

21.10.6.4. 互动表

注意
子代理 不支持 Interaction Table。子代理可以查询表,但不会使用有效数据进行更新。
表 21.4 “交互表:受管对象和描述” 描述存储在 redhat-directory.mib 文件的 Interaction Table 中的受管对象。
Expand
表 21.4. 交互表:受管对象和描述
受管对象 描述
dsIntTable 在表的每一行的详情,与被监控目录服务器交互的历史记录及其相应的对等目录服务器相关。
dsIntEntry 包含与对等目录服务器的目录服务器的交互详情的条目。
dsIntIndex 唯一密钥的一部分和 applIndex 来标识概念行,该行包含 Directory 服务器(由 applIndex)和对等目录服务器之间的有用信息。
dsName 此条目所属的对等目录服务器的可分辨名称(DN)。
dsTimeOfCreation 创建此行时 sysUpTime 的值。如果在网络管理子系统初始化之前创建该条目,此对象将包含 0 值。
dsTimeOfLastAttempt 当最后一次尝试联系这个目录服务器时,sysUpTime 的值。如果在网络管理子系统初始化之前进行最后一次尝试,此对象将包含 0 值。
dsTimeOfLastSuccess 当最后一次尝试联系这个目录服务器时,sysUpTime 的值成功。如果没有成功尝试,或者在网络管理子系统初始化前最后一次成功尝试,则此条目的值为零。
dsFailuresSinceLastSuccess 自最后一次尝试联系这个目录服务器时的失败次数是成功的。如果没有成功尝试,则此计数器将包含自创建此条目以来的失败次数。
dsFailures 自创建此条目以来的累积故障。
dsSuccesses 创建此条目后,累积成功。
dsURL 目录服务器应用程序的 URL。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat