在线文档教程

1.简介(OAM) | 1. Introduction (OAM)

1导言

OTP 中的操作和维护(OAM)支持包括 OTP 中管理子系统的通用模型以及这些子系统中要使用的一些组件。本节介绍该模型。

该模型的主要思想是它不受任何特定管理协议的约束。定义了应用程序编程接口(API),可用于编写特定管理协议的修改。

OTP中的每个OAM组件作为一个子应用程序实现,可以包含在系统的管理应用程序中。请注意,这样一个完整的管理应用程序不在此通用功能的范围内。然而,本节包括示例,说明如何构建这样的应用程序。

1.1术语

网络级别上与协议无关的架构模型是用于管理操作的众所周知的客户端 - 服务器模型。此模型基于客户端 - 服务器原则,管理者(客户端)在访问管理信息时向经理(服务器)发送请求。代理将回复发回给经理。与普通的客户机 - 服务器模型有两个主要区别:

  • 通常,少数经理会与许多代理进行沟通。

  • 代理可以自发地向经理发送通知,例如警报。

下图说明了这一想法:

图1.1:术语

经理经常被称为网络管理系统%28 NMS%29,以强调它通常是作为一个程序来实现的,它向操作符显示数据。

代理是在网络元件%28 NE%29在OTP中,NE可以是一个分布式系统,这意味着分布式系统作为一个实体进行管理。当然,可以将代理配置为能够在多个节点之一上运行,从而使其成为分布式OTP应用程序。

管理信息定义为管理信息库%28 MIB%29它是一个正式的定义,其中的信息,代理人提供给经理。管理器通过管理协议(如SNMP、CMIP、HTTP或CORBA)访问MIB。每个协议都有自己的MIB定义语言。在SNMP中,它是ASN.1的一个子集,在CMIP中是GDMO,在HTTP中是隐式的,使用CORBA是IDL。

通常,MIB中定义的实体被称为托管对象%28 MOs%29,尽管它们不必是以面向对象的方式的对象。例如,MIB中定义的简单标量变量称为MO。MOS是逻辑对象,不一定要一对一地映射到资源。

1.2型

本节介绍了在基于OTP的NE中使用的通用协议无关模型.。该模型适用于所有OAM组件,也可用于应用程序。该模型的优点是它清楚地将资源与管理协议分离开来。资源不需要知道使用哪种管理协议来管理系统。因此,可以使用不同的协议来管理相同的资源。

该模型所涉及的实体是代理,它终止管理协议,资源是要管理的,即实际的应用实体。资源一般不应该了解所使用的管理协议,而代理不应该了解托管资源。这意味着需要一个翻译机制,将管理业务转化为资源业务。这种翻译机制通常称为仪器仪表实现它的函数称为仪器功能.为管理协议和要管理的资源的每一个组合编写仪器功能。例如,如果应用程序要由SNMP和HTTP管理,则定义两组检测函数;一组将SNMP请求映射到资源,另一组则为某些资源生成HTML页面。

当经理向代理提出请求时,以下说明了这种情况:

图1.2:由管理器向代理请求

插装函数和资源之间的映射不一定是1-1。还可以为每个资源编写一个插装函数,并从不同的协议中使用该函数。

代理接收请求并将其映射到一个或多个检测函数的调用。这些函数对资源执行操作,以实现与MO关联的语义。

例如,使用SNMP和HTTP管理的系统可以按照以下方式构造:

图1.3:使用SNMP和HTTP管理的系统的结构

资源也可以向经理发送通知。通知的例子是事件和警报。资源需要生成与协议无关的通知。下图说明了如何实现这一目标:

图1.4:通知处理

主要思想是,资源以Erlang术语的形式将通知发送到专用的gen_event过程。在此过程中,将安装不同管理协议的处理程序。当此进程接收到事件时,它将转发给每个已安装的处理程序。处理程序负责将事件转换为要通过管理协议发送的通知。例如,SNMP的处理程序将每个事件转换为SNMP陷阱。

基于1.3 SNMP的oam

对于所有OAM组件,都提供了SNMP适配。今后可能会定义其他的适应办法。

OAM组件和其他一些OTP应用程序定义SNMP MIB。这些MIB用SNMPv 2 SMI语法编写,如RFC 1902所定义。为了方便起见,我们还提供了SNMPv 1 SMI等效。所有MIB都设计为v1/v2兼容,也就是说,v2MIB不使用v1中不可用的任何结构。

MIB结构

顶级OTP MIB称为OTP-REG它包含在SASL应用程序中。所有其他OTP MIB都从这个MIB导入一些对象。

每个MIB包含在一个应用程序中。MIB文本文件存储在mibs/<MIB>.mib在应用程序目录中。生成.hrl具有常量声明的文件存储在include/<MIB>.hrl,而编译后的MIB存储在priv/mibs/<MIB>.bin例如,OTP-MIB包含在SASL应用程序中:

sasl-1.3/mibs/OTP-MIB.mib include/OTP-MIB.hrl priv/mibs/OTP-MIB.bin

需要将此MIB导入另一个MIB的应用程序是使用il选项到SNMP MIB编译器:

snmp:c("MY-MIB", [{il, ["sasl/priv/mibs"]}]).

如果应用程序需要包含生成的.hrl文件,它将使用-include_lib指令到Erlang编译器:

-module(my_mib). -include_lib("sasl/include/OTP-MIB.hrl").

OTP系统中定义了以下MIB:

  • OTP-REG) (在 SASL 中)包含所有其他 MIB 使用的顶级 OTP 注册对象。

  • OTP-TC (在 SASL 中)包含一般的文本约定,任何其他 MIB 都可以使用它。

  • OTP-MIB (在 SASL 中)包含用于检测 Erlang 节点,Erlang 机器和系统中的应用程序的对象。

  • OTP-OS-MON-MIB(in oc_mon)包含用于检测系统中节点的磁盘,内存和 CPU 使用情况的对象。

  • OTP-SNMPEA-MIB(in snmp)包含用于检测和控制可扩展SNMP代理本身的对象。该代理还实现标准的 SNMPv2-MIB(如果使用 SNMPv1,则为 MIB-II 的 v1 部分)。

  • OTP-EVA-MIB(in eva)包含用于检测和控制系统中的事件和警报的对象。

  • OTP-LOG-MIB(in eva)包含用于检测和控制日志的日志和 FTP 传输的对象。

  • OTP-EVA-LOG-MIB(in eva)包含用于检测和控制系统中的事件和警报日志的对象。

  • OTP-SNMPEA-LOG-MIB(in eva)包含用于检测和控制系统中SNMP审计跟踪日志的对象。

不同的应用程序使用不同的策略将MIB加载到代理中。一些MIB实现是仅限代码的,而另一些则需要服务器。一种仅由纯代码MIB实现使用的方式是让用户调用一个函数,例如otp_mib:load(Agent)加载MIB​​和otp_mib:unload(Agent)卸载MIB。有关如何加载每个MIB的说明,请参阅每个应用程序的手册页。