21.10. 使用 SNMP 监控目录服务器
第 21 章 监控服务器和数据库活动 中描述的服务器和数据库活动监控日志设置特定于目录服务器。您还可以使用简单网络管理协议(SNMP)监控目录服务器,这是用于监控网络活动的管理协议,可用于实时监控各种设备。
通过 AgentX 子代理可以通过 SNMP 监控目录服务器。SNMP 监控收集有关目录服务器的有用信息,如绑定信息、服务器上执行的操作和缓存信息。Directory Server SNMP 子代理支持 SNMP 陷阱来发送有关服务器实例运行状态更改的通知。
21.10.1. 关于 SNMP
SNMP 已经成为了其广泛的流行性。这是这种互操作性,以及 SNMP 可以处理特定于整个不同设备类的许多作业,这使得 SNMP 成为全局网络控制和监控的理想标准机制。SNMP 允许网络管理员统一所有网络监控活动,以及更广泛的目录服务器监控部分。
SNMP 用于交换网络活动的数据。使用 SNMP 时,数据在受管设备与网络管理应用程序(NMS)之间传输,用户远程管理网络。受管设备是运行 SNMP 的任何内容,如主机、路由器和目录服务器。NMS 通常是安装一个或多个网络管理应用程序的强大工作站。网络管理应用程序以图形方式显示有关受管设备的信息,该设备是启动或关闭的设备,以及接收多少错误消息等。
NMS 和受管设备之间通过使用两种类型的代理传输信息:子代理和 主代理。子代理收集有关受管设备的信息,并将信息传递给主代理。目录服务器具有子代理。主代理在各种子代理和 NMS 之间交换信息。master 代理通常在与它与之通信的子代理相同的主机上运行,尽管它可以在远程计算机上运行。
SNMP 属性的值(其他称为变量)保存在受管设备上,并根据需要报告到 NMS。每个变量称为 受管对象,这是代理可访问的任何内容,并发送到 NMS。所有受管对象都在管理信息基础(MIB)中定义,这是具有类似树结构的数据库。层次结构的顶级包含有关网络的最常规信息。每个分支都更具体,处理单独的网络区域。
SNMP 以协议数据单元(PDU)的形式交换网络信息。PDU 包含有关存储在受管设备上的变量的信息。这些变量(也称为受管对象)具有根据需要向 NMS 报告的值和标题。NMS 和受管设备之间的通信由 NMS 发送更新或请求信息,或者在服务器关闭时发送通知或警告(称为 trap )或警告(称为 trap )。
21.10.2. 启用和禁用 SNMP 支持
默认情况下,在 Directory 服务器中启用了 SNMP 协议,在配置子代理后,您可以使用它。
要在实例中启用或禁用 SNMP,请将
nsSNMPEnabled
参数设置为 on 或 off。例如,在 Directory 服务器实例中禁用 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
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
21.10.4. 为目录服务器设置 SNMP 代理
要使用 SNMP 协议从目录服务器查询信息,请设置 SNMP 代理:
- 安装 389-ds-base-snmp 和 net-snmp 软件包:
# yum install 389-ds-base-snmp net-snmp
- 要配置 SNMP master 代理,请编辑
/etc/snmp/snmpd.conf
文件,添加以下条目来启用代理可扩展性(AgentX)协议:master agentx
有关 AgentX 协议的详情,请参考 RFC 2741。 - 要配置 SNMP 子代理,请编辑
/etc/dirsrv/config/ldap-agent.conf
文件,为要监控的每个目录服务器实例添加一个 server 参数。例如:server slapd-instance_name
- 另外,还可创建一个 SNMP 用户帐户:
- 停止
snmpd
服务:# systemctl stop snmpd
- 创建 SNMP 用户帐户。例如:
# net-snmp-create-v3-user -A authentication_password -a SHA \ -X private_password -x AES user_name
有关命令中使用的参数的详情,请查看 net-snmp-create-v3-user(1) man page。 - 启动
snmpd
服务:# systemctl start snmpd
- 另外,还可设置目录服务器描述性属性。详情请查看 第 21.10.3 节 “设置参数以使用 SNMP 识别实例”。
- 启动
dirsrv-snmp
服务:# systemctl start dirsrv-snmp
- 另外,验证配置:
- 安装 net-snmp-utils 软件包:
# yum install net-snmp-utils
- 查询目录服务器对象标识符(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
21.10.5. 配置 SNMP Traps
SNMP 陷阱基本上是一个阈值,它会在被监控的服务器遇到通知时触发通知。要使用陷阱,必须将 master 代理配置为接受陷阱并与其执行。例如,对于目录服务器实例的管理员,陷阱可以触发电子邮件通知。
子代理仅负责将陷阱发送到 master 代理。master 代理和陷阱处理器必须根据您使用的 SNMP master 代理的文档进行配置。
陷阱通过 实体表 的信息相关联,其中包含特定于目录服务器实例的信息,如名称和版本号。实体表 在 第 21.10.6.3 节 “实体表” 中进行了描述。这意味着,当主代理收到陷阱时执行的操作是灵活的,例如向一个实例的
dsEntityContact
变量中定义的电子邮件地址发送电子邮件,同时向另一个实例的 dsEntityContact
变量中的页面号发送通知。
subagent 支持两个陷阱:
- DirectoryServerDown.每当子代理检测到目录服务器可能没有运行时,都会生成此陷阱。此陷阱将发送有目录服务器实例描述、版本、物理位置和联系信息,这些信息在
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 提供有关目录服务器访问、操作和错误的统计信息。表 21.1 “操作表:受管对象和描述” 描述存储在
redhat-directory.mib
文件 的操作 表中的受管对象。
受管对象 | 描述 |
---|---|
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. 条目表
受管对象 | 描述 |
---|---|
dsCopyEntries | 此目录包含副本的目录条目数。此对象的值始终为 0 ( 因为当前没有执行任何更新)。 |
dsCacheEntries | 目录中缓存的条目数。 |
dsCacheHits | 从应用程序启动以来本地保存缓存的操作数量。 |
21.10.6.3. 实体表
Entity Table 包含有关目录服务器实例的识别信息。Entity Table 的值在 cn=SNMP,cn=config 条目中设置,如 第 21.10.3 节 “设置参数以使用 SNMP 识别实例” 所述。
受管对象 | 描述 |
---|---|
dsEntityDescr | 为 Directory 服务器实例设置的描述。 |
dsEntityVers | Directory 服务器实例的 Directory Server 版本号。 |
dsEntityOrg | 负责 Directory 服务器实例的组织。 |
dsEntityLocation | 目录服务器实例的物理位置。 |
dsEntityContact | 负责 Directory 服务器实例的人员的名称和联系信息。 |
dsEntityName | 目录服务器实例的名称。 |
21.10.6.4. 互动表
注意
subagent 不支持 Interaction 表。子代理可以查询表,但不会使用有效的数据进行更新。
受管对象 | 描述 |
---|---|
dsIntTable | 详情,在表的每一行中,与被监控目录服务器交互的历史记录相关。 |
dsIntEntry | 包含目录服务器与对等目录服务器交互详情的条目。 |
dsIntIndex | 唯一密钥的一部分以及 applIndex 来标识概念行,其中包含目录服务器(由 applIndex引用)和对等目录服务器之间的有用信息。 |
dsName | 此条目所属的对等目录服务器的可分辨名称(DN)。 |
dsTimeOfCreation | 创建此行时 sysUpTime 的值。如果在网络管理子系统初始化前创建了该条目,此对象将包含 0 的值。 |
dsTimeOfLastAttempt | 最后一次尝试联系此目录服务器时,sysUpTime 的值。如果在网络管理子系统初始化前进行最后一次尝试,此对象将包含 0 的值。 |
dsTimeOfLastSuccess | 最后一次尝试联系此目录服务器时,sysUpTime 的值成功。如果没有成功尝试,或者在网络管理子系统初始化前尝试上次成功尝试,则此条目将为零。 |
dsFailuresSinceLastSuccess | 最后一次尝试联系此目录服务器成功后的失败次数。如果没有成功尝试,这个计数器将包含自创建此条目以来的失败次数。 |
dsFailures | 创建此条目后累积失败。 |
dsSuccesses | 创建此条目后累积成功。 |
dsURL | 目录服务器应用程序的 URL。 |