Internet Engineering Task Force (IETF)                         S. Vallin
Request for Comments: 8632                              Stefan Vallin AB
Category: Standards Track                                   M. Bjorklund
ISSN: 2070-1721                                                    Cisco
                                                          September 2019
        
Internet Engineering Task Force (IETF)                         S. Vallin
Request for Comments: 8632                              Stefan Vallin AB
Category: Standards Track                                   M. Bjorklund
ISSN: 2070-1721                                                    Cisco
                                                          September 2019
        

A YANG Data Model for Alarm Management

一种报警管理的YANG数据模型

Abstract

摘要

This document defines a YANG module for alarm management. It includes functions for alarm-list management, alarm shelving, and notifications to inform management systems. There are also operations to manage the operator state of an alarm and administrative alarm procedures. The module carefully maps to relevant alarm standards.

本文件定义了报警管理模块。它包括报警列表管理、报警搁置和通知管理系统的功能。还有用于管理报警和管理报警程序的操作员状态的操作。该模块仔细地映射到相关报警标准。

Status of This Memo

关于下段备忘

This is an Internet Standards Track document.

这是一份互联网标准跟踪文件。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.

本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。有关互联网标准的更多信息,请参见RFC 7841第2节。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc8632.

有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问https://www.rfc-editor.org/info/rfc8632.

Copyright Notice

版权公告

Copyright (c) 2019 IETF Trust and the persons identified as the document authors. All rights reserved.

版权(c)2019 IETF信托基金和被确定为文件作者的人员。版权所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(https://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。

Table of Contents

目录

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
     1.1.  Terminology and Notation  . . . . . . . . . . . . . . . .   3
   2.  Objectives  . . . . . . . . . . . . . . . . . . . . . . . . .   5
   3.  Alarm Data Model Concepts . . . . . . . . . . . . . . . . . .   5
     3.1.  Alarm Definition  . . . . . . . . . . . . . . . . . . . .   5
     3.2.  Alarm Type  . . . . . . . . . . . . . . . . . . . . . . .   6
     3.3.  Identifying the Alarming Resource . . . . . . . . . . . .   8
     3.4.  Identifying Alarm Instances . . . . . . . . . . . . . . .   9
     3.5.  Alarm Lifecycle . . . . . . . . . . . . . . . . . . . . .   9
       3.5.1.  Resource Alarm Lifecycle  . . . . . . . . . . . . . .  10
       3.5.2.  Operator Alarm Lifecycle  . . . . . . . . . . . . . .  11
       3.5.3.  Administrative Alarm Lifecycle  . . . . . . . . . . .  11
     3.6.  Root Cause, Impacted Resources, and Related Alarms  . . .  11
     3.7.  Alarm Shelving  . . . . . . . . . . . . . . . . . . . . .  13
     3.8.  Alarm Profiles  . . . . . . . . . . . . . . . . . . . . .  13
   4.  Alarm Data Model  . . . . . . . . . . . . . . . . . . . . . .  13
     4.1.  Alarm Control . . . . . . . . . . . . . . . . . . . . . .  15
       4.1.1.  Alarm Shelving  . . . . . . . . . . . . . . . . . . .  15
     4.2.  Alarm Inventory . . . . . . . . . . . . . . . . . . . . .  16
     4.3.  Alarm Summary . . . . . . . . . . . . . . . . . . . . . .  16
     4.4.  The Alarm List  . . . . . . . . . . . . . . . . . . . . .  17
     4.5.  The Shelved-Alarm List  . . . . . . . . . . . . . . . . .  19
     4.6.  Alarm Profiles  . . . . . . . . . . . . . . . . . . . . .  19
     4.7.  Operations  . . . . . . . . . . . . . . . . . . . . . . .  20
     4.8.  Notifications . . . . . . . . . . . . . . . . . . . . . .  20
   5.  Relationship to the ietf-hardware YANG Module . . . . . . . .  20
   6.  Alarm YANG Module . . . . . . . . . . . . . . . . . . . . . .  21
   7.  The X.733 Mapping Module  . . . . . . . . . . . . . . . . . .  53
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  65
   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  65
   10. References  . . . . . . . . . . . . . . . . . . . . . . . . .  67
     10.1.  Normative References . . . . . . . . . . . . . . . . . .  67
     10.2.  Informative References . . . . . . . . . . . . . . . . .  68
   Appendix A.  Vendor-Specific Alarm Types Example  . . . . . . . .  70
   Appendix B.  Alarm Inventory Example  . . . . . . . . . . . . . .  71
   Appendix C.  Alarm List Example . . . . . . . . . . . . . . . . .  71
   Appendix D.  Alarm Shelving Example . . . . . . . . . . . . . . .  73
   Appendix E.  X.733 Mapping Example  . . . . . . . . . . . . . . .  74
   Appendix F.  Relationship to Other Alarm Standards  . . . . . . .  74
     F.1.  Definition of "Alarm" . . . . . . . . . . . . . . . . . .  74
     F.2.  Data Model  . . . . . . . . . . . . . . . . . . . . . . .  76
       F.2.1.  X.733 . . . . . . . . . . . . . . . . . . . . . . . .  76
       F.2.2.  The Alarm MIB (RFC 3877)  . . . . . . . . . . . . . .  77
       F.2.3.  3GPP Alarm IRP  . . . . . . . . . . . . . . . . . . .  77
       F.2.4.  G.7710  . . . . . . . . . . . . . . . . . . . . . . .  78
        
   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
     1.1.  Terminology and Notation  . . . . . . . . . . . . . . . .   3
   2.  Objectives  . . . . . . . . . . . . . . . . . . . . . . . . .   5
   3.  Alarm Data Model Concepts . . . . . . . . . . . . . . . . . .   5
     3.1.  Alarm Definition  . . . . . . . . . . . . . . . . . . . .   5
     3.2.  Alarm Type  . . . . . . . . . . . . . . . . . . . . . . .   6
     3.3.  Identifying the Alarming Resource . . . . . . . . . . . .   8
     3.4.  Identifying Alarm Instances . . . . . . . . . . . . . . .   9
     3.5.  Alarm Lifecycle . . . . . . . . . . . . . . . . . . . . .   9
       3.5.1.  Resource Alarm Lifecycle  . . . . . . . . . . . . . .  10
       3.5.2.  Operator Alarm Lifecycle  . . . . . . . . . . . . . .  11
       3.5.3.  Administrative Alarm Lifecycle  . . . . . . . . . . .  11
     3.6.  Root Cause, Impacted Resources, and Related Alarms  . . .  11
     3.7.  Alarm Shelving  . . . . . . . . . . . . . . . . . . . . .  13
     3.8.  Alarm Profiles  . . . . . . . . . . . . . . . . . . . . .  13
   4.  Alarm Data Model  . . . . . . . . . . . . . . . . . . . . . .  13
     4.1.  Alarm Control . . . . . . . . . . . . . . . . . . . . . .  15
       4.1.1.  Alarm Shelving  . . . . . . . . . . . . . . . . . . .  15
     4.2.  Alarm Inventory . . . . . . . . . . . . . . . . . . . . .  16
     4.3.  Alarm Summary . . . . . . . . . . . . . . . . . . . . . .  16
     4.4.  The Alarm List  . . . . . . . . . . . . . . . . . . . . .  17
     4.5.  The Shelved-Alarm List  . . . . . . . . . . . . . . . . .  19
     4.6.  Alarm Profiles  . . . . . . . . . . . . . . . . . . . . .  19
     4.7.  Operations  . . . . . . . . . . . . . . . . . . . . . . .  20
     4.8.  Notifications . . . . . . . . . . . . . . . . . . . . . .  20
   5.  Relationship to the ietf-hardware YANG Module . . . . . . . .  20
   6.  Alarm YANG Module . . . . . . . . . . . . . . . . . . . . . .  21
   7.  The X.733 Mapping Module  . . . . . . . . . . . . . . . . . .  53
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  65
   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  65
   10. References  . . . . . . . . . . . . . . . . . . . . . . . . .  67
     10.1.  Normative References . . . . . . . . . . . . . . . . . .  67
     10.2.  Informative References . . . . . . . . . . . . . . . . .  68
   Appendix A.  Vendor-Specific Alarm Types Example  . . . . . . . .  70
   Appendix B.  Alarm Inventory Example  . . . . . . . . . . . . . .  71
   Appendix C.  Alarm List Example . . . . . . . . . . . . . . . . .  71
   Appendix D.  Alarm Shelving Example . . . . . . . . . . . . . . .  73
   Appendix E.  X.733 Mapping Example  . . . . . . . . . . . . . . .  74
   Appendix F.  Relationship to Other Alarm Standards  . . . . . . .  74
     F.1.  Definition of "Alarm" . . . . . . . . . . . . . . . . . .  74
     F.2.  Data Model  . . . . . . . . . . . . . . . . . . . . . . .  76
       F.2.1.  X.733 . . . . . . . . . . . . . . . . . . . . . . . .  76
       F.2.2.  The Alarm MIB (RFC 3877)  . . . . . . . . . . . . . .  77
       F.2.3.  3GPP Alarm IRP  . . . . . . . . . . . . . . . . . . .  77
       F.2.4.  G.7710  . . . . . . . . . . . . . . . . . . . . . . .  78
        
   Appendix G.  Alarm-Usability Requirements . . . . . . . . . . . .  78
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  82
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  82
        
   Appendix G.  Alarm-Usability Requirements . . . . . . . . . . . .  78
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  82
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  82
        
1. Introduction
1. 介绍

This document defines a YANG module [RFC7950] for alarm management. The purpose is to define a standardized alarm interface for network devices that can be easily integrated into management applications. The model is also applicable as a northbound alarm interface in the management applications.

本文件定义了报警管理模块[RFC7950]。其目的是为网络设备定义一个标准化的报警接口,该接口可轻松集成到管理应用程序中。该模型也适用于管理应用程序中的北向报警接口。

Alarm monitoring is a fundamental part of monitoring the network. Raw alarms from devices do not always tell the status of the network services or necessarily point to the root cause. However, being able to feed alarms to the alarm-management application in a standardized format is a starting point for performing higher-level network assurance tasks.

报警监控是网络监控的基本组成部分。来自设备的原始警报并不总是告知网络服务的状态,也不一定指向根本原因。但是,能够以标准格式向报警管理应用程序提供报警是执行更高级别网络保障任务的起点。

The design of the module is based on experience from using and implementing available alarm standards from ITU [X.733], 3GPP [ALARMIRP], and ANSI [ISA182].

该模块的设计基于使用和实施来自ITU[X.733]、3GPP[ALARMIRP]和ANSI[ISA182]的可用报警标准的经验。

1.1. Terminology and Notation
1.1. 术语和符号

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“建议”、“不建议”、“可”和“可选”在所有大写字母出现时(如图所示)应按照BCP 14[RFC2119][RFC8174]所述进行解释。

The following terms are defined in [RFC7950]:

[RFC7950]中定义了以下术语:

o action

o 行动

o client

o 客户

o data tree

o 数据树

o server

o 服务器

The following terms are used within this document:

本文件中使用了以下术语:

Alarm (the general concept): An alarm signifies an undesirable state in a resource that requires corrective action.

报警(一般概念):报警表示资源中需要采取纠正措施的不良状态。

Fault: A fault is the underlying cause of an undesired behavior. There is no trivial one-to-one mapping between faults and alarms. One fault may result in several alarms in case the system lacks root-cause and correlation capabilities. An alarm might not have an underlying fault as a cause. For example, imagine a bad Mean Opinion Score (MOS) alarm from a Voice over IP (VOIP) probe and the cause being non-optimal QoS configuration.

故障:故障是导致意外行为的根本原因。故障和报警之间没有简单的一对一映射。如果系统缺乏根本原因和关联能力,一个故障可能会导致多个警报。警报可能没有潜在故障作为原因。例如,假设来自IP语音(VOIP)探测器的错误平均意见分数(MOS)警报,其原因是非最佳QoS配置。

Alarm Type: An alarm type identifies a possible unique alarm state for a resource. Alarm types are names to identify the state like "link-alarm", "jitter-violation", and "high-disk-utilization".

报警类型:报警类型标识资源可能的唯一报警状态。报警类型是标识状态的名称,如“链路报警”、“抖动冲突”和“高磁盘利用率”。

Resource: A fine-grained identification of the alarming resource, for example, an interface and a process.

资源:报警资源的细粒度标识,例如接口和进程。

Alarm Instance: The alarm state for a specific resource and alarm type, for example, ("GigabitEthernet0/15", "link-alarm"). An entry in the alarm list.

报警实例:特定资源和报警类型的报警状态,例如(“千兆以太网0/15”,“链路报警”)。报警列表中的条目。

Cleared Alarm: A cleared alarm is an alarm where the system considers the undesired state to be cleared. Operators cannot clear alarms; clearance is managed by the system. For example, a "linkUp" notification can be considered a clear condition for a "linkDown" state.

清除的报警:清除的报警是指系统认为非期望状态被清除的报警。操作员无法清除警报;清除由系统管理。例如,“linkUp”通知可被视为“linkDown”状态的明确条件。

Closed Alarm: Operators can close alarms irrespective of the alarm being cleared or not. A closed alarm indicates that the alarm does not need attention because either the corrective action has been taken or it can be ignored for other reasons.

关闭报警:无论报警是否被清除,操作员都可以关闭报警。关闭的报警表示报警不需要注意,因为已采取纠正措施,或者由于其他原因可以忽略该报警。

Alarm Inventory: A list of all possible alarm types on a system.

报警清单:系统上所有可能报警类型的列表。

Alarm Shelving: Blocking alarms according to specific criteria.

报警搁置:根据特定标准阻止报警。

Corrective Action: An action taken by an operator or automation routine in order to minimize the impact of the alarm or resolve the root cause.

纠正措施:操作员或自动化例行程序采取的措施,以尽量减少警报的影响或解决根本原因。

Management System: The alarm-management application that consumes the alarms, i.e., acts as a client.

管理系统:使用报警的报警管理应用程序,即充当客户端。

System: The system that implements this YANG module, i.e., acts as a server. This corresponds to a network device or a management application that provides a northbound alarm interface.

系统:实现此模块的系统,即充当服务器。这对应于提供北向报警接口的网络设备或管理应用程序。

Tree diagrams used in this document follow the notation defined in [RFC8340].

本文档中使用的树形图遵循[RFC8340]中定义的符号。

2. Objectives
2. 目标

The objectives for the design of the alarm data model are:

报警数据模型的设计目标是:

o Users find it simple to use. If a system supports this module, it shall be straightforward to integrate it into a YANG-based alarm manager.

o 用户发现它使用起来很简单。如果系统支持该模块,则可以直接将其集成到基于YANG的报警管理器中。

o Alarms are viewed as states on resources and not as discrete notifications.

o 报警被视为资源上的状态,而不是离散的通知。

o A precise definition of "alarm" is provided in order to exclude general events that should not be forwarded as alarm notifications.

o 提供了“报警”的精确定义,以排除不应作为报警通知转发的一般事件。

o Precise identification of alarm types and alarm instances is provided.

o 提供报警类型和报警实例的精确标识。

o A management system should be able to pull all available alarm types from a system, i.e., read the alarm inventory from a system. This makes it possible to prepare alarm operators with corresponding alarm instructions.

o 管理系统应能够从系统中提取所有可用的报警类型,即从系统中读取报警清单。这使得警报操作员可以准备相应的警报说明。

o Alarm-usability requirements are addressed; see Appendix G. While IETF and telecom standards have addressed alarms mostly from a protocol perspective, the process industry has published several relevant standards addressing requirements for a useful alarm interface; see [EEMUA] and [ISA182]. This document defines usability requirements as well as a YANG data model.

o 提出了警报可用性要求;参见附录G。虽然IETF和电信标准主要从协议角度解决了报警问题,但流程工业已发布了若干相关标准,解决了有用报警接口的要求;见[EEMUA]和[ISA182]。本文档定义了可用性需求以及数据模型。

o Mapping to [X.733], which is a requirement for some alarm systems, is achievable. Still, keep some of the X.733 concepts out of the core model in order to make the model small and easy to understand.

o 映射到[X.733],这是某些报警系统的要求,是可以实现的。尽管如此,还是要将一些X.733概念保留在核心模型之外,以使模型更小、更易于理解。

3. Alarm Data Model Concepts
3. 报警数据模型概念

This section defines the fundamental concepts behind the data model. This section is rooted in the works of Vallin et. al [ALARMSEM].

本节定义了数据模型背后的基本概念。本节以Vallin等人[ALARMSEM]的作品为基础。

3.1. Alarm Definition
3.1. 报警定义

An alarm signifies an undesirable state in a resource that requires corrective action.

报警表示需要采取纠正措施的资源中的不良状态。

There are two main things to remember from this definition:

从这个定义中,有两件事需要记住:

1. It focuses on leaving out events and logging information in general. Alarms should only be used for undesired states that require action.

1. 它通常侧重于省略事件和记录信息。警报应仅用于需要采取行动的意外状态。

2. It also focuses on alarms as a state on a resource, not the notifications that report the state changes.

2. 它还将报警作为资源的状态,而不是报告状态更改的通知。

See Appendix F for information on how this definition relates to other alarm standards.

有关此定义如何与其他报警标准相关的信息,请参见附录F。

3.2. Alarm Type
3.2. 报警类型

This document defines an alarm type with an alarm-type id and an alarm-type qualifier.

本文档使用报警类型id和报警类型限定符定义报警类型。

The alarm-type id is modeled as a YANG identity. With YANG identities, new alarm types can be defined in a distributed fashion. YANG identities are hierarchical, which means that a hierarchy of alarm types can be defined.

报警类型id被建模为一个标识。使用YANG标识,可以以分布式方式定义新的报警类型。YANG标识是分层的,这意味着可以定义报警类型的层次。

Standards and vendors should define their own alarm-type identities based on this definition.

标准和供应商应根据此定义定义自己的报警类型标识。

The use of YANG identities means that all possible alarms are identified at design time. This explicit declaration of alarm types makes it easier to allow for alarm qualification reviews and preparation of alarm actions and documentation.

使用YANG标识意味着在设计时识别所有可能的报警。报警类型的明确声明使报警资格审查和报警操作和文件准备变得更容易。

There are occasions where the alarm types are not known at design time. An example is a system with digital inputs that allows users to connect detectors, such as smoke detectors, to the inputs. In this case, it is a configuration action that says certain connectors are fire alarms, for example.

有些情况下,设计时不知道报警类型。例如,具有数字输入的系统允许用户将探测器(如烟雾探测器)连接到输入。在这种情况下,它是一个配置动作,表示某些连接器是火灾报警器,例如。

In order to allow for dynamic addition of alarm types, the alarm data model permits further qualification of the identity-based alarm type using a string. A potential drawback of this is that there is a significant risk that alarm operators will receive alarm types as a surprise. They do not know how to resolve the problem since a defined alarm procedure does not necessarily exist. To avoid this risk, the system MUST publish all possible alarm types in the alarm inventory; see Section 4.2.

为了允许动态添加报警类型,报警数据模型允许使用字符串进一步限定基于身份的报警类型。这样做的一个潜在缺点是,警报操作员可能会意外收到警报类型。他们不知道如何解决问题,因为定义的报警程序不一定存在。为避免此风险,系统必须在报警清单中发布所有可能的报警类型;见第4.2节。

A vendor or standards organization can define their own alarm-type hierarchy. The example below shows a hierarchy based on X.733 event types:

供应商或标准组织可以定义自己的报警类型层次结构。以下示例显示了基于X.733事件类型的层次结构:

     import ietf-alarms {
       prefix al;
     }
     identity vendor-alarms {
       base al:alarm-type;
     }
     identity communications-alarm {
       base vendor-alarms;
     }
     identity link-alarm {
       base communications-alarm;
     }
        
     import ietf-alarms {
       prefix al;
     }
     identity vendor-alarms {
       base al:alarm-type;
     }
     identity communications-alarm {
       base vendor-alarms;
     }
     identity link-alarm {
       base communications-alarm;
     }
        

Alarm types can be abstract. An abstract alarm type is used as a base for defining hierarchical alarm types. Concrete alarm types are used for alarm states and appear in the alarm inventory. There are two kinds of concrete alarm types:

报警类型可以是抽象的。抽象报警类型用作定义分层报警类型的基础。具体报警类型用于报警状态,并显示在报警清单中。具体的报警类型有两种:

1. The last subordinate identity in the "alarm-type-id" hierarchy is concrete, for example, "alarm-identity.environmental-alarm.smoke". In this example, "alarm-identity" and "environmental-alarm" are abstract YANG identities, whereas "smoke" is a concrete YANG identity.

1. “报警类型id”层次结构中的最后一个下级标识是具体的,例如,“报警标识.环境报警.烟雾”。在本例中,“报警标识”和“环境报警”是抽象的阳标识,“烟雾”是具体的阳标识。

2. The YANG identity hierarchy is abstract, and the concrete alarm type is defined by the dynamic alarm-qualifier string, for example, "alarm-identity.environmental-alarm.external-detector" with alarm-type-qualifier "smoke".

2. YANG标识层次结构是抽象的,具体的报警类型由动态报警限定符字符串定义,例如带有报警类型限定符“smoke”的“alarm identity.Environment alarm.external detector”。

For example:

例如:

     // Alternative 1: concrete alarm type identity
     import ietf-alarms {
       prefix al;
     }
     identity environmental-alarm {
       base al:alarm-type;
       description "Abstract alarm type";
     }
     identity smoke {
       base environmental-alarm;
       description "Concrete alarm type";
     }
        
     // Alternative 1: concrete alarm type identity
     import ietf-alarms {
       prefix al;
     }
     identity environmental-alarm {
       base al:alarm-type;
       description "Abstract alarm type";
     }
     identity smoke {
       base environmental-alarm;
       description "Concrete alarm type";
     }
        
     // Alternative 2: concrete alarm type qualifier
     import ietf-alarms {
       prefix al;
     }
     identity environmental-alarm {
       base al:alarm-type;
       description "Abstract alarm type";
     }
     identity external-detector {
       base environmental-alarm;
       description
         "Abstract alarm type; a runtime configuration
          procedure sets the type of alarm detected.  This will
          be reported in the alarm-type-qualifier.";
     }
        
     // Alternative 2: concrete alarm type qualifier
     import ietf-alarms {
       prefix al;
     }
     identity environmental-alarm {
       base al:alarm-type;
       description "Abstract alarm type";
     }
     identity external-detector {
       base environmental-alarm;
       description
         "Abstract alarm type; a runtime configuration
          procedure sets the type of alarm detected.  This will
          be reported in the alarm-type-qualifier.";
     }
        

A server SHOULD strive to minimize the number of dynamically defined alarm types.

服务器应尽量减少动态定义的报警类型的数量。

3.3. Identifying the Alarming Resource
3.3. 识别报警资源

It is of vital importance to be able to refer to the alarming resource. This reference must be as fine-grained as possible. If the alarming resource exists in the data tree, an instance-identifier MUST be used with the full path to the object.

能够参考报警资源是至关重要的。此引用必须尽可能细粒度。如果报警资源存在于数据树中,则实例标识符必须与对象的完整路径一起使用。

When the module is used in a controller/orchestrator/manager, the original device resource identification can be modified to include the device in the path. The details depend on how devices are identified and are out of scope for this specification.

在控制器/编排器/管理器中使用模块时,可以修改原始设备资源标识,以将设备包括在路径中。详细信息取决于如何识别设备,不在本规范的范围内。

Example:

例子:

The original device alarm might identify the resource as "/dev:interfaces/dev:interface[dev:name='FastEthernet1/0']".

原始设备警报可能将资源标识为“/dev:interfaces/dev:interface[dev:name='FastEthernet1/0']”。

      The resource identification in the manager could look something
      like: "/mgr:devices/mgr:device[mgr:name='xyz123']/dev:interfaces/
      dev:interface[dev:name='FastEthernet1/0']"
        
      The resource identification in the manager could look something
      like: "/mgr:devices/mgr:device[mgr:name='xyz123']/dev:interfaces/
      dev:interface[dev:name='FastEthernet1/0']"
        

This module also allows for alternate naming of the alarming resource if it is not available in the data tree.

如果报警资源在数据树中不可用,此模块还允许对其进行交替命名。

3.4. Identifying Alarm Instances
3.4. 识别报警实例

A primary goal of the alarm data model is to remove any ambiguity in how alarm notifications are mapped to an update of an alarm instance. The X.733 [X.733] and 3GPP [ALARMIRP] documents were not clear on this point. This alarm data model states that the tuple (resource, alarm-type identifier, and alarm-type qualifier) corresponds to a single alarm instance. This means that alarm notifications for the same resource and same alarm type are matched to update the same alarm instance. These three leafs are therefore used as the key in the alarm list:

报警数据模型的主要目标是消除报警通知如何映射到报警实例更新的任何模糊性。X.733[X.733]和3GPP[ALARMIRP]文档在这一点上并不清楚。此报警数据模型表示元组(资源、报警类型标识符和报警类型限定符)对应于单个报警实例。这意味着相同资源和相同报警类型的报警通知将匹配以更新相同的报警实例。因此,这三个叶用作报警列表中的键:

     list alarm {
       key "resource alarm-type-id alarm-type-qualifier";
       ...
     }
        
     list alarm {
       key "resource alarm-type-id alarm-type-qualifier";
       ...
     }
        
3.5. Alarm Lifecycle
3.5. 报警生命周期

The alarm model clearly separates the resource alarm lifecycle from the operator and administrative lifecycles of an alarm.

警报模型将资源警报生命周期与警报的操作员和管理生命周期明确分开。

o resource alarm lifecycle: the alarm instrumentation that controls alarm raise, clearance, and severity changes.

o 资源报警生命周期:控制报警升高、清除和严重性更改的报警仪表。

o operator alarm lifecycle: operators acting upon alarms with actions like acknowledging and closing. Closing an alarm implies that the operator considers the corrective action performed. Operators can also shelve (block/filter) alarms in order to avoid nuisance alarms.

o 操作员报警生命周期:操作员对报警采取确认和关闭等行动。关闭警报意味着操作员考虑已执行的纠正措施。操作员还可以搁置(阻塞/过滤)警报,以避免干扰警报。

o administrative alarm lifecycle: purging (deleting) unwanted alarms and compressing the alarm status-change list. This module exposes operations to manage the administrative lifecycle. The server may also perform these operations based on other policies, but how that is done is out of scope for this document.

o 管理报警生命周期:清除(删除)不需要的报警并压缩报警状态更改列表。此模块公开管理管理生命周期的操作。服务器也可以基于其他策略执行这些操作,但是如何执行这些操作超出了本文档的范围。

A server SHOULD describe how long it retains cleared/closed alarms until they are manually purged or if it has an automatic removal policy. How this is done is outside the scope of this document.

服务器应说明在手动清除/关闭报警之前,它保留清除/关闭报警的时间,或者它是否具有自动删除策略。如何做到这一点超出了本文件的范围。

3.5.1. Resource Alarm Lifecycle
3.5.1. 资源警报生命周期

From a resource perspective, an alarm can, for example, have the following lifecycle: raise, change severity, change severity, clear, being raised again, etc. All of these status changes can have different alarm texts generated by the instrumentation. Two important things to note:

例如,从资源的角度来看,警报可以具有以下生命周期:升高、更改严重性、更改严重性、清除、再次升高等。所有这些状态更改都可以由检测生成不同的警报文本。需要注意的两件重要事情:

1. Alarms are not deleted when they are cleared. Deleting alarms is an administrative process. The "ietf-alarms" YANG module defines an action "purge-alarms" that deletes alarms.

1. 警报清除后不会被删除。删除报警是一个管理过程。“ietf报警”模块定义了删除报警的“清除报警”操作。

2. Alarms are not cleared by operators; only the underlying instrumentation can clear an alarm. Operators can close alarms.

2. 操作员未清除警报;只有底层仪器才能清除警报。操作员可以关闭警报。

The YANG tree representation below illustrates the resource-oriented lifecycle:

下面的杨树表示说明了面向资源的生命周期:

     +--ro alarm* [resource alarm-type-id alarm-type-qualifier]
        ...
        +--ro is-cleared                 boolean
        +--ro last-raised                yang:date-and-time
        +--ro last-changed               yang:date-and-time
        +--ro perceived-severity         severity
        +--ro alarm-text                 alarm-text
        +--ro status-change* [time] {alarm-history}?
           +--ro time                    yang:date-and-time
           +--ro perceived-severity      severity-with-clear
           +--ro alarm-text              alarm-text
        
     +--ro alarm* [resource alarm-type-id alarm-type-qualifier]
        ...
        +--ro is-cleared                 boolean
        +--ro last-raised                yang:date-and-time
        +--ro last-changed               yang:date-and-time
        +--ro perceived-severity         severity
        +--ro alarm-text                 alarm-text
        +--ro status-change* [time] {alarm-history}?
           +--ro time                    yang:date-and-time
           +--ro perceived-severity      severity-with-clear
           +--ro alarm-text              alarm-text
        

For every status change from the resource perspective, a row is added to the "status-change" list, if the server implements the feature "alarm-history". The feature "alarm-history" is optional to implement, since keeping the alarm history may have an impact on the server's memory resources.

如果服务器实现了“报警历史记录”功能,则从资源角度来看,对于每个状态更改,都会在“状态更改”列表中添加一行。“报警历史记录”功能是可选的,因为保留报警历史记录可能会影响服务器的内存资源。

The last status values are also represented as leafs for the alarm. Note well that the alarm severity does not include "cleared"; alarm clearance is a boolean flag.

最后的状态值也表示为报警的LEAF。请注意,警报严重性不包括“已清除”;报警清除是一个布尔标志。

Therefore, an alarm can look like this: (("GigabitEthernet0/25", "link-alarm",""), false, 2018-04-08T08:20:10.00Z, 2018-04-08T08:20:10.00Z, major, "Interface GigabitEthernet0/25 down").

因此,警报可以如下所示:((“千兆以太网0/25”,“链路警报”,false,2018-04-08T08:20:10.00Z,2018-04-08T08:20:10.00Z,主,“接口千兆以太网0/25关闭”)。

3.5.2. Operator Alarm Lifecycle
3.5.2. 操作员报警生命周期

Operators can act upon alarms using the set-operator-state action:

操作员可使用设置操作员状态操作对警报进行操作:

     +--ro alarm* [resource alarm-type-id alarm-type-qualifier]
        ...
        +--ro operator-state-change* [time] {operator-actions}?
        |  +--ro time        yang:date-and-time
        |  +--ro operator    string
        |  +--ro state       operator-state
        |  +--ro text?       string
        +---x set-operator-state {operator-actions}?
           +---w input
              +---w state    writable-operator-state
              +---w text?    string
        
     +--ro alarm* [resource alarm-type-id alarm-type-qualifier]
        ...
        +--ro operator-state-change* [time] {operator-actions}?
        |  +--ro time        yang:date-and-time
        |  +--ro operator    string
        |  +--ro state       operator-state
        |  +--ro text?       string
        +---x set-operator-state {operator-actions}?
           +---w input
              +---w state    writable-operator-state
              +---w text?    string
        

The operator state for an alarm can be "none", "ack", "shelved", and "closed". Alarm deletion (using the action "purge-alarms") can use this state as a criterion. For example, a closed alarm is an alarm where the operator has performed any required corrective actions. Closed alarms are good candidates for being purged.

报警的操作员状态可以是“无”、“确认”、“搁置”和“关闭”。警报删除(使用“清除警报”操作)可将此状态用作标准。例如,关闭报警是指操作员已执行任何所需纠正措施的报警。关闭的报警很可能被清除。

3.5.3. Administrative Alarm Lifecycle
3.5.3. 管理报警生命周期

Deleting alarms from the alarm list is considered an administrative action. This is supported by the "purge-alarms" action. The "purge-alarms" action takes a filter as input. The filter selects alarms based on the operator and resource alarm lifecycle such as "all closed cleared alarms older than a time specification". The server may also perform these operations based on other policies, but how that is done is out of scope for this document.

从报警列表中删除报警被视为管理操作。这由“清除警报”操作支持。“清除警报”操作将过滤器作为输入。该过滤器根据操作员和资源报警生命周期选择报警,例如“所有已关闭且已清除且早于时间规范的报警”。服务器也可以基于其他策略执行这些操作,但是如何执行这些操作超出了本文档的范围。

Purged alarms are removed from the alarm list. Note well that if the alarm resource state changes after a purge, the alarm will reappear in the alarm list.

清除的报警将从报警列表中删除。请注意,如果清除后报警资源状态发生变化,报警将重新出现在报警列表中。

Alarms can be compressed. Compressing an alarm deletes all entries in the alarm's "status-change" list except for the last status change. A client can perform this using the "compress-alarms" action. The server may also perform these operations based on other policies, but how that is done is out of scope for this document.

警报可以被压缩。压缩报警将删除报警“状态更改”列表中除上次状态更改外的所有条目。客户端可以使用“压缩报警”操作执行此操作。服务器也可以基于其他策略执行这些操作,但是如何执行这些操作超出了本文档的范围。

3.6. Root Cause, Impacted Resources, and Related Alarms
3.6. 根本原因、受影响的资源和相关警报

The alarm data model does not mandate any requirements for the system to support alarm correlation or root-cause and service-impact analysis. However, if such features are supported, this section describes how the results of such analysis are represented in the

报警数据模型不要求系统支持报警关联或根本原因和服务影响分析。但是,如果支持这些功能,本节将介绍如何在

data model. These parts of the model are optional. The module supports three scenarios:

数据模型。模型的这些部分是可选的。该模块支持三种场景:

Root-cause analysis: An alarm can indicate candidate root-cause resources, for example, a database issue alarm referring to a full-disk partition.

根本原因分析:警报可以指示候选根本原因资源,例如,数据库问题警报指的是完整的磁盘分区。

Service-impact analysis: An alarm can refer to potential impacted resources, for example, an interface alarm referring to impacted network services.

服务影响分析:警报可以指潜在的受影响资源,例如,接口警报指受影响的网络服务。

Alarm correlation: Dependencies between alarms; several alarms can be grouped as relating to each other, for example, a streaming media alarm relating to a high-jitter alarm.

报警关联:报警之间的依赖关系;可以将多个报警分组为彼此相关,例如,与高抖动报警相关的流媒体报警。

Different systems have varying degrees of alarm correlation and analysis capabilities, and the intent of the alarm data model is to enable any capability, including none.

不同的系统具有不同程度的报警关联和分析功能,报警数据模型的目的是启用任何功能,包括无功能。

The general principle of this alarm data model is to limit the amount of alarms. In many cases, several resources are affected for a given underlying problem. A full disk will of course impact databases and applications as well. The recommendation is to have a single alarm for the underlying problem and list the affected resources in the alarm rather than having separate alarms for each resource.

此报警数据模型的一般原则是限制报警量。在许多情况下,给定的潜在问题会影响多个资源。一个完整的磁盘当然也会影响数据库和应用程序。建议为潜在问题设置一个警报,并在警报中列出受影响的资源,而不是为每个资源设置单独的警报。

The alarm has one leaf-list to identify a possible "impacted-resource" and a leaf-list to identify a possible "root-cause-resource". These serve as hints only. It is up to the client application to use this information to present the overall status. Using the disk-full example, a good alarm would be to use the hard-disk partition as the alarming resource and add the database and applications into the "impacted-resource" leaf-list.

报警有一个叶列表,用于识别可能的“受影响资源”,还有一个叶列表,用于识别可能的“根本原因资源”。这些只是提示。由客户端应用程序使用此信息来表示总体状态。使用磁盘已满示例,一个好的警报是使用硬盘分区作为警报资源,并将数据库和应用程序添加到“受影响的资源”叶列表中。

A system should always strive to identify the resource that can be acted upon as the "resource" leaf. The "impacted-resource" leaf-list shall be used to identify any side effects of the alarm. The impacted resources cannot be acted upon to fix the problem. The disk full example above illustrates the principle; you cannot fix the underlying issue by database operations. However, you need to pay attention to the database to perform any operations that limit the impact of the problem.

系统应始终努力识别可作为“资源”叶的资源。“受影响资源”叶列表应用于识别警报的任何副作用。无法对受影响的资源采取行动来解决问题。上面的磁盘完整示例说明了该原理;您无法通过数据库操作修复基础问题。但是,您需要注意数据库以执行任何限制问题影响的操作。

On some occasions, the system might not be capable of detecting the root cause, the resource that can be acted upon. The instrumentation in this case only monitors the side effect and raises an alarm to indicate a situation requiring attention. The instrumentation still might identify possible candidates for the root-cause resource. In

在某些情况下,系统可能无法检测根本原因,即可以对其采取行动的资源。在这种情况下,仪器仅监测副作用并发出警报,以指示需要注意的情况。检测仍然可能确定根本原因资源的可能候选对象。在里面

this case, the "root-cause-resource" leaf-list can be used to indicate the candidate root-cause resources. An example of this kind of alarm might be an active test tool that detects a Service Level Agreement (SLA) violation on a VPN connection and identifies the devices along the chain as candidate root causes.

在这种情况下,“根本原因资源”叶列表可用于指示候选根本原因资源。此类警报的一个示例可能是一个主动测试工具,该工具检测VPN连接上的服务级别协议(SLA)冲突,并将链上的设备识别为候选根本原因。

The alarm data model also supports a way to associate different alarms with each other using the "related-alarm" list. This list enables the server to inform the client that certain alarms are related to other alarms.

报警数据模型还支持使用“相关报警”列表将不同报警相互关联的方法。此列表使服务器能够通知客户端某些报警与其他报警相关。

Note well that this module does not prescribe any dependencies or preference between the above alarm correlation mechanisms. Different systems have different capabilities, and the above described mechanisms are available to support the instrumentation features.

请注意,该模块没有规定上述报警关联机制之间的任何依赖关系或偏好。不同的系统具有不同的功能,上述机制可用于支持仪器功能。

3.7. Alarm Shelving
3.7. 报警架

Alarm shelving is an important function in order for alarm-management applications and operators to stop superfluous alarms. A shelved alarm implies that any alarms fulfilling these criteria are ignored (blocked/filtered). Shelved alarms appear in a dedicated shelved-alarm list; thus, they can be filtered out so that the main alarm list only contains entries of interest. Shelved alarms do not generate notifications, but the shelved-alarm list is updated with any alarm-state changes.

报警搁置是报警管理应用程序和操作员停止多余报警的一项重要功能。搁置报警意味着忽略(阻止/过滤)满足这些条件的任何报警。已搁置警报显示在专用的已搁置警报列表中;因此,可以将它们过滤掉,以便主报警列表仅包含感兴趣的条目。搁置的报警不会生成通知,但搁置的报警列表会随报警状态的任何更改而更新。

Alarm shelving is optional to implement, since matching alarms against shelf criteria may have an impact on the server's processing resources.

报警搁置是可选的,因为根据搁置条件匹配报警可能会影响服务器的处理资源。

3.8. Alarm Profiles
3.8. 报警配置文件

Alarm profiles are used to configure further information to an alarm type. This module supports configuring severity levels overriding the system-default levels. This corresponds to the Alarm Severity Assignment Profile (ASAP) functionality in M.3100 [M.3100] and M.3160 [M.3160]. Other standard or enterprise modules can augment this list with further alarm-type information.

报警配置文件用于配置报警类型的进一步信息。此模块支持配置严重性级别以覆盖系统默认级别。这与M.3100[M.3100]和M.3160[M.3160]中的报警严重性分配配置文件(ASAP)功能相对应。其他标准或企业模块可以使用更多报警类型信息来扩充此列表。

4. Alarm Data Model
4. 报警数据模型

The fundamental parts of the data model are the "alarm-list" with associated notifications and the "alarm-inventory" list of all possible alarm types. These MUST be implemented by a system. The rest of the data model is made conditional with these YANG features: "operator-actions", "alarm-shelving", "alarm-history", "alarm-summary", "alarm-profile", and "severity-assignment".

数据模型的基本部分是带有相关通知的“报警列表”和所有可能报警类型的“报警清单”列表。这些必须通过一个系统来实现。数据模型的其余部分具有以下特征:“操作员操作”、“报警搁置”、“报警历史”、“报警摘要”、“报警配置文件”和“严重性分配”。

The data model has the following overall structure:

数据模型具有以下总体结构:

     +--rw control
     |  +--rw max-alarm-status-changes?   union
     |  +--rw notify-status-changes?      enumeration
     |  +--rw notify-severity-level?      severity
     |  +--rw alarm-shelving {alarm-shelving}?
     |        ...
     +--ro alarm-inventory
     |  +--ro alarm-type* [alarm-type-id alarm-type-qualifier]
     |        ...
     +--ro summary {alarm-summary}?
     |  +--ro alarm-summary* [severity]
     |  |     ...
     |  +--ro shelves-active?   empty {alarm-shelving}?
     +--ro alarm-list
     |  +--ro number-of-alarms?   yang:gauge32
     |  +--ro last-changed?       yang:date-and-time
     |  +--ro alarm* [resource alarm-type-id alarm-type-qualifier]
     |  |     ...
     |  +---x purge-alarms
     |  |     ...
     |  +---x compress-alarms {alarm-history}?
     |        ...
     +--ro shelved-alarms {alarm-shelving}?
     |  +--ro number-of-shelved-alarms?      yang:gauge32
     |  +--ro shelved-alarms-last-changed?   yang:date-and-time
     |  +--ro shelved-alarm*
     |  |       [resource alarm-type-id alarm-type-qualifier]
     |  |     ...
     |  +---x purge-shelved-alarms
     |  |     ...
     |  +---x compress-shelved-alarms {alarm-history}?
     |        ...
     +--rw alarm-profile*
             [alarm-type-id alarm-type-qualifier-match resource]
             {alarm-profile}?
        +--rw alarm-type-id                        alarm-type-id
        +--rw alarm-type-qualifier-match           string
        +--rw resource                             resource-match
        +--rw description                          string
        +--rw alarm-severity-assignment-profile
                {severity-assignment}?
              ...
        
     +--rw control
     |  +--rw max-alarm-status-changes?   union
     |  +--rw notify-status-changes?      enumeration
     |  +--rw notify-severity-level?      severity
     |  +--rw alarm-shelving {alarm-shelving}?
     |        ...
     +--ro alarm-inventory
     |  +--ro alarm-type* [alarm-type-id alarm-type-qualifier]
     |        ...
     +--ro summary {alarm-summary}?
     |  +--ro alarm-summary* [severity]
     |  |     ...
     |  +--ro shelves-active?   empty {alarm-shelving}?
     +--ro alarm-list
     |  +--ro number-of-alarms?   yang:gauge32
     |  +--ro last-changed?       yang:date-and-time
     |  +--ro alarm* [resource alarm-type-id alarm-type-qualifier]
     |  |     ...
     |  +---x purge-alarms
     |  |     ...
     |  +---x compress-alarms {alarm-history}?
     |        ...
     +--ro shelved-alarms {alarm-shelving}?
     |  +--ro number-of-shelved-alarms?      yang:gauge32
     |  +--ro shelved-alarms-last-changed?   yang:date-and-time
     |  +--ro shelved-alarm*
     |  |       [resource alarm-type-id alarm-type-qualifier]
     |  |     ...
     |  +---x purge-shelved-alarms
     |  |     ...
     |  +---x compress-shelved-alarms {alarm-history}?
     |        ...
     +--rw alarm-profile*
             [alarm-type-id alarm-type-qualifier-match resource]
             {alarm-profile}?
        +--rw alarm-type-id                        alarm-type-id
        +--rw alarm-type-qualifier-match           string
        +--rw resource                             resource-match
        +--rw description                          string
        +--rw alarm-severity-assignment-profile
                {severity-assignment}?
              ...
        
4.1. Alarm Control
4.1. 报警控制

The "/alarms/control/notify-status-changes" leaf controls whether notifications are sent for all state changes, only raise and clear, or only notifications more severe than a configured level. This feature, in combination with alarm shelving, corresponds to the ITU Alarm Report Control functionality; see Appendix F.2.4.

“/alarms/control/notify status changes”(报警/控制/通知状态更改)叶控制是否发送所有状态更改的通知、是否仅发送raise和clear通知,或者是否仅发送比配置级别更严重的通知。此功能与报警搁置相结合,对应于ITU报警报告控制功能;见附录F.2.4。

Every alarm has a list of status changes. The length of this list is controlled by "/alarms/control/max-alarm-status-changes". When the list is full and a new entry created, the oldest entry is removed.

每个警报都有一个状态更改列表。此列表的长度由“/报警/控制/最大报警状态更改”控制。当列表已满且创建了新条目时,最早的条目将被删除。

4.1.1. Alarm Shelving
4.1.1. 报警架

The shelving control tree is shown below:

搁置控制树如下图所示:

     +--rw control
        +--rw alarm-shelving {alarm-shelving}?
           +--rw shelf* [name]
              +--rw name           string
              +--rw resource*      resource-match
              +--rw alarm-type*
              |       [alarm-type-id alarm-type-qualifier-match]
              |  +--rw alarm-type-id                 alarm-type-id
              |  +--rw alarm-type-qualifier-match    string
              +--rw description?   string
        
     +--rw control
        +--rw alarm-shelving {alarm-shelving}?
           +--rw shelf* [name]
              +--rw name           string
              +--rw resource*      resource-match
              +--rw alarm-type*
              |       [alarm-type-id alarm-type-qualifier-match]
              |  +--rw alarm-type-id                 alarm-type-id
              |  +--rw alarm-type-qualifier-match    string
              +--rw description?   string
        

Shelved alarms are shown in a dedicated shelved-alarm list. Matching alarms MUST appear in the "/alarms/shelved-alarms/shelved-alarm" list, and non-matching alarms MUST appear in the "/alarms/alarm-list/ alarm" list. The server does not send any notifications for shelved alarms.

搁置警报显示在专用的搁置警报列表中。匹配报警必须出现在“/报警/搁置报警/搁置报警”列表中,不匹配报警必须出现在“/报警/报警列表/报警”列表中。服务器不发送任何已搁置警报的通知。

Shelving and unshelving can only be performed by editing the shelf configuration. It cannot be performed on individual alarms. The server will add an operator state indicating that the alarm was shelved/unshelved.

搁置和取消搁置只能通过编辑搁置配置来执行。不能对单个报警执行此操作。服务器将添加一个操作员状态,指示报警已搁置/取消搁置。

A leaf, "/alarms/summary/shelves-active", in the alarm summary indicates if there are shelved alarms.

报警摘要中的叶子“/alarms/summary/Shelfs active”指示是否存在搁置的报警。

A system can select not to support the shelving feature.

系统可以选择不支持搁置功能。

4.2. Alarm Inventory
4.2. 报警清单

The alarm inventory represents all possible alarm types that may occur in the system. A management system may use this to build alarm procedures. The alarm inventory is relevant for the following reasons:

报警清单表示系统中可能发生的所有可能的报警类型。管理系统可使用此功能建立报警程序。报警清单与以下原因有关:

The system might not implement all defined alarm type identities, and some alarm identities are abstract.

系统可能不会实现所有定义的报警类型标识,并且某些报警标识是抽象的。

The system has configured dynamic alarm types using the alarm qualifier. The inventory makes it possible for the management system to discover these.

系统已使用报警限定符配置了动态报警类型。库存使管理系统能够发现这些信息。

Note that the mechanism whereby dynamic alarm types are added using the alarm-type qualifier MUST populate this list.

请注意,使用报警类型限定符添加动态报警类型的机制必须填充此列表。

The optional leaf-list "resource" in the alarm inventory enables the system to publish for which resources a given alarm type may appear.

报警清单中的可选叶列表“资源”使系统能够发布给定报警类型可能出现的资源。

A server MUST implement the alarm inventory in order to enable controlled alarm procedures in the client.

服务器必须实现报警清单,以便在客户端中启用受控报警过程。

A server implementer may want to document the alarm inventory for offline processing by clients. The file format defined in [YANG-INSTANCE] can be used for this purpose.

服务器实现者可能希望记录报警清单,以便客户端进行脱机处理。[YANG-INSTANCE]中定义的文件格式可用于此目的。

The alarm inventory tree is shown below:

报警资源清册树如下所示:

     +--ro alarm-inventory
        +--ro alarm-type* [alarm-type-id alarm-type-qualifier]
           +--ro alarm-type-id           alarm-type-id
           +--ro alarm-type-qualifier    alarm-type-qualifier
           +--ro resource*               resource-match
           +--ro will-clear              boolean
           +--ro severity-level*         severity
           +--ro description             string
        
     +--ro alarm-inventory
        +--ro alarm-type* [alarm-type-id alarm-type-qualifier]
           +--ro alarm-type-id           alarm-type-id
           +--ro alarm-type-qualifier    alarm-type-qualifier
           +--ro resource*               resource-match
           +--ro will-clear              boolean
           +--ro severity-level*         severity
           +--ro description             string
        
4.3. Alarm Summary
4.3. 警报摘要

The alarm summary list summarizes alarms per severity: how many cleared, cleared and closed, and closed. It also gives an indication if there are shelved alarms.

报警摘要列表按严重性汇总报警:清除、清除和关闭以及关闭的数量。它还指示是否存在搁置警报。

The alarm summary tree is shown below:

报警摘要树如下所示:

     +--ro summary {alarm-summary}?
        +--ro alarm-summary* [severity]
        |  +--ro severity                  severity
        |  +--ro total?                    yang:gauge32
        |  +--ro not-cleared?              yang:gauge32
        |  +--ro cleared?                  yang:gauge32
        |  +--ro cleared-not-closed?       yang:gauge32
        |  |       {operator-actions}?
        |  +--ro cleared-closed?           yang:gauge32
        |  |       {operator-actions}?
        |  +--ro not-cleared-closed?       yang:gauge32
        |  |       {operator-actions}?
        |  +--ro not-cleared-not-closed?   yang:gauge32
        |          {operator-actions}?
        +--ro shelves-active?   empty {alarm-shelving}?
        
     +--ro summary {alarm-summary}?
        +--ro alarm-summary* [severity]
        |  +--ro severity                  severity
        |  +--ro total?                    yang:gauge32
        |  +--ro not-cleared?              yang:gauge32
        |  +--ro cleared?                  yang:gauge32
        |  +--ro cleared-not-closed?       yang:gauge32
        |  |       {operator-actions}?
        |  +--ro cleared-closed?           yang:gauge32
        |  |       {operator-actions}?
        |  +--ro not-cleared-closed?       yang:gauge32
        |  |       {operator-actions}?
        |  +--ro not-cleared-not-closed?   yang:gauge32
        |          {operator-actions}?
        +--ro shelves-active?   empty {alarm-shelving}?
        
4.4. The Alarm List
4.4. 警报列表

The alarm list, "/alarms/alarm-list", is a function from the tuple (resource, alarm type, alarm-type qualifier) to the current composite alarm state. The composite state includes states for the resource alarm lifecycle such as severity, clearance flag, and operator states such as acknowledged. This means that for a given resource and alarm type, the alarm list shows the current states of the alarm such as acknowledged and cleared.

报警列表“/alarms/alarm list”是从元组(资源、报警类型、报警类型限定符)到当前复合报警状态的函数。复合状态包括资源警报生命周期的状态(如严重性、清除标志)和操作员状态(如已确认)。这意味着对于给定的资源和报警类型,报警列表显示报警的当前状态,如已确认和已清除。

   +--ro alarm-list
      +--ro number-of-alarms?   yang:gauge32
      +--ro last-changed?       yang:date-and-time
      +--ro alarm* [resource alarm-type-id alarm-type-qualifier]
      |  +--ro resource                 resource
      |  +--ro alarm-type-id            alarm-type-id
      |  +--ro alarm-type-qualifier     alarm-type-qualifier
      |  +--ro alt-resource*            resource
      |  +--ro related-alarm*
      |  |       [resource alarm-type-id alarm-type-qualifier]
      |  |       {alarm-correlation}?
      |  |  +--ro resource
      |  |  |       -> /alarms/alarm-list/alarm/resource
      |  |  +--ro alarm-type-id           leafref
      |  |  +--ro alarm-type-qualifier    leafref
      |  +--ro impacted-resource*       resource
      |  |       {service-impact-analysis}?
      |  +--ro root-cause-resource*     resource
      |  |       {root-cause-analysis}?
      |  +--ro time-created             yang:date-and-time
        
   +--ro alarm-list
      +--ro number-of-alarms?   yang:gauge32
      +--ro last-changed?       yang:date-and-time
      +--ro alarm* [resource alarm-type-id alarm-type-qualifier]
      |  +--ro resource                 resource
      |  +--ro alarm-type-id            alarm-type-id
      |  +--ro alarm-type-qualifier     alarm-type-qualifier
      |  +--ro alt-resource*            resource
      |  +--ro related-alarm*
      |  |       [resource alarm-type-id alarm-type-qualifier]
      |  |       {alarm-correlation}?
      |  |  +--ro resource
      |  |  |       -> /alarms/alarm-list/alarm/resource
      |  |  +--ro alarm-type-id           leafref
      |  |  +--ro alarm-type-qualifier    leafref
      |  +--ro impacted-resource*       resource
      |  |       {service-impact-analysis}?
      |  +--ro root-cause-resource*     resource
      |  |       {root-cause-analysis}?
      |  +--ro time-created             yang:date-and-time
        
      |  +--ro is-cleared               boolean
      |  +--ro last-raised              yang:date-and-time
      |  +--ro last-changed             yang:date-and-time
      |  +--ro perceived-severity       severity
      |  +--ro alarm-text               alarm-text
      |  +--ro status-change* [time] {alarm-history}?
      |  |  +--ro time                  yang:date-and-time
      |  |  +--ro perceived-severity    severity-with-clear
      |  |  +--ro alarm-text            alarm-text
      |  +--ro operator-state-change* [time] {operator-actions}?
      |  |  +--ro time        yang:date-and-time
      |  |  +--ro operator    string
      |  |  +--ro state       operator-state
      |  |  +--ro text?       string
      |  +---x set-operator-state {operator-actions}?
      |  |  +---w input
      |  |     +---w state    writable-operator-state
      |  |     +---w text?    string
      |  +---n operator-action {operator-actions}?
      |     +-- time        yang:date-and-time
      |     +-- operator    string
      |     +-- state       operator-state
      |     +-- text?       string
      +---x purge-alarms
      |  +---w input
      |  |  +---w alarm-clearance-status    enumeration
      |  |  +---w older-than!
      |  |  |  +---w (age-spec)?
      |  |  |     +--:(seconds)
      |  |  |     |  +---w seconds?   uint16
      |  |  |     +--:(minutes)
      |  |  |     |  +---w minutes?   uint16
      |  |  |     +--:(hours)
      |  |  |     |  +---w hours?     uint16
      |  |  |     +--:(days)
      |  |  |     |  +---w days?      uint16
      |  |  |     +--:(weeks)
      |  |  |        +---w weeks?     uint16
      |  |  +---w severity!
      |  |  |  +---w (sev-spec)?
      |  |  |     +--:(below)
      |  |  |     |  +---w below?   severity
      |  |  |     +--:(is)
      |  |  |     |  +---w is?      severity
      |  |  |     +--:(above)
      |  |  |        +---w above?   severity
      |  |  +---w operator-state-filter! {operator-actions}?
        
      |  +--ro is-cleared               boolean
      |  +--ro last-raised              yang:date-and-time
      |  +--ro last-changed             yang:date-and-time
      |  +--ro perceived-severity       severity
      |  +--ro alarm-text               alarm-text
      |  +--ro status-change* [time] {alarm-history}?
      |  |  +--ro time                  yang:date-and-time
      |  |  +--ro perceived-severity    severity-with-clear
      |  |  +--ro alarm-text            alarm-text
      |  +--ro operator-state-change* [time] {operator-actions}?
      |  |  +--ro time        yang:date-and-time
      |  |  +--ro operator    string
      |  |  +--ro state       operator-state
      |  |  +--ro text?       string
      |  +---x set-operator-state {operator-actions}?
      |  |  +---w input
      |  |     +---w state    writable-operator-state
      |  |     +---w text?    string
      |  +---n operator-action {operator-actions}?
      |     +-- time        yang:date-and-time
      |     +-- operator    string
      |     +-- state       operator-state
      |     +-- text?       string
      +---x purge-alarms
      |  +---w input
      |  |  +---w alarm-clearance-status    enumeration
      |  |  +---w older-than!
      |  |  |  +---w (age-spec)?
      |  |  |     +--:(seconds)
      |  |  |     |  +---w seconds?   uint16
      |  |  |     +--:(minutes)
      |  |  |     |  +---w minutes?   uint16
      |  |  |     +--:(hours)
      |  |  |     |  +---w hours?     uint16
      |  |  |     +--:(days)
      |  |  |     |  +---w days?      uint16
      |  |  |     +--:(weeks)
      |  |  |        +---w weeks?     uint16
      |  |  +---w severity!
      |  |  |  +---w (sev-spec)?
      |  |  |     +--:(below)
      |  |  |     |  +---w below?   severity
      |  |  |     +--:(is)
      |  |  |     |  +---w is?      severity
      |  |  |     +--:(above)
      |  |  |        +---w above?   severity
      |  |  +---w operator-state-filter! {operator-actions}?
        
      |  |     +---w state?   operator-state
      |  |     +---w user?    string
      |  +--ro output
      |     +--ro purged-alarms?   uint32
      +---x compress-alarms {alarm-history}?
         +---w input
         |  +---w resource?               resource-match
         |  +---w alarm-type-id?
         |  |       -> /alarms/alarm-list/alarm/alarm-type-id
         |  +---w alarm-type-qualifier?   leafref
         +--ro output
            +--ro compressed-alarms?   uint32
        
      |  |     +---w state?   operator-state
      |  |     +---w user?    string
      |  +--ro output
      |     +--ro purged-alarms?   uint32
      +---x compress-alarms {alarm-history}?
         +---w input
         |  +---w resource?               resource-match
         |  +---w alarm-type-id?
         |  |       -> /alarms/alarm-list/alarm/alarm-type-id
         |  +---w alarm-type-qualifier?   leafref
         +--ro output
            +--ro compressed-alarms?   uint32
        

Every alarm has three important states: the resource clearance state "is-cleared", the severity "perceived-severity", and the operator state available in the operator-state change list.

每个警报都有三个重要状态:资源清除状态“已清除”、严重性“感知严重性”和操作员状态更改列表中可用的操作员状态。

In order to see the alarm history, the resource state changes are available in the "status-change" list, and the operator history is available in the "operator-state-change" list.

为了查看报警历史,资源状态更改可在“状态更改”列表中查看,操作员历史可在“操作员状态更改”列表中查看。

4.5. The Shelved-Alarm List
4.5. 被搁置的警报列表

The shelved-alarm list has the same structure as the alarm list above. It shows all the alarms that match the shelving criteria "/alarms/control/alarm-shelving".

搁置报警列表的结构与上面的报警列表相同。它显示与搁置条件“/警报/控制/警报搁置”匹配的所有警报。

4.6. Alarm Profiles
4.6. 报警配置文件

Alarm profiles, "/alarms/alarm-profile", is a list of configurable alarm types. The list supports configurable alarm severity levels in the container "alarm-severity-assignment-profile". If an alarm matches the configured alarm type, it MUST use the configured severity level(s) instead of the system default. This configuration MUST also be represented in the alarm inventory.

报警配置文件“/alarms/Alarm profile”是可配置报警类型的列表。该列表支持容器“报警严重性分配配置文件”中的可配置报警严重性级别。如果报警与配置的报警类型匹配,则必须使用配置的严重性级别,而不是系统默认级别。此配置也必须在报警清单中表示。

     +--rw alarm-profile*
             [alarm-type-id alarm-type-qualifier-match resource]
             {alarm-profile}?
        +--rw alarm-type-id                        alarm-type-id
        +--rw alarm-type-qualifier-match           string
        +--rw resource                             resource-match
        +--rw description                          string
        +--rw alarm-severity-assignment-profile
                {severity-assignment}?
           +--rw severity-level*    severity
        
     +--rw alarm-profile*
             [alarm-type-id alarm-type-qualifier-match resource]
             {alarm-profile}?
        +--rw alarm-type-id                        alarm-type-id
        +--rw alarm-type-qualifier-match           string
        +--rw resource                             resource-match
        +--rw description                          string
        +--rw alarm-severity-assignment-profile
                {severity-assignment}?
           +--rw severity-level*    severity
        
4.7. Operations
4.7. 操作

The alarm data model supports the following actions to manage the alarms:

报警数据模型支持以下操作来管理报警:

"/alarms/alarm-list/purge-alarms": Delete alarms from the "alarm-list" according to specific criteria, for example, all cleared alarms older than a specific date.

“/alarms/alarm list/purge alarms”:根据特定标准从“alarm list”中删除报警,例如,所有已清除的报警都早于特定日期。

"/alarms/alarm-list/compress-alarms": Compress the "status-change" list for the alarms.

“/报警/报警列表/压缩报警”:压缩报警的“状态更改”列表。

"/alarms/alarm-list/alarm/set-operator-state": Change the operator state for an alarm. For example, an alarm can be acknowledged by setting the operator state to "ack".

“/报警/报警列表/报警/设置操作员状态”:更改报警的操作员状态。例如,可以通过将操作员状态设置为“确认”来确认报警。

"/alarms/shelved-alarm-list/purge-shelved-alarms": Delete alarms from the "shelved-alarm-list" according to specific criteria, for example, all alarms older than a specific date.

“/alarms/shelved alarms list/purge shelved alarms”:根据特定条件从“shelved alarms list”中删除报警,例如,所有早于特定日期的报警。

"/alarms/shelved-alarm-list/compress-shelved-alarms": Compress the "status-change" list for the alarms.

“/alarms/shelved alarm list/compress shelved alarms”:压缩报警的“状态更改”列表。

4.8. Notifications
4.8. 通知

The alarm data model supports a general notification to report alarm-state changes. It carries all relevant parameters for the alarm-management application.

报警数据模型支持报告报警状态更改的常规通知。它包含报警管理应用程序的所有相关参数。

There is also a notification to report that an operator changed the operator state on an alarm, like acknowledged.

还有一个通知,用于报告操作员在警报上更改了操作员状态,如已确认。

If the alarm inventory is changed, for example, a new card type is inserted, a notification will tell the management application that new alarm types are available.

如果报警清单发生更改,例如,插入了新的卡类型,则会向管理应用程序发出通知,告知新的报警类型可用。

5. Relationship to the ietf-hardware YANG Module
5. 与ietf硬件模块的关系

RFC 8348 [RFC8348] defines the "ietf-hardware" YANG data model for the management of hardware. The "alarm-state" in RFC 8348 is a summary of the alarm severity levels that may be active on the specific hardware component. It does not say anything about how alarms are reported, and it doesn't provide any details of the alarms.

RFC 8348[RFC8348]定义了用于硬件管理的“ietf硬件”数据模型。RFC 8348中的“报警状态”是特定硬件组件上可能处于活动状态的报警严重性级别的汇总。它没有说明警报是如何报告的,也没有提供警报的任何细节。

The mapping between the alarm YANG data model, prefix "al", and the "alarm-state" in RFC 8348, prefix "hw", is as follows:

报警数据模型前缀“al”与RFC 8348中前缀“hw”的“报警状态”之间的映射如下:

"al:resource": Corresponds to an entry in the list "/hw:hardware/hw:component/".

“al:resource”:对应于列表中的一个条目“/hw:hardware/hw:component/”。

"al:is-cleared": No bit set in "/hw:hardware/hw:component/hw:state/ hw:alarm-state".

“al:已清除”:未在“/hw:硬件/hw:组件/hw:状态/hw:报警状态”中设置位。

"al:perceived-severity": Corresponding bit set in "/hw:hardware/hw:component/hw:state/hw:alarm-state".

“al:感知严重性”:在“/hw:硬件/hw:组件/hw:状态/hw:报警状态”中设置的对应位。

"al:operator-state-change/al:state": If the alarm is acknowledged by the operator, the bit "hw:under-repair" is set in "/hw:hardware/hw:component/hw:state/hw:alarm-state".

“al:操作员状态更改/al:状态”:如果操作员确认报警,则在“/hw:硬件/hw:组件/hw:状态/hw:报警状态”中设置位“hw:正在维修”。

6. Alarm YANG Module
6. 报警阳模块

This YANG module references [RFC6991] and [XSD-TYPES].

此模块引用[RFC6991]和[XSD-TYPES]。

  <CODE BEGINS> file "ietf-alarms@2019-09-11.yang"
  module ietf-alarms {
    yang-version 1.1;
    namespace "urn:ietf:params:xml:ns:yang:ietf-alarms";
    prefix al;
        
  <CODE BEGINS> file "ietf-alarms@2019-09-11.yang"
  module ietf-alarms {
    yang-version 1.1;
    namespace "urn:ietf:params:xml:ns:yang:ietf-alarms";
    prefix al;
        
    import ietf-yang-types {
      prefix yang;
      reference
        "RFC 6991: Common YANG Data Types.";
    }
        
    import ietf-yang-types {
      prefix yang;
      reference
        "RFC 6991: Common YANG Data Types.";
    }
        
    organization
      "IETF CCAMP Working Group";
    contact
      "WG Web:   <https://trac.ietf.org/trac/ccamp>
       WG List:  <mailto:ccamp@ietf.org>
        
    organization
      "IETF CCAMP Working Group";
    contact
      "WG Web:   <https://trac.ietf.org/trac/ccamp>
       WG List:  <mailto:ccamp@ietf.org>
        
       Editor:   Stefan Vallin
                 <mailto:stefan@wallan.se>
        
       Editor:   Stefan Vallin
                 <mailto:stefan@wallan.se>
        

Editor: Martin Bjorklund <mailto:mbj@tail-f.com>"; description "This module defines an interface for managing alarms. Main inputs to the module design are the 3GPP Alarm Integration Reference Point (IRP), ITU-T X.733, and ANSI/ISA-18.2 alarm standards.

编辑:Martin Bjorklund<mailto:mbj@tail-f、 com>“说明”此模块定义用于管理报警的接口。模块设计的主要输入是3GPP报警集成参考点(IRP)、ITU-T X.733和ANSI/ISA-18.2报警标准。

Main features of this module include:

本模块的主要功能包括:

* Alarm list: A list of all alarms. Cleared alarms stay in the list until explicitly purged.

* 报警列表:所有报警的列表。清除的报警将保留在列表中,直到明确清除。

* Operator actions on alarms: Acknowledging and closing alarms.

* 操作员对警报的操作:确认和关闭警报。

* Administrative actions on alarms: Purging alarms from the list according to specific criteria.

* 报警管理操作:根据特定标准从列表中清除报警。

* Alarm inventory: A management application can read all alarm types implemented by the system.

* 报警清单:管理应用程序可以读取系统实现的所有报警类型。

* Alarm shelving: Shelving (blocking) alarms according to specific criteria.

* 报警搁置:根据特定标准搁置(阻止)报警。

* Alarm profiles: A management system can attach further information to alarm types, for example, overriding system-default severity levels.

* 报警配置文件:管理系统可以向报警类型附加更多信息,例如,覆盖系统默认严重性级别。

This module uses a stateful view on alarms. An alarm is a state for a specific resource (note that an alarm is not a notification). An alarm type is a possible alarm state for a resource. For example, the tuple:

此模块使用报警的状态视图。报警是特定资源的状态(请注意,报警不是通知)。报警类型是资源的可能报警状态。例如,元组:

('link-alarm', 'GigabitEthernet0/25')

(“链路报警”、“千兆以太网0/25”)

is an alarm of type 'link-alarm' on the resource 'GigabitEthernet0/25'.

是资源“GigabitEthernet0/25”上的“链接警报”类型的警报。

Alarm types are identified using YANG identities and an optional string-based qualifier. The string-based qualifier allows for dynamic extension of the statically defined alarm types. Alarm types identify a possible alarm state and not the individual notifications. For example, the traditional 'link-down' and 'link-up' notifications are two notifications referring to the same alarm type 'link-alarm'.

报警类型使用YANG标识和可选的基于字符串的限定符标识。基于字符串的限定符允许动态扩展静态定义的报警类型。报警类型标识可能的报警状态,而不是单个通知。例如,传统的“链接关闭”和“链接打开”通知是指同一报警类型“链接报警”的两种通知。

With this design, there is no ambiguity about how alarm and alarm clear correlation should be performed; notifications that report the same resource and alarm type are considered updates

通过这种设计,警报和警报清晰关联的执行方式没有歧义;报告相同资源和报警类型的通知被视为更新

of the same alarm, e.g., clearing an active alarm or changing the severity of an alarm. The instrumentation can update the severity and alarm text on an existing alarm. The above alarm example can therefore look like the following:

同一警报,例如,清除活动警报或更改警报的严重性。仪表可以更新现有报警的严重性和报警文本。因此,上述报警示例如下所示:

(('link-alarm', 'GigabitEthernet0/25'), warning, 'interface down while interface admin state is up')

(('link-alarm','GigabitEthernet0/25'),警告,'interface admin state为up时接口关闭')

There is a clear separation between updates on the alarm from the underlying resource, like clear, and updates from an operator, like acknowledging or closing an alarm:

警报更新与基础资源(如clear)和操作员更新(如确认或关闭警报)之间存在明显的区别:

(('link-alarm', 'GigabitEthernet0/25'), warning, 'interface down while interface admin state is up', cleared, closed)

(('link-alarm','GigabitEthernet0/25'),警告,'interface admin state为up时接口关闭',清除,关闭)

Administrative actions like removing closed alarms older than a given time is supported.

支持删除超过给定时间的已关闭报警等管理操作。

This YANG module does not define how the underlying instrumentation detects and clears the specific alarms. That belongs to the Standards Development Organization (SDO) or enterprise that owns that specific technology.

该模块不定义底层仪表如何检测和清除特定报警。属于标准开发组织(SDO)或拥有该特定技术的企业的。

The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document are to be interpreted as described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here.

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“建议”、“不建议”、“可能”和“可选”在所有大写字母出现时(如图所示)应按照BCP 14(RFC 2119)(RFC 8174)所述进行解释。

Copyright (c) 2019 IETF Trust and the persons identified as authors of the code. All rights reserved.

版权(c)2019 IETF信托基金和被认定为代码作者的人员。版权所有。

Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Simplified BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info).

根据IETF信托有关IETF文件的法律规定第4.c节规定的简化BSD许可证中包含的许可条款,允许以源代码和二进制格式重新分发和使用,无论是否修改(https://trustee.ietf.org/license-info).

This version of this YANG module is part of RFC 8632; see the RFC itself for full legal notices.";

该模块的此版本是RFC 8632的一部分;有关完整的法律通知,请参见RFC本身。“;

revision 2019-09-11 { description

2019-09-11修订版{说明

        "Initial revision.";
      reference
        "RFC 8632: A YANG Data Model for Alarm Management";
    }
        
        "Initial revision.";
      reference
        "RFC 8632: A YANG Data Model for Alarm Management";
    }
        
    /*
     * Features
     */
        
    /*
     * Features
     */
        
    feature operator-actions {
      description
        "This feature indicates that the system supports operator
         states on alarms.";
    }
        
    feature operator-actions {
      description
        "This feature indicates that the system supports operator
         states on alarms.";
    }
        

feature alarm-shelving { description "This feature indicates that the system supports shelving (blocking) alarms.

功能报警搁置{说明“此功能表示系统支持搁置(阻止)报警。

         Alarm shelving may have an impact on server processing
         resources in order to match alarms against shelf
         criteria.";
    }
        
         Alarm shelving may have an impact on server processing
         resources in order to match alarms against shelf
         criteria.";
    }
        

feature alarm-history { description "This feature indicates that the server maintains a history of state changes for each alarm. For example, if an alarm toggles between cleared and active 10 times, these state changes are present in a separate list in the alarm.

功能报警历史记录{description“此功能表示服务器维护每个报警的状态更改历史记录。例如,如果报警在清除和激活之间切换10次,这些状态更改将显示在报警的单独列表中。

         Keeping the alarm history may have an impact on server
         memory resources.";
    }
        
         Keeping the alarm history may have an impact on server
         memory resources.";
    }
        
    feature alarm-summary {
      description
        "This feature indicates that the server summarizes the number
         of alarms per severity and operator state.";
    }
        
    feature alarm-summary {
      description
        "This feature indicates that the server summarizes the number
         of alarms per severity and operator state.";
    }
        
    feature alarm-profile {
      description
        "The system enables clients to configure further information
         to each alarm type.";
    }
        
    feature alarm-profile {
      description
        "The system enables clients to configure further information
         to each alarm type.";
    }
        
    feature severity-assignment {
      description
        "The system supports configurable alarm severity levels.";
      reference
        "ITU-T Recommendation M.3100:
           Generic network information model
         ITU-T Recommendation M.3160:
           Generic, protocol-neutral management information model";
    }
        
    feature severity-assignment {
      description
        "The system supports configurable alarm severity levels.";
      reference
        "ITU-T Recommendation M.3100:
           Generic network information model
         ITU-T Recommendation M.3160:
           Generic, protocol-neutral management information model";
    }
        
    feature root-cause-analysis {
      description
        "The system supports identifying candidate root-cause
         resources for an alarm, for example, a disk partition
         root cause for a logger failure alarm.";
    }
        
    feature root-cause-analysis {
      description
        "The system supports identifying candidate root-cause
         resources for an alarm, for example, a disk partition
         root cause for a logger failure alarm.";
    }
        
    feature service-impact-analysis {
      description
        "The system supports identifying candidate-impacted
         resources for an alarm, for example, an interface state change
         resulting in a link alarm, which can refer to a link as being
         impacted.";
    }
        
    feature service-impact-analysis {
      description
        "The system supports identifying candidate-impacted
         resources for an alarm, for example, an interface state change
         resulting in a link alarm, which can refer to a link as being
         impacted.";
    }
        
    feature alarm-correlation {
      description
        "The system supports correlating/grouping alarms
         that belong together.";
    }
        
    feature alarm-correlation {
      description
        "The system supports correlating/grouping alarms
         that belong together.";
    }
        
    /*
     * Identities
     */
        
    /*
     * Identities
     */
        

identity alarm-type-id { description "Base identity for alarm types. A unique identification of the alarm, not including the resource. Different resources can share alarm types. If the resource reports the same alarm type, it is considered to be the same alarm. The alarm type is a simplification of the different X.733 and 3GPP Alarm IRP correlation mechanisms, and it allows for hierarchical extensions.

标识报警类型id{说明"报警类型的基本标识。报警的唯一标识,不包括资源。不同的资源可以共享报警类型。如果资源报告相同的报警类型,则认为它是相同的报警。报警类型是不同X.733和3GPP报警IRP关联机制的简化,并允许层次结构奇卡扩展。

A string-based qualifier can be used in addition to the identity in order to have different alarm types based on information not known at design time, such as values in

除了标识外,还可以使用基于字符串的限定符,以便根据设计时未知的信息(如中的值)具有不同的报警类型

textual SNMP Notification varbinds.

文本SNMP通知。

Standards and vendors can define sub-identities to clearly identify specific alarm types.

标准和供应商可以定义子标识,以明确标识特定的报警类型。

         This identity is abstract and MUST NOT be used for alarms.";
    }
        
         This identity is abstract and MUST NOT be used for alarms.";
    }
        
    /*
     * Common types
     */
        
    /*
     * Common types
     */
        
    typedef resource {
      type union {
        type instance-identifier {
          require-instance false;
        }
        type yang:object-identifier;
        type string;
        type yang:uuid;
      }
      description
        "This is an identification of the alarming resource, such as an
         interface.  It should be as fine-grained as possible to both
         guide the operator and guarantee uniqueness of the alarms.
        
    typedef resource {
      type union {
        type instance-identifier {
          require-instance false;
        }
        type yang:object-identifier;
        type string;
        type yang:uuid;
      }
      description
        "This is an identification of the alarming resource, such as an
         interface.  It should be as fine-grained as possible to both
         guide the operator and guarantee uniqueness of the alarms.
        

If the alarming resource is modeled in YANG, this type will be an instance-identifier.

如果报警资源在YANG中建模,则此类型将是实例标识符。

If the resource is an SNMP object, the type will be an 'object-identifier'.

如果资源是SNMP对象,则类型将是“对象标识符”。

If the resource is anything else, for example, a distinguished name or a Common Information Model (CIM) path, this type will be a string.

如果资源是其他任何内容,例如,可分辨名称或公共信息模型(CIM)路径,则此类型将是字符串。

If the alarming object is identified by a Universally Unique Identifier (UUID), use the uuid type. Be cautious when using this type, since a UUID is hard to use for an operator.

如果报警对象由通用唯一标识符(UUID)标识,则使用UUID类型。使用此类型时要小心,因为UUID对于操作员来说很难使用。

         If the server supports several models, the precedence should
         be in the order as given in the union definition.";
    }
        
         If the server supports several models, the precedence should
         be in the order as given in the union definition.";
    }
        
    typedef resource-match {
      type union {
        type yang:xpath1.0;
        type yang:object-identifier;
        
    typedef resource-match {
      type union {
        type yang:xpath1.0;
        type yang:object-identifier;
        
        type string;
      }
      description
        "This type is used to match resources of type 'resource'.
         Since the type 'resource' is a union of different types, the
         'resource-match' type is also a union of corresponding types.
        
        type string;
      }
      description
        "This type is used to match resources of type 'resource'.
         Since the type 'resource' is a union of different types, the
         'resource-match' type is also a union of corresponding types.
        

If the type is given as an XPath 1.0 expression, a resource of type 'instance-identifier' matches if the instance is part of the node set that is the result of evaluating the XPath 1.0 expression. For example, the XPath 1.0 expression:

如果该类型作为XPath 1.0表达式提供,则如果该实例是计算XPath 1.0表达式结果的节点集的一部分,则“实例标识符”类型的资源将匹配。例如,XPath 1.0表达式:

          /ietf-interfaces:interfaces/ietf-interfaces:interface
              [ietf-interfaces:type='ianaift:ethernetCsmacd']
        
          /ietf-interfaces:interfaces/ietf-interfaces:interface
              [ietf-interfaces:type='ianaift:ethernetCsmacd']
        

would match the resource instance-identifier:

将与资源实例标识符匹配:

/if:interfaces/if:interface[if:name='eth1'],

/if:interfaces/if:interface[if:name='eth1'],

assuming that the interface 'eth1' is of type 'ianaift:ethernetCsmacd'.

假设接口“eth1”的类型为“ianaift:ethernetCsmacd”。

If the type is given as an object identifier, a resource of type 'object-identifier' matches if the match object identifier is a prefix of the resource's object identifier. For example, the value:

如果该类型作为对象标识符给定,则如果匹配对象标识符是资源对象标识符的前缀,则“对象标识符”类型的资源将匹配。例如,值:

1.3.6.1.2.1.2.2

1.3.6.1.2.1.2.2

would match the resource object identifier:

将与资源对象标识符匹配:

1.3.6.1.2.1.2.2.1.1.5

1.3.6.1.2.1.2.2.1.1.5

If the type is given as an UUID or a string, it is interpreted as an XML Schema regular expression, which matches a resource of type 'yang:uuid' or 'string' if the given regular expression matches the resource string.

如果该类型以UUID或字符串形式给出,则将其解释为XML架构正则表达式,如果给定正则表达式与资源字符串匹配,则该正则表达式与类型为“yang:UUID”或“string”的资源相匹配。

If the type is given as an XPath expression, it is evaluated in the following XPath context:

如果类型作为XPath表达式提供,则在以下XPath上下文中对其求值:

o The set of namespace declarations is the set of prefix and namespace pairs for all YANG modules implemented by the server, where the prefix is the YANG module name and the namespace is as defined by the 'namespace' statement in the YANG module.

o 命名空间声明集是服务器实现的所有YANG模块的前缀和命名空间对集,其中前缀是YANG模块名称,命名空间由YANG模块中的“namespace”语句定义。

If a leaf of this type is encoded in XML, all namespace

如果此类型的叶用XML编码,则所有名称空间

declarations in scope on the leaf element are added to the set of namespace declarations. If a prefix found in the XML is already present in the set of namespace declarations, the namespace in the XML is used.

叶元素上作用域中的声明被添加到名称空间声明集中。如果在XML中找到的前缀已存在于名称空间声明集中,则使用XML中的名称空间。

o The set of variable bindings is empty.

o 变量绑定集为空。

o The function library is the core function library, and the functions are defined in Section 10 of RFC 7950.

o 函数库是核心函数库,函数在RFC 7950第10节中定义。

           o  The context node is the root node in the data tree.";
      reference
        "XML Schema Part 2: Datatypes Second Edition,
           World Wide Web Consortium Recommendation
           REC-xmlschema-2-20041028";
    }
        
           o  The context node is the root node in the data tree.";
      reference
        "XML Schema Part 2: Datatypes Second Edition,
           World Wide Web Consortium Recommendation
           REC-xmlschema-2-20041028";
    }
        
    typedef alarm-text {
      type string;
      description
        "The string used to inform operators about the alarm.  This
         MUST contain enough information for an operator to be able to
         understand the problem and how to resolve it.  If this string
         contains structure, this format should be clearly documented
         for programs to be able to parse that information.";
    }
        
    typedef alarm-text {
      type string;
      description
        "The string used to inform operators about the alarm.  This
         MUST contain enough information for an operator to be able to
         understand the problem and how to resolve it.  If this string
         contains structure, this format should be clearly documented
         for programs to be able to parse that information.";
    }
        
    typedef severity {
      type enumeration {
        enum indeterminate {
          value 2;
          description
            "Indicates that the severity level could not be
             determined.  This level SHOULD be avoided.";
        }
        enum warning {
          value 3;
          description
            "The 'warning' severity level indicates the detection of a
             potential or impending service-affecting fault, before any
             significant effects have been felt.  Action should be
             taken to further diagnose (if necessary) and correct the
             problem in order to prevent it from becoming a more
             serious service-affecting fault.";
        }
        enum minor {
          value 4;
          description
        
    typedef severity {
      type enumeration {
        enum indeterminate {
          value 2;
          description
            "Indicates that the severity level could not be
             determined.  This level SHOULD be avoided.";
        }
        enum warning {
          value 3;
          description
            "The 'warning' severity level indicates the detection of a
             potential or impending service-affecting fault, before any
             significant effects have been felt.  Action should be
             taken to further diagnose (if necessary) and correct the
             problem in order to prevent it from becoming a more
             serious service-affecting fault.";
        }
        enum minor {
          value 4;
          description
        
            "The 'minor' severity level indicates the existence of a
             non-service-affecting fault condition and that corrective
             action should be taken in order to prevent a more serious
             (for example, service-affecting) fault.  Such a severity
             can be reported, for example, when the detected alarm
             condition is not currently degrading the capacity of the
             resource.";
        }
        enum major {
          value 5;
          description
            "The 'major' severity level indicates that a service-
             affecting condition has developed and an urgent corrective
             action is required.  Such a severity can be reported, for
             example, when there is a severe degradation in the
             capability of the resource and its full capability must be
             restored.";
        }
        enum critical {
          value 6;
          description
            "The 'critical' severity level indicates that a service-
             affecting condition has occurred and an immediate
             corrective action is required.  Such a severity can be
             reported, for example, when a resource becomes totally out
             of service and its capability must be restored.";
        }
      }
      description
        "The severity level of the alarm.  Note well that the value
         'clear' is not included.  Whether or not an alarm is cleared
         is a separate boolean flag.";
      reference
        "ITU-T Recommendation X.733: Information Technology
           - Open Systems Interconnection
           - System Management: Alarm Reporting Function";
    }
        
            "The 'minor' severity level indicates the existence of a
             non-service-affecting fault condition and that corrective
             action should be taken in order to prevent a more serious
             (for example, service-affecting) fault.  Such a severity
             can be reported, for example, when the detected alarm
             condition is not currently degrading the capacity of the
             resource.";
        }
        enum major {
          value 5;
          description
            "The 'major' severity level indicates that a service-
             affecting condition has developed and an urgent corrective
             action is required.  Such a severity can be reported, for
             example, when there is a severe degradation in the
             capability of the resource and its full capability must be
             restored.";
        }
        enum critical {
          value 6;
          description
            "The 'critical' severity level indicates that a service-
             affecting condition has occurred and an immediate
             corrective action is required.  Such a severity can be
             reported, for example, when a resource becomes totally out
             of service and its capability must be restored.";
        }
      }
      description
        "The severity level of the alarm.  Note well that the value
         'clear' is not included.  Whether or not an alarm is cleared
         is a separate boolean flag.";
      reference
        "ITU-T Recommendation X.733: Information Technology
           - Open Systems Interconnection
           - System Management: Alarm Reporting Function";
    }
        
    typedef severity-with-clear {
      type union {
        type enumeration {
          enum cleared {
            value 1;
            description
              "The alarm is cleared by the instrumentation.";
          }
        }
        type severity;
        
    typedef severity-with-clear {
      type union {
        type enumeration {
          enum cleared {
            value 1;
            description
              "The alarm is cleared by the instrumentation.";
          }
        }
        type severity;
        
      }
      description
        "The severity level of the alarm including clear.  This is used
         only in notifications reporting state changes for an alarm.";
    }
        
      }
      description
        "The severity level of the alarm including clear.  This is used
         only in notifications reporting state changes for an alarm.";
    }
        
    typedef writable-operator-state {
      type enumeration {
        enum none {
          value 1;
          description
            "The alarm is not being taken care of.";
        }
        enum ack {
          value 2;
          description
            "The alarm is being taken care of.  Corrective action not
             taken yet or has failed";
        }
        enum closed {
          value 3;
          description
            "Corrective action taken successfully.";
        }
      }
      description
        "Operator states on an alarm.  The 'closed' state indicates
         that an operator considers the alarm being resolved.  This is
         separate from the alarm's 'is-cleared' leaf.";
    }
        
    typedef writable-operator-state {
      type enumeration {
        enum none {
          value 1;
          description
            "The alarm is not being taken care of.";
        }
        enum ack {
          value 2;
          description
            "The alarm is being taken care of.  Corrective action not
             taken yet or has failed";
        }
        enum closed {
          value 3;
          description
            "Corrective action taken successfully.";
        }
      }
      description
        "Operator states on an alarm.  The 'closed' state indicates
         that an operator considers the alarm being resolved.  This is
         separate from the alarm's 'is-cleared' leaf.";
    }
        
    typedef operator-state {
      type union {
        type writable-operator-state;
        type enumeration {
          enum shelved {
            value 4;
            description
              "The alarm is shelved.  Alarms in /alarms/shelved-alarms/
               MUST be assigned this operator state by the server as
               the last entry in the 'operator-state-change' list.  The
               text for that entry SHOULD include the shelf name.";
          }
          enum un-shelved {
            value 5;
            description
              "The alarm is moved back to 'alarm-list' from a shelf.
               Alarms that are moved from /alarms/shelved-alarms/ to
        
    typedef operator-state {
      type union {
        type writable-operator-state;
        type enumeration {
          enum shelved {
            value 4;
            description
              "The alarm is shelved.  Alarms in /alarms/shelved-alarms/
               MUST be assigned this operator state by the server as
               the last entry in the 'operator-state-change' list.  The
               text for that entry SHOULD include the shelf name.";
          }
          enum un-shelved {
            value 5;
            description
              "The alarm is moved back to 'alarm-list' from a shelf.
               Alarms that are moved from /alarms/shelved-alarms/ to
        
               /alarms/alarm-list MUST be assigned this state by the
               server as the last entry in the 'operator-state-change'
               list.  The text for that entry SHOULD include the shelf
               name.";
          }
        }
      }
      description
        "Operator states on an alarm.  The 'closed' state indicates
         that an operator considers the alarm being resolved.  This is
         separate from the alarm's 'is-cleared' leaf.";
    }
        
               /alarms/alarm-list MUST be assigned this state by the
               server as the last entry in the 'operator-state-change'
               list.  The text for that entry SHOULD include the shelf
               name.";
          }
        }
      }
      description
        "Operator states on an alarm.  The 'closed' state indicates
         that an operator considers the alarm being resolved.  This is
         separate from the alarm's 'is-cleared' leaf.";
    }
        
    /* Alarm type */
        
    /* Alarm type */
        
    typedef alarm-type-id {
      type identityref {
        base alarm-type-id;
      }
      description
        "Identifies an alarm type.  The description of the alarm type
         id MUST indicate whether or not the alarm type is abstract.
         An abstract alarm type is used as a base for other alarm type
         ids and will not be used as a value for an alarm or be present
         in the alarm inventory.";
    }
        
    typedef alarm-type-id {
      type identityref {
        base alarm-type-id;
      }
      description
        "Identifies an alarm type.  The description of the alarm type
         id MUST indicate whether or not the alarm type is abstract.
         An abstract alarm type is used as a base for other alarm type
         ids and will not be used as a value for an alarm or be present
         in the alarm inventory.";
    }
        
    typedef alarm-type-qualifier {
      type string;
      description
        "If an alarm type cannot be fully specified at design time by
         'alarm-type-id', this string qualifier is used in addition to
         fully define a unique alarm type.
        
    typedef alarm-type-qualifier {
      type string;
      description
        "If an alarm type cannot be fully specified at design time by
         'alarm-type-id', this string qualifier is used in addition to
         fully define a unique alarm type.
        
         The definition of alarm qualifiers is considered to be part of
         the instrumentation and is out of scope for this module.  An
         empty string is used when this is part of a key.";
    }
        
         The definition of alarm qualifiers is considered to be part of
         the instrumentation and is out of scope for this module.  An
         empty string is used when this is part of a key.";
    }
        
    /*
     * Groupings
     */
        
    /*
     * Groupings
     */
        

grouping common-alarm-parameters { description "Common parameters for an alarm.

分组常见报警参数{description“报警的常见参数。

This grouping is used both in the alarm list and in the

此分组用于报警列表和报警列表中

         notification representing an alarm-state change.";
      leaf resource {
        type resource;
        mandatory true;
        description
          "The alarming resource.  See also 'alt-resource'.  This could
           be, for example, a reference to the alarming interface";
      }
      leaf alarm-type-id {
        type alarm-type-id;
        mandatory true;
        description
          "This leaf and the leaf 'alarm-type-qualifier' together
           provide a unique identification of the alarm type.";
      }
      leaf alarm-type-qualifier {
        type alarm-type-qualifier;
        description
          "This leaf is used when the 'alarm-type-id' leaf cannot
           uniquely identify the alarm type.  Normally, this is not the
           case, and this leaf is the empty string.";
      }
      leaf-list alt-resource {
        type resource;
        description
          "Used if the alarming resource is available over other
           interfaces.  This field can contain SNMP OIDs, CIM paths, or
           3GPP distinguished names, for example.";
      }
      list related-alarm {
        if-feature "alarm-correlation";
        key "resource alarm-type-id alarm-type-qualifier";
        description
          "References to related alarms.  Note that the related alarm
           might have been purged from the alarm list.";
        leaf resource {
          type leafref {
            path "/alarms/alarm-list/alarm/resource";
            require-instance false;
          }
          description
            "The alarming resource for the related alarm.";
        }
        leaf alarm-type-id {
          type leafref {
            path "/alarms/alarm-list/alarm"
               + "[resource=current()/../resource]"
               + "/alarm-type-id";
        
         notification representing an alarm-state change.";
      leaf resource {
        type resource;
        mandatory true;
        description
          "The alarming resource.  See also 'alt-resource'.  This could
           be, for example, a reference to the alarming interface";
      }
      leaf alarm-type-id {
        type alarm-type-id;
        mandatory true;
        description
          "This leaf and the leaf 'alarm-type-qualifier' together
           provide a unique identification of the alarm type.";
      }
      leaf alarm-type-qualifier {
        type alarm-type-qualifier;
        description
          "This leaf is used when the 'alarm-type-id' leaf cannot
           uniquely identify the alarm type.  Normally, this is not the
           case, and this leaf is the empty string.";
      }
      leaf-list alt-resource {
        type resource;
        description
          "Used if the alarming resource is available over other
           interfaces.  This field can contain SNMP OIDs, CIM paths, or
           3GPP distinguished names, for example.";
      }
      list related-alarm {
        if-feature "alarm-correlation";
        key "resource alarm-type-id alarm-type-qualifier";
        description
          "References to related alarms.  Note that the related alarm
           might have been purged from the alarm list.";
        leaf resource {
          type leafref {
            path "/alarms/alarm-list/alarm/resource";
            require-instance false;
          }
          description
            "The alarming resource for the related alarm.";
        }
        leaf alarm-type-id {
          type leafref {
            path "/alarms/alarm-list/alarm"
               + "[resource=current()/../resource]"
               + "/alarm-type-id";
        
            require-instance false;
          }
          description
            "The alarm type identifier for the related alarm.";
        }
        leaf alarm-type-qualifier {
          type leafref {
            path "/alarms/alarm-list/alarm"
               + "[resource=current()/../resource]"
               + "[alarm-type-id=current()/../alarm-type-id]"
               + "/alarm-type-qualifier";
            require-instance false;
          }
          description
            "The alarm qualifier for the related alarm.";
        }
      }
      leaf-list impacted-resource {
        if-feature "service-impact-analysis";
        type resource;
        description
          "Resources that might be affected by this alarm.  If the
           system creates an alarm on a resource and also has a mapping
           to other resources that might be impacted, these resources
           can be listed in this leaf-list.  In this way, the system
           can create one alarm instead of several.  For example, if an
           interface has an alarm, the 'impacted-resource' can
           reference the aggregated port channels.";
      }
      leaf-list root-cause-resource {
        if-feature "root-cause-analysis";
        type resource;
        description
          "Resources that are candidates for causing the alarm.  If the
           system has a mechanism to understand the candidate root
           causes of an alarm, this leaf-list can be used to list the
           root-cause candidate resources.  In this way, the system can
           create one alarm instead of several.  An example might be a
           logging system (alarm resource) that fails; the alarm can
           reference the file system in the 'root-cause-resource'
           leaf-list.  Note that the intended use is not to also send
           an alarm with the 'root-cause-resource' as an alarming
           resource.  The 'root-cause-resource' leaf-list is a hint and
           should not also generate an alarm for the same problem.";
      }
    }
        
            require-instance false;
          }
          description
            "The alarm type identifier for the related alarm.";
        }
        leaf alarm-type-qualifier {
          type leafref {
            path "/alarms/alarm-list/alarm"
               + "[resource=current()/../resource]"
               + "[alarm-type-id=current()/../alarm-type-id]"
               + "/alarm-type-qualifier";
            require-instance false;
          }
          description
            "The alarm qualifier for the related alarm.";
        }
      }
      leaf-list impacted-resource {
        if-feature "service-impact-analysis";
        type resource;
        description
          "Resources that might be affected by this alarm.  If the
           system creates an alarm on a resource and also has a mapping
           to other resources that might be impacted, these resources
           can be listed in this leaf-list.  In this way, the system
           can create one alarm instead of several.  For example, if an
           interface has an alarm, the 'impacted-resource' can
           reference the aggregated port channels.";
      }
      leaf-list root-cause-resource {
        if-feature "root-cause-analysis";
        type resource;
        description
          "Resources that are candidates for causing the alarm.  If the
           system has a mechanism to understand the candidate root
           causes of an alarm, this leaf-list can be used to list the
           root-cause candidate resources.  In this way, the system can
           create one alarm instead of several.  An example might be a
           logging system (alarm resource) that fails; the alarm can
           reference the file system in the 'root-cause-resource'
           leaf-list.  Note that the intended use is not to also send
           an alarm with the 'root-cause-resource' as an alarming
           resource.  The 'root-cause-resource' leaf-list is a hint and
           should not also generate an alarm for the same problem.";
      }
    }
        

grouping alarm-state-change-parameters {

分组报警状态更改参数{

description "Parameters for an alarm-state change.

说明“报警状态更改的参数”。

         This grouping is used both in the alarm list's status-change
         list and in the notification representing an alarm-state
         change.";
      leaf time {
        type yang:date-and-time;
        mandatory true;
        description
          "The time the status of the alarm changed.  The value
           represents the time the real alarm-state change appeared in
           the resource and not when it was added to the alarm
           list.  The /alarm-list/alarm/last-changed MUST be set to the
           same value.";
      }
      leaf perceived-severity {
        type severity-with-clear;
        mandatory true;
        description
          "The severity of the alarm as defined by X.733.  Note that
           this may not be the original severity since the alarm may
           have changed severity.";
        reference
          "ITU-T Recommendation X.733: Information Technology
             - Open Systems Interconnection
             - System Management: Alarm Reporting Function";
      }
      leaf alarm-text {
        type alarm-text;
        mandatory true;
        description
          "A user-friendly text describing the alarm-state change.";
        reference
          "ITU-T Recommendation X.733: Information Technology
             - Open Systems Interconnection
             - System Management: Alarm Reporting Function";
      }
    }
        
         This grouping is used both in the alarm list's status-change
         list and in the notification representing an alarm-state
         change.";
      leaf time {
        type yang:date-and-time;
        mandatory true;
        description
          "The time the status of the alarm changed.  The value
           represents the time the real alarm-state change appeared in
           the resource and not when it was added to the alarm
           list.  The /alarm-list/alarm/last-changed MUST be set to the
           same value.";
      }
      leaf perceived-severity {
        type severity-with-clear;
        mandatory true;
        description
          "The severity of the alarm as defined by X.733.  Note that
           this may not be the original severity since the alarm may
           have changed severity.";
        reference
          "ITU-T Recommendation X.733: Information Technology
             - Open Systems Interconnection
             - System Management: Alarm Reporting Function";
      }
      leaf alarm-text {
        type alarm-text;
        mandatory true;
        description
          "A user-friendly text describing the alarm-state change.";
        reference
          "ITU-T Recommendation X.733: Information Technology
             - Open Systems Interconnection
             - System Management: Alarm Reporting Function";
      }
    }
        
    grouping operator-parameters {
      description
        "This grouping defines parameters that can be changed by an
         operator.";
      leaf time {
        type yang:date-and-time;
        mandatory true;
        description
        
    grouping operator-parameters {
      description
        "This grouping defines parameters that can be changed by an
         operator.";
      leaf time {
        type yang:date-and-time;
        mandatory true;
        description
        
          "Timestamp for operator action on the alarm.";
      }
      leaf operator {
        type string;
        mandatory true;
        description
          "The name of the operator that has acted on this alarm.";
      }
      leaf state {
        type operator-state;
        mandatory true;
        description
          "The operator's view of the alarm state.";
      }
      leaf text {
        type string;
        description
          "Additional optional textual information provided by the
           operator.";
      }
    }
        
          "Timestamp for operator action on the alarm.";
      }
      leaf operator {
        type string;
        mandatory true;
        description
          "The name of the operator that has acted on this alarm.";
      }
      leaf state {
        type operator-state;
        mandatory true;
        description
          "The operator's view of the alarm state.";
      }
      leaf text {
        type string;
        description
          "Additional optional textual information provided by the
           operator.";
      }
    }
        
    grouping resource-alarm-parameters {
      description
        "Alarm parameters that originate from the resource view.";
      leaf is-cleared {
        type boolean;
        mandatory true;
        description
          "Indicates the current clearance state of the alarm.  An
           alarm might toggle from active alarm to cleared alarm and
           back to active again.";
      }
      leaf last-raised {
        type yang:date-and-time;
        mandatory true;
        description
          "An alarm may change severity level and toggle between
           active and cleared during its lifetime.  This leaf indicates
           the last time it was raised ('is-cleared' = 'false').";
      }
      leaf last-changed {
        type yang:date-and-time;
        mandatory true;
        description
          "A timestamp when the 'status-change' or
           'operator-state-change' list was last changed.";
      }
        
    grouping resource-alarm-parameters {
      description
        "Alarm parameters that originate from the resource view.";
      leaf is-cleared {
        type boolean;
        mandatory true;
        description
          "Indicates the current clearance state of the alarm.  An
           alarm might toggle from active alarm to cleared alarm and
           back to active again.";
      }
      leaf last-raised {
        type yang:date-and-time;
        mandatory true;
        description
          "An alarm may change severity level and toggle between
           active and cleared during its lifetime.  This leaf indicates
           the last time it was raised ('is-cleared' = 'false').";
      }
      leaf last-changed {
        type yang:date-and-time;
        mandatory true;
        description
          "A timestamp when the 'status-change' or
           'operator-state-change' list was last changed.";
      }
        
      leaf perceived-severity {
        type severity;
        mandatory true;
        description
          "The last severity of the alarm.
        
      leaf perceived-severity {
        type severity;
        mandatory true;
        description
          "The last severity of the alarm.
        
           If an alarm was raised with severity 'warning' but later
           changed to 'major', this leaf will show 'major'.";
      }
      leaf alarm-text {
        type alarm-text;
        mandatory true;
        description
          "The last reported alarm text.  This text should contain
           information for an operator to be able to understand the
           problem and how to resolve it.";
      }
      list status-change {
        if-feature "alarm-history";
        key "time";
        min-elements 1;
        description
          "A list of status-change events for this alarm.
        
           If an alarm was raised with severity 'warning' but later
           changed to 'major', this leaf will show 'major'.";
      }
      leaf alarm-text {
        type alarm-text;
        mandatory true;
        description
          "The last reported alarm text.  This text should contain
           information for an operator to be able to understand the
           problem and how to resolve it.";
      }
      list status-change {
        if-feature "alarm-history";
        key "time";
        min-elements 1;
        description
          "A list of status-change events for this alarm.
        

The entry with latest timestamp in this list MUST correspond to the leafs 'is-cleared', 'perceived-severity', and 'alarm-text' for the alarm.

此列表中具有最新时间戳的条目必须对应于报警的LEAF“已清除”、“感知严重性”和“报警文本”。

This list is ordered according to the timestamps of alarm state changes. The first item corresponds to the latest state change.

此列表根据报警状态更改的时间戳排序。第一项对应于最新的状态更改。

           The following state changes create an entry in this
           list:
           - changed severity (warning, minor, major, critical)
           - clearance status; this also updates the 'is-cleared'
             leaf
           - alarm-text update";
        uses alarm-state-change-parameters;
      }
    }
        
           The following state changes create an entry in this
           list:
           - changed severity (warning, minor, major, critical)
           - clearance status; this also updates the 'is-cleared'
             leaf
           - alarm-text update";
        uses alarm-state-change-parameters;
      }
    }
        
    grouping filter-input {
      description
        "Grouping to specify a filter construct on alarm information.";
      leaf alarm-clearance-status {
        type enumeration {
          enum any {
        
    grouping filter-input {
      description
        "Grouping to specify a filter construct on alarm information.";
      leaf alarm-clearance-status {
        type enumeration {
          enum any {
        
            description
              "Ignore alarm-clearance status.";
          }
          enum cleared {
            description
              "Filter cleared alarms.";
          }
          enum not-cleared {
            description
              "Filter not-cleared alarms.";
          }
        }
        mandatory true;
        description
          "The clearance status of the alarm.";
      }
      container older-than {
        presence "Age specification";
        description
          "Matches the 'last-status-change' leaf in the alarm.";
        choice age-spec {
          description
            "Filter using date and time age.";
          case seconds {
            leaf seconds {
              type uint16;
              description
                "Age expressed in seconds.";
            }
          }
          case minutes {
            leaf minutes {
              type uint16;
              description
                "Age expressed in minutes.";
            }
          }
          case hours {
            leaf hours {
              type uint16;
              description
                "Age expressed in hours.";
            }
          }
          case days {
            leaf days {
              type uint16;
              description
        
            description
              "Ignore alarm-clearance status.";
          }
          enum cleared {
            description
              "Filter cleared alarms.";
          }
          enum not-cleared {
            description
              "Filter not-cleared alarms.";
          }
        }
        mandatory true;
        description
          "The clearance status of the alarm.";
      }
      container older-than {
        presence "Age specification";
        description
          "Matches the 'last-status-change' leaf in the alarm.";
        choice age-spec {
          description
            "Filter using date and time age.";
          case seconds {
            leaf seconds {
              type uint16;
              description
                "Age expressed in seconds.";
            }
          }
          case minutes {
            leaf minutes {
              type uint16;
              description
                "Age expressed in minutes.";
            }
          }
          case hours {
            leaf hours {
              type uint16;
              description
                "Age expressed in hours.";
            }
          }
          case days {
            leaf days {
              type uint16;
              description
        
                "Age expressed in days.";
            }
          }
          case weeks {
            leaf weeks {
              type uint16;
              description
                "Age expressed in weeks.";
            }
          }
        }
      }
      container severity {
        presence "Severity filter";
        choice sev-spec {
          description
            "Filter based on severity level.";
          leaf below {
            type severity;
            description
              "Severity less than this leaf.";
          }
          leaf is {
            type severity;
            description
              "Severity level equal to this leaf.";
          }
          leaf above {
            type severity;
            description
              "Severity level higher than this leaf.";
          }
        }
        description
          "Filter based on severity.";
      }
      container operator-state-filter {
        if-feature "operator-actions";
        presence "Operator state filter";
        leaf state {
          type operator-state;
          description
            "Filter on operator state.";
        }
        leaf user {
          type string;
          description
            "Filter based on which operator.";
        
                "Age expressed in days.";
            }
          }
          case weeks {
            leaf weeks {
              type uint16;
              description
                "Age expressed in weeks.";
            }
          }
        }
      }
      container severity {
        presence "Severity filter";
        choice sev-spec {
          description
            "Filter based on severity level.";
          leaf below {
            type severity;
            description
              "Severity less than this leaf.";
          }
          leaf is {
            type severity;
            description
              "Severity level equal to this leaf.";
          }
          leaf above {
            type severity;
            description
              "Severity level higher than this leaf.";
          }
        }
        description
          "Filter based on severity.";
      }
      container operator-state-filter {
        if-feature "operator-actions";
        presence "Operator state filter";
        leaf state {
          type operator-state;
          description
            "Filter on operator state.";
        }
        leaf user {
          type string;
          description
            "Filter based on which operator.";
        
        }
        description
          "Filter based on operator state.";
      }
    }
        
        }
        description
          "Filter based on operator state.";
      }
    }
        
    /*
     * The /alarms data tree
     */
        
    /*
     * The /alarms data tree
     */
        
    container alarms {
      description
        "The top container for this module.";
      container control {
        description
          "Configuration to control the alarm behavior.";
        leaf max-alarm-status-changes {
          type union {
            type uint16;
            type enumeration {
              enum infinite {
                description
                  "The status-change entries are accumulated
                   infinitely.";
              }
            }
          }
          default "32";
          description
            "The 'status-change' entries are kept in a circular list
             per alarm.  When this number is exceeded, the oldest
             status change entry is automatically removed.  If the
             value is 'infinite', the status-change entries are
             accumulated infinitely.";
        }
        leaf notify-status-changes {
          type enumeration {
            enum all-state-changes {
              description
                "Send notifications for all status changes.";
            }
            enum raise-and-clear {
              description
                "Send notifications only for raise, clear, and
                 re-raise.  Notifications for severity-level changes or
                 alarm-text changes are not sent.";
            }
            enum severity-level {
        
    container alarms {
      description
        "The top container for this module.";
      container control {
        description
          "Configuration to control the alarm behavior.";
        leaf max-alarm-status-changes {
          type union {
            type uint16;
            type enumeration {
              enum infinite {
                description
                  "The status-change entries are accumulated
                   infinitely.";
              }
            }
          }
          default "32";
          description
            "The 'status-change' entries are kept in a circular list
             per alarm.  When this number is exceeded, the oldest
             status change entry is automatically removed.  If the
             value is 'infinite', the status-change entries are
             accumulated infinitely.";
        }
        leaf notify-status-changes {
          type enumeration {
            enum all-state-changes {
              description
                "Send notifications for all status changes.";
            }
            enum raise-and-clear {
              description
                "Send notifications only for raise, clear, and
                 re-raise.  Notifications for severity-level changes or
                 alarm-text changes are not sent.";
            }
            enum severity-level {
        
              description
                "Only send notifications for alarm-state changes
                 crossing the level specified in
                 'notify-severity-level'.  Always send clear
                 notifications.";
            }
          }
          must '. != "severity-level" or ../notify-severity-level' {
            description
              "When notify-status-changes is 'severity-level', a value
               must be given for 'notify-severity-level'.";
          }
          default "all-state-changes";
          description
            "This leaf controls the notifications sent for alarm status
             updates.  There are three options:
        
              description
                "Only send notifications for alarm-state changes
                 crossing the level specified in
                 'notify-severity-level'.  Always send clear
                 notifications.";
            }
          }
          must '. != "severity-level" or ../notify-severity-level' {
            description
              "When notify-status-changes is 'severity-level', a value
               must be given for 'notify-severity-level'.";
          }
          default "all-state-changes";
          description
            "This leaf controls the notifications sent for alarm status
             updates.  There are three options:
        

1. Notifications are sent for all updates, severity-level changes, and alarm-text changes.

1. 发送所有更新、严重性级别更改和报警文本更改的通知。

2. Notifications are only sent for alarm raise and clear.

2. 通知仅在报警升高和清除时发送。

3. Notifications are sent for status changes equal to or above the specified severity level. Clear notifications shall always be sent. Notifications shall also be sent for state changes that make an alarm less severe than the specified level.

3. 对于等于或高于指定严重性级别的状态更改,将发送通知。应始终发送明确的通知。还应发送状态变化通知,以使警报的严重程度低于规定水平。

For example, in option 3, assume that the severity level is set to major and that the alarm has the following state changes:

例如,在选项3中,假设严重性级别设置为“主要”,并且报警具有以下状态更改:

             [(Time, severity, clear)]:
             [(T1, major, -), (T2, minor, -), (T3, warning, -),
              (T4, minor, -), (T5, major, -), (T6, critical, -),
              (T7, major.  -), (T8, major, clear)]
        
             [(Time, severity, clear)]:
             [(T1, major, -), (T2, minor, -), (T3, warning, -),
              (T4, minor, -), (T5, major, -), (T6, critical, -),
              (T7, major.  -), (T8, major, clear)]
        
             In that case, notifications will be sent at times
             T1, T2, T5, T6, T7, and T8.";
        }
        leaf notify-severity-level {
          when '../notify-status-changes = "severity-level"';
          type severity;
          description
            "Only send notifications for alarm-state changes crossing
             the specified level.  Always send clear notifications.";
        }
        container alarm-shelving {
        
             In that case, notifications will be sent at times
             T1, T2, T5, T6, T7, and T8.";
        }
        leaf notify-severity-level {
          when '../notify-status-changes = "severity-level"';
          type severity;
          description
            "Only send notifications for alarm-state changes crossing
             the specified level.  Always send clear notifications.";
        }
        container alarm-shelving {
        

if-feature "alarm-shelving"; description "The 'alarm-shelving/shelf' list is used to shelve (block/filter) alarms. The conditions in the shelf criteria are logically ANDed. The first matching shelf is used, and an alarm is shelved only for this first match. Matching alarms MUST appear in the /alarms/shelved-alarms/shelved-alarm list, and non-matching /alarms MUST appear in the /alarms/alarm-list/alarm list. The server does not send any notifications for shelved alarms.

如果具有“报警搁置”功能;说明“报警搁置/搁置”列表用于搁置(阻止/过滤)报警。工具架条件中的条件在逻辑上为and。使用第一个匹配的工具架,并且仅针对第一个匹配项搁置报警。匹配的报警必须出现在/alarms/shelved alarms/shelved alarms list中,不匹配的/报警必须出现在/alarms/alarm list/alarm list中。服务器不发送任何报警通知或搁置警报。

The server MUST maintain states (e.g., severity changes) for the shelved alarms.

服务器必须维护搁置警报的状态(例如,严重性更改)。

             Alarms that match the criteria shall have an
             operator state 'shelved'.  When the shelf
             configuration removes an alarm from the shelf, the server
             shall add the operator state 'un-shelved'.";
          list shelf {
            key "name";
            ordered-by user;
            leaf name {
              type string;
              description
                "An arbitrary name for the alarm shelf.";
            }
            description
              "Each entry defines the criteria for shelving alarms.
               Criteria are ANDed.  If no criteria are specified,
               all alarms will be shelved.";
            leaf-list resource {
              type resource-match;
              description
                "Shelve alarms for matching resources.";
            }
            list alarm-type {
              key "alarm-type-id alarm-type-qualifier-match";
              description
                "Any alarm matching the combined criteria of
                 'alarm-type-id' and 'alarm-type-qualifier-match'
                 MUST be matched.";
              leaf alarm-type-id {
                type alarm-type-id;
                description
                  "Shelve all alarms that have an 'alarm-type-id' that
                   is equal to or derived from the given
                   'alarm-type-id'.";
        
             Alarms that match the criteria shall have an
             operator state 'shelved'.  When the shelf
             configuration removes an alarm from the shelf, the server
             shall add the operator state 'un-shelved'.";
          list shelf {
            key "name";
            ordered-by user;
            leaf name {
              type string;
              description
                "An arbitrary name for the alarm shelf.";
            }
            description
              "Each entry defines the criteria for shelving alarms.
               Criteria are ANDed.  If no criteria are specified,
               all alarms will be shelved.";
            leaf-list resource {
              type resource-match;
              description
                "Shelve alarms for matching resources.";
            }
            list alarm-type {
              key "alarm-type-id alarm-type-qualifier-match";
              description
                "Any alarm matching the combined criteria of
                 'alarm-type-id' and 'alarm-type-qualifier-match'
                 MUST be matched.";
              leaf alarm-type-id {
                type alarm-type-id;
                description
                  "Shelve all alarms that have an 'alarm-type-id' that
                   is equal to or derived from the given
                   'alarm-type-id'.";
        
              }
              leaf alarm-type-qualifier-match {
                type string;
                description
                  "An XML Schema regular expression that is used to
                   match an alarm type qualifier.  Shelve all alarms
                   that match this regular expression for the alarm
                   type qualifier.";
                reference
                  "XML Schema Part 2: Datatypes Second Edition,
                     World Wide Web Consortium Recommendation
                     REC-xmlschema-2-20041028";
              }
            }
            leaf description {
              type string;
              description
                "An optional textual description of the shelf.  This
                 description should include the reason for shelving
                 these alarms.";
            }
          }
        }
      }
      container alarm-inventory {
        config false;
        description
          "The 'alarm-inventory/alarm-type' list contains all possible
           alarm types for the system.
        
              }
              leaf alarm-type-qualifier-match {
                type string;
                description
                  "An XML Schema regular expression that is used to
                   match an alarm type qualifier.  Shelve all alarms
                   that match this regular expression for the alarm
                   type qualifier.";
                reference
                  "XML Schema Part 2: Datatypes Second Edition,
                     World Wide Web Consortium Recommendation
                     REC-xmlschema-2-20041028";
              }
            }
            leaf description {
              type string;
              description
                "An optional textual description of the shelf.  This
                 description should include the reason for shelving
                 these alarms.";
            }
          }
        }
      }
      container alarm-inventory {
        config false;
        description
          "The 'alarm-inventory/alarm-type' list contains all possible
           alarm types for the system.
        

If the system knows for which resources a specific alarm type can appear, it is also identified in the inventory. The list also tells if each alarm type has a corresponding clear state. The inventory shall only contain concrete alarm types.

如果系统知道特定报警类型可以出现在哪些资源上,则也会在资源清册中进行标识。该列表还说明每种报警类型是否具有相应的清除状态。清单应仅包含具体的报警类型。

           The alarm inventory MUST be updated by the system when new
           alarms can appear.  This can be the case when installing new
           software modules or inserting new card types.  A
           notification 'alarm-inventory-changed' is sent when the
           inventory is changed.";
        list alarm-type {
          key "alarm-type-id alarm-type-qualifier";
          description
            "An entry in this list defines a possible alarm.";
          leaf alarm-type-id {
            type alarm-type-id;
            description
        
           The alarm inventory MUST be updated by the system when new
           alarms can appear.  This can be the case when installing new
           software modules or inserting new card types.  A
           notification 'alarm-inventory-changed' is sent when the
           inventory is changed.";
        list alarm-type {
          key "alarm-type-id alarm-type-qualifier";
          description
            "An entry in this list defines a possible alarm.";
          leaf alarm-type-id {
            type alarm-type-id;
            description
        
              "The statically defined alarm type identifier for this
               possible alarm.";
          }
          leaf alarm-type-qualifier {
            type alarm-type-qualifier;
            description
              "The optionally dynamically defined alarm type identifier
               for this possible alarm.";
          }
          leaf-list resource {
            type resource-match;
            description
              "Optionally, specifies for which resources the alarm type
               is valid.";
          }
          leaf will-clear {
            type boolean;
            mandatory true;
            description
              "This leaf tells the operator if the alarm will be
               cleared when the correct corrective action has been
               taken.  Implementations SHOULD strive for detecting the
               cleared state for all alarm types.
        
              "The statically defined alarm type identifier for this
               possible alarm.";
          }
          leaf alarm-type-qualifier {
            type alarm-type-qualifier;
            description
              "The optionally dynamically defined alarm type identifier
               for this possible alarm.";
          }
          leaf-list resource {
            type resource-match;
            description
              "Optionally, specifies for which resources the alarm type
               is valid.";
          }
          leaf will-clear {
            type boolean;
            mandatory true;
            description
              "This leaf tells the operator if the alarm will be
               cleared when the correct corrective action has been
               taken.  Implementations SHOULD strive for detecting the
               cleared state for all alarm types.
        

If this leaf is 'true', the operator can monitor the alarm until it becomes cleared after the corrective action has been taken.

如果此页为“真”,操作员可以监控报警,直到采取纠正措施后报警被清除。

               If this leaf is 'false', the operator needs to validate
               that the alarm is no longer active using other
               mechanisms.  Alarms can lack a corresponding clear due
               to missing instrumentation or no logical
               corresponding clear state.";
          }
          leaf-list severity-level {
            type severity;
            description
              "This leaf-list indicates the possible severity levels of
               this alarm type.  Note well that 'clear' is not part of
               the severity type.  In general, the severity level
               should be defined by the instrumentation based on the
               dynamic state, rather than being defined statically by
               the alarm type, in order to provide a relevant severity
               level based on dynamic state and context.  However, most
               alarm types have a defined set of possible severity
               levels, and this should be provided here.";
          }
          leaf description {
        
               If this leaf is 'false', the operator needs to validate
               that the alarm is no longer active using other
               mechanisms.  Alarms can lack a corresponding clear due
               to missing instrumentation or no logical
               corresponding clear state.";
          }
          leaf-list severity-level {
            type severity;
            description
              "This leaf-list indicates the possible severity levels of
               this alarm type.  Note well that 'clear' is not part of
               the severity type.  In general, the severity level
               should be defined by the instrumentation based on the
               dynamic state, rather than being defined statically by
               the alarm type, in order to provide a relevant severity
               level based on dynamic state and context.  However, most
               alarm types have a defined set of possible severity
               levels, and this should be provided here.";
          }
          leaf description {
        
            type string;
            mandatory true;
            description
              "A description of the possible alarm.  It SHOULD include
               information on possible underlying root causes and
               corrective actions.";
          }
        }
      }
      container summary {
        if-feature "alarm-summary";
        config false;
        description
          "This container gives a summary of the number of alarms.";
        list alarm-summary {
          key "severity";
          description
            "A global summary of all alarms in the system.  The summary
             does not include shelved alarms.";
          leaf severity {
            type severity;
            description
              "Alarm summary for this severity level.";
          }
          leaf total {
            type yang:gauge32;
            description
              "Total number of alarms of this severity level.";
          }
          leaf not-cleared {
            type yang:gauge32;
            description
              "Total number of alarms of this severity level
               that are not cleared.";
          }
          leaf cleared {
            type yang:gauge32;
            description
              "For this severity level, the number of alarms that are
               cleared.";
          }
          leaf cleared-not-closed {
            if-feature "operator-actions";
            type yang:gauge32;
            description
              "For this severity level, the number of alarms that are
               cleared but not closed.";
          }
        
            type string;
            mandatory true;
            description
              "A description of the possible alarm.  It SHOULD include
               information on possible underlying root causes and
               corrective actions.";
          }
        }
      }
      container summary {
        if-feature "alarm-summary";
        config false;
        description
          "This container gives a summary of the number of alarms.";
        list alarm-summary {
          key "severity";
          description
            "A global summary of all alarms in the system.  The summary
             does not include shelved alarms.";
          leaf severity {
            type severity;
            description
              "Alarm summary for this severity level.";
          }
          leaf total {
            type yang:gauge32;
            description
              "Total number of alarms of this severity level.";
          }
          leaf not-cleared {
            type yang:gauge32;
            description
              "Total number of alarms of this severity level
               that are not cleared.";
          }
          leaf cleared {
            type yang:gauge32;
            description
              "For this severity level, the number of alarms that are
               cleared.";
          }
          leaf cleared-not-closed {
            if-feature "operator-actions";
            type yang:gauge32;
            description
              "For this severity level, the number of alarms that are
               cleared but not closed.";
          }
        
          leaf cleared-closed {
            if-feature "operator-actions";
            type yang:gauge32;
            description
              "For this severity level, the number of alarms that are
               cleared and closed.";
          }
          leaf not-cleared-closed {
            if-feature "operator-actions";
            type yang:gauge32;
            description
              "For this severity level, the number of alarms that are
               not cleared but closed.";
          }
          leaf not-cleared-not-closed {
            if-feature "operator-actions";
            type yang:gauge32;
            description
              "For this severity level, the number of alarms that are
               not cleared and not closed.";
          }
        }
        leaf shelves-active {
          if-feature "alarm-shelving";
          type empty;
          description
            "This is a hint to the operator that there are active
             alarm shelves.  This leaf MUST exist if the
             /alarms/shelved-alarms/number-of-shelved-alarms is > 0.";
        }
      }
      container alarm-list {
        config false;
        description
          "The alarms in the system.";
        leaf number-of-alarms {
          type yang:gauge32;
          description
            "This object shows the total number of
             alarms in the system, i.e., the total number
             of entries in the alarm list.";
        }
        leaf last-changed {
          type yang:date-and-time;
          description
            "A timestamp when the alarm list was last
             changed.  The value can be used by a manager to
             initiate an alarm resynchronization procedure.";
        
          leaf cleared-closed {
            if-feature "operator-actions";
            type yang:gauge32;
            description
              "For this severity level, the number of alarms that are
               cleared and closed.";
          }
          leaf not-cleared-closed {
            if-feature "operator-actions";
            type yang:gauge32;
            description
              "For this severity level, the number of alarms that are
               not cleared but closed.";
          }
          leaf not-cleared-not-closed {
            if-feature "operator-actions";
            type yang:gauge32;
            description
              "For this severity level, the number of alarms that are
               not cleared and not closed.";
          }
        }
        leaf shelves-active {
          if-feature "alarm-shelving";
          type empty;
          description
            "This is a hint to the operator that there are active
             alarm shelves.  This leaf MUST exist if the
             /alarms/shelved-alarms/number-of-shelved-alarms is > 0.";
        }
      }
      container alarm-list {
        config false;
        description
          "The alarms in the system.";
        leaf number-of-alarms {
          type yang:gauge32;
          description
            "This object shows the total number of
             alarms in the system, i.e., the total number
             of entries in the alarm list.";
        }
        leaf last-changed {
          type yang:date-and-time;
          description
            "A timestamp when the alarm list was last
             changed.  The value can be used by a manager to
             initiate an alarm resynchronization procedure.";
        
        }
        list alarm {
          key "resource alarm-type-id alarm-type-qualifier";
          description
            "The list of alarms.  Each entry in the list holds one
             alarm for a given alarm type and resource.  An alarm can
             be updated from the underlying resource or by the user.
             The following leafs are maintained by the resource:
             'is-cleared', 'last-change', 'perceived-severity', and
             'alarm-text'.  An operator can change 'operator-state' and
             'operator-text'.
        
        }
        list alarm {
          key "resource alarm-type-id alarm-type-qualifier";
          description
            "The list of alarms.  Each entry in the list holds one
             alarm for a given alarm type and resource.  An alarm can
             be updated from the underlying resource or by the user.
             The following leafs are maintained by the resource:
             'is-cleared', 'last-change', 'perceived-severity', and
             'alarm-text'.  An operator can change 'operator-state' and
             'operator-text'.
        

Entries appear in the alarm list the first time an alarm becomes active for a given alarm type and resource. Entries do not get deleted when the alarm is cleared. Clear status is represented as a boolean flag.

当给定报警类型和资源的报警第一次激活时,报警列表中会出现条目。清除报警后,条目不会被删除。清除状态表示为布尔标志。

Alarm entries are removed, i.e., purged, from the list by an explicit purge action. For example, purge all alarms that are cleared and in closed operator state that are older than 24 hours. Purged alarms are removed from the alarm list. If the alarm resource state changes after a purge, the alarm will reappear in the alarm list.

通过显式清除操作从列表中删除(即清除)报警条目。例如,清除所有已清除且处于关闭操作员状态且超过24小时的报警。清除的报警将从报警列表中删除。如果清除后报警资源状态发生变化,报警将重新出现在报警列表中。

             Systems may also remove alarms based on locally configured
             policies; this is out of scope for this module.";
          uses common-alarm-parameters;
          leaf time-created {
            type yang:date-and-time;
            mandatory true;
            description
              "The timestamp when this alarm entry was created.  This
               represents the first time the alarm appeared; it can
               also represent that the alarm reappeared after a purge.
               Further state changes of the same alarm do not change
               this leaf; these changes will update the 'last-changed'
               leaf.";
          }
          uses resource-alarm-parameters;
          list operator-state-change {
            if-feature "operator-actions";
            key "time";
            description
              "This list is used by operators to indicate the state of
               human intervention on an alarm.  For example, if an
               operator has seen an alarm, the operator can add a new
               item to this list indicating that the alarm is
               acknowledged.";
        
             Systems may also remove alarms based on locally configured
             policies; this is out of scope for this module.";
          uses common-alarm-parameters;
          leaf time-created {
            type yang:date-and-time;
            mandatory true;
            description
              "The timestamp when this alarm entry was created.  This
               represents the first time the alarm appeared; it can
               also represent that the alarm reappeared after a purge.
               Further state changes of the same alarm do not change
               this leaf; these changes will update the 'last-changed'
               leaf.";
          }
          uses resource-alarm-parameters;
          list operator-state-change {
            if-feature "operator-actions";
            key "time";
            description
              "This list is used by operators to indicate the state of
               human intervention on an alarm.  For example, if an
               operator has seen an alarm, the operator can add a new
               item to this list indicating that the alarm is
               acknowledged.";
        
            uses operator-parameters;
          }
          action set-operator-state {
            if-feature "operator-actions";
            description
              "This is a means for the operator to indicate the level
               of human intervention on an alarm.";
            input {
              leaf state {
                type writable-operator-state;
                mandatory true;
                description
                  "Set this operator state.";
              }
              leaf text {
                type string;
                description
                  "Additional optional textual information.";
              }
            }
          }
          notification operator-action {
            if-feature "operator-actions";
            description
              "This notification is used to report that an operator
               acted upon an alarm.";
            uses operator-parameters;
          }
        }
        action purge-alarms {
          description
            "This operation requests that the server delete entries
             from the alarm list according to the supplied criteria.
        
            uses operator-parameters;
          }
          action set-operator-state {
            if-feature "operator-actions";
            description
              "This is a means for the operator to indicate the level
               of human intervention on an alarm.";
            input {
              leaf state {
                type writable-operator-state;
                mandatory true;
                description
                  "Set this operator state.";
              }
              leaf text {
                type string;
                description
                  "Additional optional textual information.";
              }
            }
          }
          notification operator-action {
            if-feature "operator-actions";
            description
              "This notification is used to report that an operator
               acted upon an alarm.";
            uses operator-parameters;
          }
        }
        action purge-alarms {
          description
            "This operation requests that the server delete entries
             from the alarm list according to the supplied criteria.
        

Typically, this operation is used to delete alarms that are in closed operator state and older than a specified time.

通常,此操作用于删除处于关闭操作员状态且超过指定时间的报警。

             The number of purged alarms is returned as an output
             parameter.";
          input {
            uses filter-input;
          }
          output {
            leaf purged-alarms {
              type uint32;
              description
                "Number of purged alarms.";
        
             The number of purged alarms is returned as an output
             parameter.";
          input {
            uses filter-input;
          }
          output {
            leaf purged-alarms {
              type uint32;
              description
                "Number of purged alarms.";
        
            }
          }
        }
        action compress-alarms {
          if-feature "alarm-history";
          description
            "This operation requests that the server compress
             entries in the alarm list by removing all but the
             latest 'status-change' entry for all matching alarms.
             Conditions in the input are logically ANDed.  If no
             input condition is given, all alarms are compressed.";
          input {
            leaf resource {
              type resource-match;
              description
                "Compress the alarms matching this resource.";
            }
            leaf alarm-type-id {
              type leafref {
                path "/alarms/alarm-list/alarm/alarm-type-id";
                require-instance false;
              }
              description
                "Compress alarms with this 'alarm-type-id'.";
            }
            leaf alarm-type-qualifier {
              type leafref {
                path "/alarms/alarm-list/alarm/alarm-type-qualifier";
                require-instance false;
              }
              description
                "Compress the alarms with this
                 'alarm-type-qualifier'.";
            }
          }
          output {
            leaf compressed-alarms {
              type uint32;
              description
                "Number of compressed alarm entries.";
            }
          }
        }
      }
      container shelved-alarms {
        if-feature "alarm-shelving";
        config false;
        description
        
            }
          }
        }
        action compress-alarms {
          if-feature "alarm-history";
          description
            "This operation requests that the server compress
             entries in the alarm list by removing all but the
             latest 'status-change' entry for all matching alarms.
             Conditions in the input are logically ANDed.  If no
             input condition is given, all alarms are compressed.";
          input {
            leaf resource {
              type resource-match;
              description
                "Compress the alarms matching this resource.";
            }
            leaf alarm-type-id {
              type leafref {
                path "/alarms/alarm-list/alarm/alarm-type-id";
                require-instance false;
              }
              description
                "Compress alarms with this 'alarm-type-id'.";
            }
            leaf alarm-type-qualifier {
              type leafref {
                path "/alarms/alarm-list/alarm/alarm-type-qualifier";
                require-instance false;
              }
              description
                "Compress the alarms with this
                 'alarm-type-qualifier'.";
            }
          }
          output {
            leaf compressed-alarms {
              type uint32;
              description
                "Number of compressed alarm entries.";
            }
          }
        }
      }
      container shelved-alarms {
        if-feature "alarm-shelving";
        config false;
        description
        
          "The shelved alarms.  Alarms appear here if they match the
           criteria in /alarms/control/alarm-shelving.  This list does
           not generate any notifications.  The list represents alarms
           that are considered not relevant by the operator.  Alarms in
           this list have an 'operator-state' of 'shelved'.  This
           cannot be changed.";
        leaf number-of-shelved-alarms {
          type yang:gauge32;
          description
            "This object shows the total number of current
             alarms, i.e., the total number of entries
             in the alarm list.";
        }
        leaf shelved-alarms-last-changed {
          type yang:date-and-time;
          description
            "A timestamp when the shelved-alarm list was last changed.
             The value can be used by a manager to initiate an alarm
             resynchronization procedure.";
        }
        list shelved-alarm {
          key "resource alarm-type-id alarm-type-qualifier";
          description
            "The list of shelved alarms.  Shelved alarms can only be
             updated from the underlying resource; no operator actions
             are supported.";
          uses common-alarm-parameters;
          leaf shelf-name {
            type leafref {
              path "/alarms/control/alarm-shelving/shelf/name";
              require-instance false;
            }
            description
              "The name of the shelf.";
          }
          uses resource-alarm-parameters;
          list operator-state-change {
            if-feature "operator-actions";
            key "time";
            description
              "This list is used by operators to indicate the state of
               human intervention on an alarm.  For shelved alarms, the
               system has set the list item in the list to 'shelved'.";
            uses operator-parameters;
          }
        }
        action purge-shelved-alarms {
          description
        
          "The shelved alarms.  Alarms appear here if they match the
           criteria in /alarms/control/alarm-shelving.  This list does
           not generate any notifications.  The list represents alarms
           that are considered not relevant by the operator.  Alarms in
           this list have an 'operator-state' of 'shelved'.  This
           cannot be changed.";
        leaf number-of-shelved-alarms {
          type yang:gauge32;
          description
            "This object shows the total number of current
             alarms, i.e., the total number of entries
             in the alarm list.";
        }
        leaf shelved-alarms-last-changed {
          type yang:date-and-time;
          description
            "A timestamp when the shelved-alarm list was last changed.
             The value can be used by a manager to initiate an alarm
             resynchronization procedure.";
        }
        list shelved-alarm {
          key "resource alarm-type-id alarm-type-qualifier";
          description
            "The list of shelved alarms.  Shelved alarms can only be
             updated from the underlying resource; no operator actions
             are supported.";
          uses common-alarm-parameters;
          leaf shelf-name {
            type leafref {
              path "/alarms/control/alarm-shelving/shelf/name";
              require-instance false;
            }
            description
              "The name of the shelf.";
          }
          uses resource-alarm-parameters;
          list operator-state-change {
            if-feature "operator-actions";
            key "time";
            description
              "This list is used by operators to indicate the state of
               human intervention on an alarm.  For shelved alarms, the
               system has set the list item in the list to 'shelved'.";
            uses operator-parameters;
          }
        }
        action purge-shelved-alarms {
          description
        

"This operation requests that the server delete entries from the shelved-alarm list according to the supplied criteria. In the shelved-alarm list, it makes sense to delete alarms that are not relevant anymore.

“此操作要求服务器根据提供的条件从搁置报警列表中删除条目。在搁置报警列表中,删除不再相关的报警是有意义的。

             The number of purged alarms is returned as an output
             parameter.";
          input {
            uses filter-input;
          }
          output {
            leaf purged-alarms {
              type uint32;
              description
                "Number of purged alarms.";
            }
          }
        }
        action compress-shelved-alarms {
          if-feature "alarm-history";
          description
            "This operation requests that the server compress entries
             in the shelved-alarm list by removing all but the latest
             'status-change' entry for all matching shelved alarms.
             Conditions in the input are logically ANDed.  If no input
             condition is given, all alarms are compressed.";
          input {
            leaf resource {
              type leafref {
                path "/alarms/shelved-alarms/shelved-alarm/resource";
                require-instance false;
              }
              description
                "Compress the alarms with this resource.";
            }
            leaf alarm-type-id {
              type leafref {
                path "/alarms/shelved-alarms/shelved-alarm"
                   + "/alarm-type-id";
                require-instance false;
              }
              description
                "Compress alarms with this 'alarm-type-id'.";
            }
            leaf alarm-type-qualifier {
              type leafref {
                path "/alarms/shelved-alarms/shelved-alarm"
                   + "/alarm-type-qualifier";
        
             The number of purged alarms is returned as an output
             parameter.";
          input {
            uses filter-input;
          }
          output {
            leaf purged-alarms {
              type uint32;
              description
                "Number of purged alarms.";
            }
          }
        }
        action compress-shelved-alarms {
          if-feature "alarm-history";
          description
            "This operation requests that the server compress entries
             in the shelved-alarm list by removing all but the latest
             'status-change' entry for all matching shelved alarms.
             Conditions in the input are logically ANDed.  If no input
             condition is given, all alarms are compressed.";
          input {
            leaf resource {
              type leafref {
                path "/alarms/shelved-alarms/shelved-alarm/resource";
                require-instance false;
              }
              description
                "Compress the alarms with this resource.";
            }
            leaf alarm-type-id {
              type leafref {
                path "/alarms/shelved-alarms/shelved-alarm"
                   + "/alarm-type-id";
                require-instance false;
              }
              description
                "Compress alarms with this 'alarm-type-id'.";
            }
            leaf alarm-type-qualifier {
              type leafref {
                path "/alarms/shelved-alarms/shelved-alarm"
                   + "/alarm-type-qualifier";
        
                require-instance false;
              }
              description
                "Compress the alarms with this
                 'alarm-type-qualifier'.";
            }
          }
          output {
            leaf compressed-alarms {
              type uint32;
              description
                "Number of compressed alarm entries.";
            }
          }
        }
      }
      list alarm-profile {
        if-feature "alarm-profile";
        key "alarm-type-id alarm-type-qualifier-match resource";
        ordered-by user;
        description
          "This list is used to assign further information or
           configuration for each alarm type.  This module supports a
           mechanism where the client can override the system-default
           alarm severity levels.  The 'alarm-profile' is also a useful
           augmentation point for specific additions to alarm types.";
        leaf alarm-type-id {
          type alarm-type-id;
          description
            "The alarm type identifier to match.";
        }
        leaf alarm-type-qualifier-match {
          type string;
          description
            "An XML Schema regular expression that is used to match the
             alarm type qualifier.";
          reference
            "XML Schema Part 2: Datatypes Second Edition,
               World Wide Web Consortium Recommendation
               REC-xmlschema-2-20041028";
        }
        leaf resource {
          type resource-match;
          description
            "Specifies which resources to match.";
        }
        leaf description {
          type string;
        
                require-instance false;
              }
              description
                "Compress the alarms with this
                 'alarm-type-qualifier'.";
            }
          }
          output {
            leaf compressed-alarms {
              type uint32;
              description
                "Number of compressed alarm entries.";
            }
          }
        }
      }
      list alarm-profile {
        if-feature "alarm-profile";
        key "alarm-type-id alarm-type-qualifier-match resource";
        ordered-by user;
        description
          "This list is used to assign further information or
           configuration for each alarm type.  This module supports a
           mechanism where the client can override the system-default
           alarm severity levels.  The 'alarm-profile' is also a useful
           augmentation point for specific additions to alarm types.";
        leaf alarm-type-id {
          type alarm-type-id;
          description
            "The alarm type identifier to match.";
        }
        leaf alarm-type-qualifier-match {
          type string;
          description
            "An XML Schema regular expression that is used to match the
             alarm type qualifier.";
          reference
            "XML Schema Part 2: Datatypes Second Edition,
               World Wide Web Consortium Recommendation
               REC-xmlschema-2-20041028";
        }
        leaf resource {
          type resource-match;
          description
            "Specifies which resources to match.";
        }
        leaf description {
          type string;
        
          mandatory true;
          description
            "A description of the alarm profile.";
        }
        container alarm-severity-assignment-profile {
          if-feature "severity-assignment";
          description
            "The client can override the system-default severity
             level.";
          reference
            "ITU-T Recommendation M.3100:
               Generic network information model
             ITU-T Recommendation M.3160:
               Generic, protocol-neutral management information model";
          leaf-list severity-level {
            type severity;
            ordered-by user;
            description
              "Specifies the configured severity level(s) for the
               matching alarm.  If the alarm has several severity
               levels, the leaf-list shall be given in rising severity
               order.  The original M3100/M3160 ASAP function only
               allows for a one-to-one mapping between alarm type and
               severity, but since YANG module supports stateful
               alarms, the mapping must allow for several severity
               levels.
        
          mandatory true;
          description
            "A description of the alarm profile.";
        }
        container alarm-severity-assignment-profile {
          if-feature "severity-assignment";
          description
            "The client can override the system-default severity
             level.";
          reference
            "ITU-T Recommendation M.3100:
               Generic network information model
             ITU-T Recommendation M.3160:
               Generic, protocol-neutral management information model";
          leaf-list severity-level {
            type severity;
            ordered-by user;
            description
              "Specifies the configured severity level(s) for the
               matching alarm.  If the alarm has several severity
               levels, the leaf-list shall be given in rising severity
               order.  The original M3100/M3160 ASAP function only
               allows for a one-to-one mapping between alarm type and
               severity, but since YANG module supports stateful
               alarms, the mapping must allow for several severity
               levels.
        
               Assume a high-utilization alarm type with two thresholds
               with the system-default severity levels of threshold1 =
               warning and threshold2 = minor.  Setting this leaf-list
               to (minor, major) will assign the severity levels as
               threshold1 = minor and threshold2 = major";
          }
        }
      }
    }
        
               Assume a high-utilization alarm type with two thresholds
               with the system-default severity levels of threshold1 =
               warning and threshold2 = minor.  Setting this leaf-list
               to (minor, major) will assign the severity levels as
               threshold1 = minor and threshold2 = major";
          }
        }
      }
    }
        
    /*
     * Notifications
     */
        
    /*
     * Notifications
     */
        
    notification alarm-notification {
      description
        "This notification is used to report a state change for an
         alarm.  The same notification is used for reporting a newly
         raised alarm, a cleared alarm, or changing the text and/or
         severity of an existing alarm.";
      uses common-alarm-parameters;
        
    notification alarm-notification {
      description
        "This notification is used to report a state change for an
         alarm.  The same notification is used for reporting a newly
         raised alarm, a cleared alarm, or changing the text and/or
         severity of an existing alarm.";
      uses common-alarm-parameters;
        
      uses alarm-state-change-parameters;
    }
        
      uses alarm-state-change-parameters;
    }
        
    notification alarm-inventory-changed {
      description
        "This notification is used to report that the list of possible
         alarms has changed.  This can happen when, for example, a new
         software module is installed or a new physical card is
         inserted.";
    }
  }
  <CODE ENDS>
        
    notification alarm-inventory-changed {
      description
        "This notification is used to report that the list of possible
         alarms has changed.  This can happen when, for example, a new
         software module is installed or a new physical card is
         inserted.";
    }
  }
  <CODE ENDS>
        
7. The X.733 Mapping Module
7. X.733映射模块

Many alarm systems are based on the X.733 [X.733] and X.736 [X.736] alarm standards. This module "ietf-alarms-x733" augments the alarm inventory, the alarm lists, and the alarm notification with X.733 and X.736 parameters.

许多报警系统基于X.733[X.733]和X.736[X.736]报警标准。该模块“ietf-alarms-x733”使用X.733和X.736参数扩充了报警清单、报警列表和报警通知。

The module also supports a feature whereby the alarm manager can configure the mapping from alarm types to X.733 "event-type" and "probable-cause" parameters. This might be needed when the default mapping provided by the system is in conflict with other management systems or not considered correct.

该模块还支持报警管理器配置从报警类型到X.733“事件类型”和“可能原因”参数的映射的功能。当系统提供的默认映射与其他管理系统冲突或被认为不正确时,可能需要这样做。

Note that the term "resource" in this document is synonymous to the ITU term "managed object".

请注意,本文件中的术语“资源”与ITU术语“托管对象”同义。

This YANG module references [RFC6991], [X.721], [X.733], and [X.736].

此模块参考[RFC6991]、[X.721]、[X.733]和[X.736]。

   <CODE BEGINS> file "ietf-alarms-x733@2019-09-11.yang"
   module ietf-alarms-x733 {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-alarms-x733";
     prefix x733;
        
   <CODE BEGINS> file "ietf-alarms-x733@2019-09-11.yang"
   module ietf-alarms-x733 {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-alarms-x733";
     prefix x733;
        
     import ietf-alarms {
       prefix al;
     }
     import ietf-yang-types {
       prefix yang;
       reference
         "RFC 6991: Common YANG Data Types";
     }
        
     import ietf-alarms {
       prefix al;
     }
     import ietf-yang-types {
       prefix yang;
       reference
         "RFC 6991: Common YANG Data Types";
     }
        

organization "IETF CCAMP Working Group";

组织“IETF CCAMP工作组”;

     contact
       "WG Web:   <https://trac.ietf.org/trac/ccamp>
        WG List:  <mailto:ccamp@ietf.org>
        
     contact
       "WG Web:   <https://trac.ietf.org/trac/ccamp>
        WG List:  <mailto:ccamp@ietf.org>
        
        Editor:   Stefan Vallin
                  <mailto:stefan@wallan.se>
        
        Editor:   Stefan Vallin
                  <mailto:stefan@wallan.se>
        

Editor: Martin Bjorklund <mailto:mbj@tail-f.com>"; description "This module augments the ietf-alarms module with X.733 alarm parameters.

编辑:Martin Bjorklund<mailto:mbj@tail-f、 com>“说明”此模块使用X.733报警参数扩充ietf报警模块。

The following structures are augmented with the X.733 event type and probable cause:

以下结构增加了X.733事件类型和可能原因:

1) alarms/alarm-inventory: all possible alarm types 2) alarms/alarm-list: every alarm in the system 3) alarm-notification: notifications indicating alarm-state changes 4) alarms/shelved-alarms

1) 警报/警报清单:所有可能的警报类型2)警报/警报列表:系统中的每个警报3)警报通知:指示警报状态更改的通知4)警报/搁置警报

The module also optionally allows the alarm-management system to configure the mapping from the ietf-alarms' alarm keys to the ITU tuple (event-type, probable-cause).

该模块还可选地允许报警管理系统配置从ietf报警键到ITU元组(事件类型、可能原因)的映射。

The mapping does not include a corresponding problem value specific to X.733. The recommendation is to use the 'alarm-type-qualifier' leaf, which serves the same purpose.

映射不包括特定于X.733的相应问题值。建议使用“报警类型限定符”叶,其用途相同。

The module uses an integer and a corresponding string for probable cause instead of a globally defined enumeration, in order to be able to manage conflicting enumeration definitions. A single globally defined enumeration is challenging to maintain.

为了能够管理冲突的枚举定义,模块使用整数和对应的字符串作为可能原因,而不是全局定义的枚举。单个全局定义的枚举很难维护。

The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document are to be interpreted as described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here.

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“建议”、“不建议”、“可能”和“可选”在所有大写字母出现时(如图所示)应按照BCP 14(RFC 2119)(RFC 8174)所述进行解释。

Copyright (c) 2019 IETF Trust and the persons identified as authors of the code. All rights reserved.

版权(c)2019 IETF信托基金和被认定为代码作者的人员。版权所有。

Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Simplified BSD License set

根据简化BSD许可证集中包含的许可条款,允许以源代码和二进制格式重新分发和使用,无论是否进行修改

forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info).

IETF信托法律条款第4.c节中关于IETF文件的第四条(https://trustee.ietf.org/license-info).

        This version of this YANG module is part of RFC 8632; see
        the RFC itself for full legal notices.";
     reference
       "ITU-T Recommendation X.733: Information Technology
          - Open Systems Interconnection
          - System Management: Alarm Reporting Function";
        
        This version of this YANG module is part of RFC 8632; see
        the RFC itself for full legal notices.";
     reference
       "ITU-T Recommendation X.733: Information Technology
          - Open Systems Interconnection
          - System Management: Alarm Reporting Function";
        
     revision 2019-09-11 {
       description
         "Initial revision.";
       reference
         "RFC 8632: A YANG Data Model for Alarm Management";
     }
        
     revision 2019-09-11 {
       description
         "Initial revision.";
       reference
         "RFC 8632: A YANG Data Model for Alarm Management";
     }
        
     /*
      * Features
      */
        
     /*
      * Features
      */
        
     feature configure-x733-mapping {
       description
         "The system supports configurable X733 mapping from
          the ietf-alarms' alarm-type to X733 event-type
          and probable-cause.";
     }
        
     feature configure-x733-mapping {
       description
         "The system supports configurable X733 mapping from
          the ietf-alarms' alarm-type to X733 event-type
          and probable-cause.";
     }
        
     /*
      * Typedefs
      */
        
     /*
      * Typedefs
      */
        
     typedef event-type {
       type enumeration {
         enum other {
           value 1;
           description
             "None of the below.";
         }
         enum communications-alarm {
           value 2;
           description
             "An alarm of this type is principally associated with the
              procedures and/or processes required to convey
              information from one point to another.";
         }
         enum quality-of-service-alarm {
        
     typedef event-type {
       type enumeration {
         enum other {
           value 1;
           description
             "None of the below.";
         }
         enum communications-alarm {
           value 2;
           description
             "An alarm of this type is principally associated with the
              procedures and/or processes required to convey
              information from one point to another.";
         }
         enum quality-of-service-alarm {
        
           value 3;
           description
             "An alarm of this type is principally associated with a
              degradation in the quality of a service.";
         }
         enum processing-error-alarm {
           value 4;
           description
             "An alarm of this type is principally associated with a
              software or processing fault.";
         }
         enum equipment-alarm {
           value 5;
           description
             "An alarm of this type is principally associated with an
              equipment fault.";
         }
         enum environmental-alarm {
           value 6;
           description
             "An alarm of this type is principally associated with a
              condition relating to an enclosure in which the equipment
              resides.";
         }
         enum integrity-violation {
           value 7;
           description
             "An indication that information may have been illegally
              modified, inserted, or deleted.";
         }
         enum operational-violation {
           value 8;
           description
             "An indication that the provision of the requested service
              was not possible due to the unavailability, malfunction,
              or incorrect invocation of the service.";
         }
         enum physical-violation {
           value 9;
           description
             "An indication that a physical resource has been violated
              in a way that suggests a security attack.";
         }
         enum security-service-or-mechanism-violation {
           value 10;
           description
             "An indication that a security attack has been detected by
              a security service or mechanism.";
        
           value 3;
           description
             "An alarm of this type is principally associated with a
              degradation in the quality of a service.";
         }
         enum processing-error-alarm {
           value 4;
           description
             "An alarm of this type is principally associated with a
              software or processing fault.";
         }
         enum equipment-alarm {
           value 5;
           description
             "An alarm of this type is principally associated with an
              equipment fault.";
         }
         enum environmental-alarm {
           value 6;
           description
             "An alarm of this type is principally associated with a
              condition relating to an enclosure in which the equipment
              resides.";
         }
         enum integrity-violation {
           value 7;
           description
             "An indication that information may have been illegally
              modified, inserted, or deleted.";
         }
         enum operational-violation {
           value 8;
           description
             "An indication that the provision of the requested service
              was not possible due to the unavailability, malfunction,
              or incorrect invocation of the service.";
         }
         enum physical-violation {
           value 9;
           description
             "An indication that a physical resource has been violated
              in a way that suggests a security attack.";
         }
         enum security-service-or-mechanism-violation {
           value 10;
           description
             "An indication that a security attack has been detected by
              a security service or mechanism.";
        
         }
         enum time-domain-violation {
           value 11;
           description
             "An indication that an event has occurred at an unexpected
              or prohibited time.";
         }
       }
       description
         "The event types as defined by X.733 and X.736.";
       reference
         "ITU-T Recommendation X.733: Information Technology
            - Open Systems Interconnection
            - System Management: Alarm Reporting Function
          ITU-T Recommendation X.736: Information Technology
            - Open Systems Interconnection
            - System Management: Security Alarm Reporting Function";
     }
        
         }
         enum time-domain-violation {
           value 11;
           description
             "An indication that an event has occurred at an unexpected
              or prohibited time.";
         }
       }
       description
         "The event types as defined by X.733 and X.736.";
       reference
         "ITU-T Recommendation X.733: Information Technology
            - Open Systems Interconnection
            - System Management: Alarm Reporting Function
          ITU-T Recommendation X.736: Information Technology
            - Open Systems Interconnection
            - System Management: Security Alarm Reporting Function";
     }
        
     typedef trend {
       type enumeration {
         enum less-severe {
           description
             "There is at least one outstanding alarm of a
              severity higher (more severe) than that in the
              current alarm.";
         }
         enum no-change {
           description
             "The Perceived severity reported in the current
              alarm is the same as the highest (most severe)
              of any of the outstanding alarms";
         }
         enum more-severe {
           description
             "The Perceived severity in the current alarm is
              higher (more severe) than that reported in any
              of the outstanding alarms.";
         }
       }
       description
         "This type is used to describe the
          severity trend of the alarming resource.";
       reference
         "ITU-T Recommendation X.721: Information Technology
             - Open Systems Interconnection
             - Structure of management information:
               Definition of management information
        
     typedef trend {
       type enumeration {
         enum less-severe {
           description
             "There is at least one outstanding alarm of a
              severity higher (more severe) than that in the
              current alarm.";
         }
         enum no-change {
           description
             "The Perceived severity reported in the current
              alarm is the same as the highest (most severe)
              of any of the outstanding alarms";
         }
         enum more-severe {
           description
             "The Perceived severity in the current alarm is
              higher (more severe) than that reported in any
              of the outstanding alarms.";
         }
       }
       description
         "This type is used to describe the
          severity trend of the alarming resource.";
       reference
         "ITU-T Recommendation X.721: Information Technology
             - Open Systems Interconnection
             - Structure of management information:
               Definition of management information
        
               Module Attribute-ASN1Module";
     }
        
               Module Attribute-ASN1Module";
     }
        
     typedef value-type {
       type union {
         type int64;
         type uint64;
         type decimal64 {
           fraction-digits 2;
         }
       }
       description
         "A generic union type to match the ITU choice of
          integer and real.";
     }
        
     typedef value-type {
       type union {
         type int64;
         type uint64;
         type decimal64 {
           fraction-digits 2;
         }
       }
       description
         "A generic union type to match the ITU choice of
          integer and real.";
     }
        
     /*
      * Groupings
      */
        
     /*
      * Groupings
      */
        
     grouping x733-alarm-parameters {
       description
         "Common X.733 parameters for alarms.";
       leaf event-type {
         type event-type;
         description
           "The X.733/X.736 event type for this alarm.";
       }
       leaf probable-cause {
         type uint32;
         description
           "The X.733 probable cause for this alarm.";
       }
       leaf probable-cause-string {
         type string;
         description
           "The user-friendly string matching
            the probable cause integer value.  The string
            SHOULD match the X.733 enumeration.  For example,
            value 27 is 'localNodeTransmissionError'.";
       }
       container threshold-information {
         description
           "This parameter shall be present when the alarm
            is a result of crossing a threshold. ";
         leaf triggered-threshold {
           type string;
           description
        
     grouping x733-alarm-parameters {
       description
         "Common X.733 parameters for alarms.";
       leaf event-type {
         type event-type;
         description
           "The X.733/X.736 event type for this alarm.";
       }
       leaf probable-cause {
         type uint32;
         description
           "The X.733 probable cause for this alarm.";
       }
       leaf probable-cause-string {
         type string;
         description
           "The user-friendly string matching
            the probable cause integer value.  The string
            SHOULD match the X.733 enumeration.  For example,
            value 27 is 'localNodeTransmissionError'.";
       }
       container threshold-information {
         description
           "This parameter shall be present when the alarm
            is a result of crossing a threshold. ";
         leaf triggered-threshold {
           type string;
           description
        
             "The identifier of the threshold attribute that
              caused the notification.";
         }
         leaf observed-value {
           type value-type;
           description
             "The value of the gauge or counter that crossed
              the threshold.  This may be different from the
              threshold value if, for example, the gauge may
              only take on discrete values.";
         }
         choice threshold-level {
           description
             "In the case of a gauge, the threshold level specifies
              a pair of threshold values: the first is the value
              of the crossed threshold, and the second is its
              corresponding hysteresis; in the case of a counter,
              the threshold level specifies only the threshold
              value.";
           case up {
             leaf up-high {
               type value-type;
               description
                 "The going-up threshold for raising the alarm.";
             }
             leaf up-low {
               type value-type;
               description
                 "The going-down threshold for clearing the alarm.
                  This is used for hysteresis functions for gauges.";
             }
           }
           case down {
             leaf down-low {
               type value-type;
               description
                 "The going-down threshold for raising the alarm.";
             }
             leaf down-high {
               type value-type;
               description
                 "The going-up threshold for clearing the alarm.
                  This is used for hysteresis functions for gauges.";
             }
           }
         }
         leaf arm-time {
           type yang:date-and-time;
        
             "The identifier of the threshold attribute that
              caused the notification.";
         }
         leaf observed-value {
           type value-type;
           description
             "The value of the gauge or counter that crossed
              the threshold.  This may be different from the
              threshold value if, for example, the gauge may
              only take on discrete values.";
         }
         choice threshold-level {
           description
             "In the case of a gauge, the threshold level specifies
              a pair of threshold values: the first is the value
              of the crossed threshold, and the second is its
              corresponding hysteresis; in the case of a counter,
              the threshold level specifies only the threshold
              value.";
           case up {
             leaf up-high {
               type value-type;
               description
                 "The going-up threshold for raising the alarm.";
             }
             leaf up-low {
               type value-type;
               description
                 "The going-down threshold for clearing the alarm.
                  This is used for hysteresis functions for gauges.";
             }
           }
           case down {
             leaf down-low {
               type value-type;
               description
                 "The going-down threshold for raising the alarm.";
             }
             leaf down-high {
               type value-type;
               description
                 "The going-up threshold for clearing the alarm.
                  This is used for hysteresis functions for gauges.";
             }
           }
         }
         leaf arm-time {
           type yang:date-and-time;
        
           description
             "For a gauge threshold, it's the time at which the
              threshold was last re-armed; namely, it's the time after
              the previous threshold crossing at which the hysteresis
              value of the threshold was exceeded, thus again permitting
              the generation of notifications when the threshold is
              crossed.  For a counter threshold, it's the later of the
              time at which the threshold offset was last applied or the
              counter was last initialized (for resettable counters).";
         }
       }
       list monitored-attributes {
         uses attribute;
         key "id";
         description
           "The Monitored attributes parameter, when present, defines
            one or more attributes of the resource and their
            corresponding values at the time of the alarm.";
       }
       leaf-list proposed-repair-actions {
         type string;
         description
           "This parameter, when present, is used if the cause is
            known and the system being managed can suggest one or
            more solutions (such as switch in standby equipment,
            retry, and replace media).";
       }
       leaf trend-indication {
         type trend;
         description
           "This parameter specifies the current severity
            trend of the resource.  If present, it indicates
            that there are one or more alarms ('outstanding
            alarms') that have not been cleared and that
            pertain to the same resource as this alarm
            ('current alarm') does.  The possible values are:
        
           description
             "For a gauge threshold, it's the time at which the
              threshold was last re-armed; namely, it's the time after
              the previous threshold crossing at which the hysteresis
              value of the threshold was exceeded, thus again permitting
              the generation of notifications when the threshold is
              crossed.  For a counter threshold, it's the later of the
              time at which the threshold offset was last applied or the
              counter was last initialized (for resettable counters).";
         }
       }
       list monitored-attributes {
         uses attribute;
         key "id";
         description
           "The Monitored attributes parameter, when present, defines
            one or more attributes of the resource and their
            corresponding values at the time of the alarm.";
       }
       leaf-list proposed-repair-actions {
         type string;
         description
           "This parameter, when present, is used if the cause is
            known and the system being managed can suggest one or
            more solutions (such as switch in standby equipment,
            retry, and replace media).";
       }
       leaf trend-indication {
         type trend;
         description
           "This parameter specifies the current severity
            trend of the resource.  If present, it indicates
            that there are one or more alarms ('outstanding
            alarms') that have not been cleared and that
            pertain to the same resource as this alarm
            ('current alarm') does.  The possible values are:
        

more-severe: The Perceived severity in the current alarm is higher (more severe) than that reported in any of the outstanding alarms.

更严重:当前报警中的感知严重性高于(更严重)任何未完成报警中报告的严重性。

no-change: The Perceived severity reported in the current alarm is the same as the highest (most severe) of any of the outstanding alarms.

无变化:当前报警中报告的感知严重性与任何未完成报警中的最高(最严重)相同。

less-severe: There is at least one outstanding alarm of a severity higher (more severe) than that in the current alarm.";

不太严重:至少有一个严重性高于(更严重)当前报警的未完成报警。“;

       }
       leaf backedup-status {
         type boolean;
         description
           "This parameter, when present, specifies whether or not the
            object emitting the alarm has been backed up; therefore, it
            is possible to know whether or not services provided to the
            user have been disrupted when this parameter is included.
            The use of this field in conjunction with the
            'perceived-severity' field provides information in an
            independent form to qualify the seriousness of the alarm and
            the ability of the system as a whole to continue to provide
            services.  If the value of this parameter is true, it
            indicates that the object emitting the alarm has been backed
            up; if false, the object has not been backed up.";
       }
       leaf backup-object {
         type al:resource;
         description
           "This parameter SHALL be present when the 'backedup-status'
            parameter is present and has the value 'true'.  This
            parameter specifies the managed object instance that is
            providing back-up services for the managed object to which
            the notification pertains.  This parameter is useful, for
            example, when the back-up object is from a pool of objects,
            any of which may be dynamically allocated to replace a
            faulty object.";
       }
       list additional-information {
         key "identifier";
         description
           "This parameter allows the inclusion of an additional
            information set in the alarm.  It is a series of data
            structures, each of which contains three items of
            information: an identifier, a significance indicator,
            and the problem information.";
         leaf identifier {
           type string;
           description
             "Identifies the data type of the information parameter.";
         }
         leaf significant {
           type boolean;
           description
             "Set to 'true' if the receiving system must be able to
              parse the contents of the information subparameter
              for the event report to be fully understood.";
         }
        
       }
       leaf backedup-status {
         type boolean;
         description
           "This parameter, when present, specifies whether or not the
            object emitting the alarm has been backed up; therefore, it
            is possible to know whether or not services provided to the
            user have been disrupted when this parameter is included.
            The use of this field in conjunction with the
            'perceived-severity' field provides information in an
            independent form to qualify the seriousness of the alarm and
            the ability of the system as a whole to continue to provide
            services.  If the value of this parameter is true, it
            indicates that the object emitting the alarm has been backed
            up; if false, the object has not been backed up.";
       }
       leaf backup-object {
         type al:resource;
         description
           "This parameter SHALL be present when the 'backedup-status'
            parameter is present and has the value 'true'.  This
            parameter specifies the managed object instance that is
            providing back-up services for the managed object to which
            the notification pertains.  This parameter is useful, for
            example, when the back-up object is from a pool of objects,
            any of which may be dynamically allocated to replace a
            faulty object.";
       }
       list additional-information {
         key "identifier";
         description
           "This parameter allows the inclusion of an additional
            information set in the alarm.  It is a series of data
            structures, each of which contains three items of
            information: an identifier, a significance indicator,
            and the problem information.";
         leaf identifier {
           type string;
           description
             "Identifies the data type of the information parameter.";
         }
         leaf significant {
           type boolean;
           description
             "Set to 'true' if the receiving system must be able to
              parse the contents of the information subparameter
              for the event report to be fully understood.";
         }
        
         leaf information {
           type string;
           description
             "Additional information about the alarm.";
         }
       }
       leaf security-alarm-detector {
         type al:resource;
         description
           "This parameter identifies the detector of the security
            alarm.";
       }
       leaf service-user {
         type al:resource;
         description
           "This parameter identifies the service-user whose request
            for service led to the generation of the security alarm.";
       }
       leaf service-provider {
         type al:resource;
         description
           "This parameter identifies the intended service-provider
            of the service that led to the generation of the security
            alarm.";
       }
       reference
         "ITU-T Recommendation X.733: Information Technology
            - Open Systems Interconnection
            - System Management: Alarm Reporting Function
          ITU-T Recommendation X.736: Information Technology
            - Open Systems Interconnection
            - System Management: Security Alarm Reporting Function";
     }
        
         leaf information {
           type string;
           description
             "Additional information about the alarm.";
         }
       }
       leaf security-alarm-detector {
         type al:resource;
         description
           "This parameter identifies the detector of the security
            alarm.";
       }
       leaf service-user {
         type al:resource;
         description
           "This parameter identifies the service-user whose request
            for service led to the generation of the security alarm.";
       }
       leaf service-provider {
         type al:resource;
         description
           "This parameter identifies the intended service-provider
            of the service that led to the generation of the security
            alarm.";
       }
       reference
         "ITU-T Recommendation X.733: Information Technology
            - Open Systems Interconnection
            - System Management: Alarm Reporting Function
          ITU-T Recommendation X.736: Information Technology
            - Open Systems Interconnection
            - System Management: Security Alarm Reporting Function";
     }
        
     grouping x733-alarm-definition-parameters {
       description
         "Common X.733 parameters for alarm definitions.
          This grouping is used to define those alarm
          attributes that can be mapped from the alarm-type
          mechanism in the ietf-alarms module.";
       leaf event-type {
         type event-type;
         description
           "The alarm type has this X.733/X.736 event type.";
       }
       leaf probable-cause {
         type uint32;
         description
        
     grouping x733-alarm-definition-parameters {
       description
         "Common X.733 parameters for alarm definitions.
          This grouping is used to define those alarm
          attributes that can be mapped from the alarm-type
          mechanism in the ietf-alarms module.";
       leaf event-type {
         type event-type;
         description
           "The alarm type has this X.733/X.736 event type.";
       }
       leaf probable-cause {
         type uint32;
         description
        
           "The alarm type has this X.733 probable cause value.
            This module defines probable cause as an integer
            and not as an enumeration.  The reason being that the
            primary use of probable cause is in the management
            application if it is based on the X.733 standard.
            However, most management applications have their own
            defined enum definitions and merging enums from
            different systems might create conflicts.  By using
            a configurable uint32, the system can be configured
            to match the enum values in the management application.";
       }
       leaf probable-cause-string {
         type string;
         description
           "This string can be used to give a user-friendly string
            to the probable cause value.";
       }
     }
        
           "The alarm type has this X.733 probable cause value.
            This module defines probable cause as an integer
            and not as an enumeration.  The reason being that the
            primary use of probable cause is in the management
            application if it is based on the X.733 standard.
            However, most management applications have their own
            defined enum definitions and merging enums from
            different systems might create conflicts.  By using
            a configurable uint32, the system can be configured
            to match the enum values in the management application.";
       }
       leaf probable-cause-string {
         type string;
         description
           "This string can be used to give a user-friendly string
            to the probable cause value.";
       }
     }
        
     grouping attribute {
       description
         "A grouping to match the ITU generic reference to
          an attribute.";
       leaf id {
         type al:resource;
         description
           "The resource representing the attribute.";
       }
       leaf value {
         type string;
         description
           "The value represented as a string since it could
            be of any type.";
       }
       reference
         "ITU-T Recommendation X.721: Information Technology
             - Open Systems Interconnection
             - Structure of management information:
               Definition of management information
          Module Attribute-ASN1Module";
     }
        
     grouping attribute {
       description
         "A grouping to match the ITU generic reference to
          an attribute.";
       leaf id {
         type al:resource;
         description
           "The resource representing the attribute.";
       }
       leaf value {
         type string;
         description
           "The value represented as a string since it could
            be of any type.";
       }
       reference
         "ITU-T Recommendation X.721: Information Technology
             - Open Systems Interconnection
             - Structure of management information:
               Definition of management information
          Module Attribute-ASN1Module";
     }
        
     /*
      * Add X.733 parameters to the alarm definitions, alarms,
      * and notification.
      */
        
     /*
      * Add X.733 parameters to the alarm definitions, alarms,
      * and notification.
      */
        
     augment "/al:alarms/al:alarm-inventory/al:alarm-type" {
        
     augment "/al:alarms/al:alarm-inventory/al:alarm-type" {
        
       description
         "Augment X.733 mapping information to the alarm inventory.";
       uses x733-alarm-definition-parameters;
     }
        
       description
         "Augment X.733 mapping information to the alarm inventory.";
       uses x733-alarm-definition-parameters;
     }
        
     /*
      * Add X.733 configurable mapping.
      */
        
     /*
      * Add X.733 configurable mapping.
      */
        
     augment "/al:alarms/al:control" {
       description
         "Add X.733 mapping capabilities. ";
       list x733-mapping {
         if-feature "configure-x733-mapping";
         key "alarm-type-id alarm-type-qualifier-match";
         description
           "This list allows a management application to control the
            X.733 mapping for all alarm types in the system.  Any entry
            in this list will allow the alarm manager to override the
            default X.733 mapping in the system, and the final mapping
            will be shown in the alarm inventory.";
         leaf alarm-type-id {
           type al:alarm-type-id;
           description
             "Map the alarm type with this alarm type identifier.";
         }
         leaf alarm-type-qualifier-match {
           type string;
           description
             "A W3C regular expression that is used when mapping an
              alarm type and alarm-type-qualifier to X.733 parameters.";
         }
         uses x733-alarm-definition-parameters;
       }
     }
        
     augment "/al:alarms/al:control" {
       description
         "Add X.733 mapping capabilities. ";
       list x733-mapping {
         if-feature "configure-x733-mapping";
         key "alarm-type-id alarm-type-qualifier-match";
         description
           "This list allows a management application to control the
            X.733 mapping for all alarm types in the system.  Any entry
            in this list will allow the alarm manager to override the
            default X.733 mapping in the system, and the final mapping
            will be shown in the alarm inventory.";
         leaf alarm-type-id {
           type al:alarm-type-id;
           description
             "Map the alarm type with this alarm type identifier.";
         }
         leaf alarm-type-qualifier-match {
           type string;
           description
             "A W3C regular expression that is used when mapping an
              alarm type and alarm-type-qualifier to X.733 parameters.";
         }
         uses x733-alarm-definition-parameters;
       }
     }
        
     augment "/al:alarms/al:alarm-list/al:alarm" {
       description
         "Augment X.733 information to the alarm.";
       uses x733-alarm-parameters;
     }
        
     augment "/al:alarms/al:alarm-list/al:alarm" {
       description
         "Augment X.733 information to the alarm.";
       uses x733-alarm-parameters;
     }
        
     augment "/al:alarms/al:shelved-alarms/al:shelved-alarm" {
       description
         "Augment X.733 information to the alarm.";
       uses x733-alarm-parameters;
     }
        
     augment "/al:alarms/al:shelved-alarms/al:shelved-alarm" {
       description
         "Augment X.733 information to the alarm.";
       uses x733-alarm-parameters;
     }
        
     augment "/al:alarm-notification" {
       description
         "Augment X.733 information to the alarm notification.";
       uses x733-alarm-parameters;
     }
   }
   <CODE ENDS>
        
     augment "/al:alarm-notification" {
       description
         "Augment X.733 information to the alarm notification.";
       uses x733-alarm-parameters;
     }
   }
   <CODE ENDS>
        
8. IANA Considerations
8. IANA考虑

This document registers two URIs in the "IETF XML Registry" [RFC3688]. Following the format in RFC 3688, the following registrations have been made.

本文档在“IETF XML注册表”[RFC3688]中注册了两个URI。按照RFC 3688中的格式,进行了以下注册。

URI: urn:ietf:params:xml:ns:yang:ietf-alarms Registrant Contact: The IESG. XML: N/A; the requested URI is an XML namespace.

URI:urn:ietf:params:xml:ns:yang:ietf报警注册人联系人:IESG。XML:不适用;请求的URI是一个XML命名空间。

URI: urn:ietf:params:xml:ns:yang:ietf-alarms-x733 Registrant Contact: The IESG. XML: N/A; the requested URI is an XML namespace.

URI:urn:ietf:params:xml:ns:yang:ietf-alarms-x733注册人联系人:IESG。XML:不适用;请求的URI是一个XML命名空间。

This document registers two YANG modules in the "YANG Module Names" registry [RFC6020].

本文件在“阳模块名称”注册表[RFC6020]中注册了两个阳模块。

       name:        ietf-alarms
       namespace:   urn:ietf:params:xml:ns:yang:ietf-alarms
       prefix:      al
       reference:   RFC 8632
        
       name:        ietf-alarms
       namespace:   urn:ietf:params:xml:ns:yang:ietf-alarms
       prefix:      al
       reference:   RFC 8632
        
       name:        ietf-alarms-x733
       namespace:   urn:ietf:params:xml:ns:yang:ietf-alarms-x733
       prefix:      x733
       reference:   RFC 8632
        
       name:        ietf-alarms-x733
       namespace:   urn:ietf:params:xml:ns:yang:ietf-alarms-x733
       prefix:      x733
       reference:   RFC 8632
        
9. Security Considerations
9. 安全考虑

The YANG modules specified in this document define a schema for data that is designed to be accessed via network management protocols such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS [RFC8446].

本文档中指定的模块为数据定义了一个模式,该模式旨在通过网络管理协议(如NETCONF[RFC6241]或restcconf[RFC8040])进行访问。最低的NETCONF层是安全传输层,实现安全传输的强制要求是安全Shell(SSH)[RFC6242]。最低的RESTCONF层是HTTPS,实现安全传输的强制层是TLS[RFC8446]。

The Network Configuration Access Control Model (NACM) [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.

网络配置访问控制模型(NACM)[RFC8341]提供了将特定NETCONF或RESTCONF用户的访问限制为所有可用NETCONF或RESTCONF协议操作和内容的预配置子集的方法。

The list of alarms itself may be potentially sensitive from a security perspective, in that it potentially gives an attacker an authoritative picture of the (broken) state of the network.

从安全角度来看,警报列表本身可能具有潜在的敏感性,因为它可能为攻击者提供网络(断开)状态的权威图片。

There are a number of data nodes defined in the YANG modules that are writable/creatable/deletable (i.e., config true, which is the default). These data nodes may be considered sensitive or vulnerable in some network environments. Write operations (e.g., edit-config) to these data nodes without proper protection can have a negative effect on network operations. These are the subtrees and data nodes in the "ietf-alarms" module and their sensitivity/vulnerability:

在YANG模块中定义了许多数据节点,这些节点是可写/可创建/可删除的(即config true,这是默认值)。在某些网络环境中,这些数据节点可能被视为敏感或易受攻击。对这些数据节点的写入操作(如编辑配置)如果没有适当的保护,可能会对网络操作产生负面影响。这些是“ietf警报”模块中的子树和数据节点及其灵敏度/漏洞:

"/alarms/control/notify-status-changes": This leaf controls whether an alarm should notify based on various state changes. Unauthorized access to this leaf could have a negative impact on operational procedures relying on fine-grained alarm-state change reporting.

“/alarms/control/notify status changes”:此叶控制报警是否应基于各种状态更改进行通知。未经授权访问此叶可能会对依赖细粒度报警状态更改报告的操作程序产生负面影响。

"/alarms/control/alarm-shelving/shelf": This list controls the shelving (blocking) of alarms. Unauthorized access to this list could jeopardize the alarm-management procedures, since these alarms will not be notified or be part of the alarm list.

“/alarms/control/alarm shelving/shelf”:此列表控制报警的搁置(阻止)。未经授权访问此列表可能会危及报警管理程序,因为这些报警不会被通知或成为报警列表的一部分。

"/alarms/control/alarm-profile/alarm-severity-assignment-profile": This list controls the severity levels of an alarm. Unauthorized access to this could, for example, downgrade the severity of an alarm and thereby have a negative impact on the alarm-monitoring process.

“/alarms/control/alarm profile/alarm severity assignment profile”:此列表控制报警的严重性级别。例如,未经授权的访问可能会降低报警的严重性,从而对报警监控过程产生负面影响。

Some of the RPC operations in this YANG module may be considered sensitive or vulnerable in some network environments. It is thus important to control access to these operations. These are the operations and their sensitivity/vulnerability:

在某些网络环境中,此模块中的某些RPC操作可能被视为敏感或易受攻击。因此,控制对这些操作的访问非常重要。这些是操作及其敏感性/脆弱性:

"/alarms/alarm-list/purge-alarms": This action deletes alarms from the alarm list. Unauthorized use of this action could jeopardize the alarm-management procedures since the deleted alarms may be vital for the alarm-management application.

“/alarms/alarm list/purge alarms”:此操作从报警列表中删除报警。未经授权使用此操作可能会危及报警管理程序,因为删除的报警可能对报警管理应用程序至关重要。

"/alarms/alarm-list/alarm/set-operator-state": This action can be used by the operator to indicate the level of human intervention on an alarm. Unauthorized use of this action could result in alarms being ignored by operators.

“/alarms/alarm list/alarm/set operator state”(报警/报警列表/报警/设置操作员状态):操作员可使用此操作指示报警的人为干预级别。未经授权使用此操作可能导致操作员忽略报警。

10. References
10. 工具书类
10.1. Normative References
10.1. 规范性引用文件

[M.3100] International Telecommunication Union, "Generic network information model", ITU-T Recommendation M.3100, April 2005, <https://www.itu.int/rec/T-REC-M.3100-200504-I/en>.

[M.3100]国际电信联盟,“通用网络信息模型”,ITU-T建议M.3100,2005年4月<https://www.itu.int/rec/T-REC-M.3100-200504-I/en>.

[M.3160] International Telecommunication Union, "Generic, protocol-neutral management information model", ITU-T Recommendation M.3100, November 2008, <https://www.itu.int/rec/T-REC-M.3160-200811-I>.

[M.3160]国际电信联盟,“通用、协议中立的管理信息模型”,ITU-T建议M.3100,2008年11月<https://www.itu.int/rec/T-REC-M.3160-200811-I>.

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,DOI 10.17487/RFC2119,1997年3月<https://www.rfc-editor.org/info/rfc2119>.

[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, January 2004, <https://www.rfc-editor.org/info/rfc3688>.

[RFC3688]Mealling,M.,“IETF XML注册表”,BCP 81,RFC 3688,DOI 10.17487/RFC3688,2004年1月<https://www.rfc-editor.org/info/rfc3688>.

[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, October 2010, <https://www.rfc-editor.org/info/rfc6020>.

[RFC6020]Bjorklund,M.,Ed.“YANG-网络配置协议的数据建模语言(NETCONF)”,RFC 6020,DOI 10.17487/RFC6020,2010年10月<https://www.rfc-editor.org/info/rfc6020>.

[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, <https://www.rfc-editor.org/info/rfc6241>.

[RFC6241]Enns,R.,Ed.,Bjorklund,M.,Ed.,Schoenwaeld,J.,Ed.,和A.Bierman,Ed.,“网络配置协议(NETCONF)”,RFC 6241,DOI 10.17487/RFC6241,2011年6月<https://www.rfc-editor.org/info/rfc6241>.

[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, <https://www.rfc-editor.org/info/rfc6242>.

[RFC6242]Wasserman,M.“在安全外壳上使用NETCONF协议(SSH)”,RFC 6242,DOI 10.17487/RFC6242,2011年6月<https://www.rfc-editor.org/info/rfc6242>.

[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, DOI 10.17487/RFC6991, July 2013, <https://www.rfc-editor.org/info/rfc6991>.

[RFC6991]Schoenwaeld,J.,Ed.,“常见杨数据类型”,RFC 6991,DOI 10.17487/RFC69911913年7月<https://www.rfc-editor.org/info/rfc6991>.

[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, August 2016, <https://www.rfc-editor.org/info/rfc7950>.

[RFC7950]Bjorklund,M.,Ed.“YANG 1.1数据建模语言”,RFC 7950,DOI 10.17487/RFC7950,2016年8月<https://www.rfc-editor.org/info/rfc7950>.

[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, <https://www.rfc-editor.org/info/rfc8040>.

[RFC8040]Bierman,A.,Bjorklund,M.,和K.Watsen,“RESTCONF协议”,RFC 8040,DOI 10.17487/RFC8040,2017年1月<https://www.rfc-editor.org/info/rfc8040>.

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8174]Leiba,B.,“RFC 2119关键词中大写与小写的歧义”,BCP 14,RFC 8174,DOI 10.17487/RFC8174,2017年5月<https://www.rfc-editor.org/info/rfc8174>.

[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10.17487/RFC8341, March 2018, <https://www.rfc-editor.org/info/rfc8341>.

[RFC8341]Bierman,A.和M.Bjorklund,“网络配置访问控制模型”,STD 91,RFC 8341,DOI 10.17487/RFC8341,2018年3月<https://www.rfc-editor.org/info/rfc8341>.

[RFC8348] Bierman, A., Bjorklund, M., Dong, J., and D. Romascanu, "A YANG Data Model for Hardware Management", RFC 8348, DOI 10.17487/RFC8348, March 2018, <https://www.rfc-editor.org/info/rfc8348>.

[RFC8348]Bierman,A.,Bjorklund,M.,Dong,J.,和D.Romascanu,“硬件管理的杨数据模型”,RFC 8348,DOI 10.17487/RFC8348,2018年3月<https://www.rfc-editor.org/info/rfc8348>.

[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, <https://www.rfc-editor.org/info/rfc8446>.

[RFC8446]Rescorla,E.“传输层安全(TLS)协议版本1.3”,RFC 8446,DOI 10.17487/RFC8446,2018年8月<https://www.rfc-editor.org/info/rfc8446>.

[X.721] International Telecommunication Union, "Information technology - Open Systems Interconnection - Structure of management information: Definition of management information", ITU-T Recommendation X.721, February 1992, <https://www.itu.int/rec/T-REC-X.721-199202-I/en>.

[X.721]国际电信联盟,“信息技术-开放系统互连-管理信息的结构:管理信息的定义”,ITU-T建议X.721,1992年2月<https://www.itu.int/rec/T-REC-X.721-199202-I/en>.

[X.733] International Telecommunication Union, "Information technology - Open Systems Interconnection - Systems Management: Alarm reporting function", ITU-T Recommendation X.733, February 1992, <https://www.itu.int/rec/T-REC-X.733-199202-I/en>.

[X.733]国际电信联盟,“信息技术-开放系统互连-系统管理:报警报告功能”,ITU-T建议X.733,1992年2月<https://www.itu.int/rec/T-REC-X.733-199202-I/en>.

[XSD-TYPES] Malhotra, A. and P. Biron, "XML Schema Part 2: Datatypes Second Edition", World Wide Web Consortium Recommendation REC-xmlschema-2-20041028, October 2004, <http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>.

[XSD-TYPES]Malhotra,A.和P.Biron,“XML模式第2部分:数据类型第二版”,万维网联盟建议REC-xmlschema-2-20041028,2004年10月<http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>.

10.2. Informative References
10.2. 资料性引用

[ALARMIRP] 3GPP, "Telecommunication management; Fault Management; Part 2: Alarm Integration Reference Point (IRP): Information Service (IS)", 3GPP TS 32.111-2, March 2005, <http://www.3gpp.org/ftp/Specs/html-info/32111-2.htm>.

[ALARMIRP]3GPP,“电信管理;故障管理;第2部分:报警集成参考点(IRP):信息服务(IS)”,3GPP TS 32.111-22005年3月<http://www.3gpp.org/ftp/Specs/html-info/32111-2.htm>.

[ALARMSEM] Wallin, S., Leijon, V., Nordlander, J., and N. Bystedt, "The semantics of alarm definitions: enabling systematic reasoning about alarms", International Journal of Network Management, Volume 22, Issue 3, May 2012, <http://dx.doi.org/10.1002/nem.800>.

[ALARMSEM]Wallin,S.,Leijon,V.,Nordlander,J.,和N.Bystedt,“报警定义的语义:启用报警的系统推理”,《国际网络管理杂志》,第22卷,第3期,2012年5月<http://dx.doi.org/10.1002/nem.800>.

[EEMUA] "Alarm systems: a guide to design, management and procurement", EEMUA Publication No. 191, Engineering Equipment and Materials Users Association, Second Edition, 2007.

[EEMUA]“报警系统:设计、管理和采购指南”,EEMUA第191号出版物,工程设备和材料用户协会,第二版,2007年。

[G.7710] International Telecommunication Union, "SERIES G: TRANSMISSION SYSTEMS AND MEDIA, DIGITAL SYSTEMS AND NETWORKS - Data over Transport - Generic aspects - Transport network control aspects; Common equipment management function requirements", ITU-T Recommendation G.7710/Y.1701, Amendment 1, November 2012.

[G.7710]国际电信联盟,“G系列:传输系统和媒体、数字系统和网络-传输数据-通用方面-传输网络控制方面;通用设备管理功能要求”,ITU-T建议G.7710/Y.1701,修改件1,2012年11月。

[ISA182] International Society of Automation, "Management of Alarm Systems for the Process Industries", ANSI/ISA - 18.2-2016, March 2016.

[ISA182]国际自动化学会,“过程工业报警系统的管理”,ANSI/ISA-18.2-2016,2016年3月。

[RFC3877] Chisholm, S. and D. Romascanu, "Alarm Management Information Base (MIB)", RFC 3877, DOI 10.17487/RFC3877, September 2004, <https://www.rfc-editor.org/info/rfc3877>.

[RFC3877]Chisholm,S.和D.Romascanu,“报警管理信息库(MIB)”,RFC 3877,DOI 10.17487/RFC3877,2004年9月<https://www.rfc-editor.org/info/rfc3877>.

[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, <https://www.rfc-editor.org/info/rfc8340>.

[RFC8340]Bjorklund,M.和L.Berger,编辑,“杨树图”,BCP 215,RFC 8340,DOI 10.17487/RFC8340,2018年3月<https://www.rfc-editor.org/info/rfc8340>.

[X.736] International Telecommunication Union, "Information technology - Open Systems Interconnection - Systems Management: Security alarm reporting function", ITU-T Recommendation X.736, January 1992, <https://www.itu.int/rec/T-REC-X.736-199201-I/en>.

[X.736]国际电信联盟,“信息技术-开放系统互连-系统管理:安全警报报告功能”,ITU-T建议X.736,1992年1月<https://www.itu.int/rec/T-REC-X.736-199201-I/en>.

[YANG-INSTANCE] Lengyel, B. and B. Claise, "YANG Instance Data File Format", Work in Progress, draft-ietf-netmod-yang-instance-file-format-02, August 2019.

[YANG-INSTANCE]Lengyel,B.和B.Claise,“YANG-INSTANCE数据文件格式”,正在进行的工作,草稿-ietf-netmod-YANG-INSTANCE-File-Format-022019年8月。

Appendix A. Vendor-Specific Alarm Types Example
附录A.供应商特定报警类型示例

This example shows how to define alarm types in a vendor-specific module. In this case, the vendor "xyz" has chosen to define top-level identities according to X.733 event types.

此示例显示如何在特定于供应商的模块中定义报警类型。在这种情况下,供应商“xyz”已选择根据X.733事件类型定义顶级标识。

   module example-xyz-alarms {
     namespace "urn:example:xyz-alarms";
     prefix xyz-al;
        
   module example-xyz-alarms {
     namespace "urn:example:xyz-alarms";
     prefix xyz-al;
        
     import ietf-alarms {
       prefix al;
     }
        
     import ietf-alarms {
       prefix al;
     }
        
     identity xyz-alarms {
       base al:alarm-type-id;
     }
        
     identity xyz-alarms {
       base al:alarm-type-id;
     }
        
     identity communications-alarm {
       base xyz-alarms;
     }
     identity quality-of-service-alarm {
       base xyz-alarms;
     }
     identity processing-error-alarm {
       base xyz-alarms;
     }
     identity equipment-alarm {
       base xyz-alarms;
     }
     identity environmental-alarm {
       base xyz-alarms;
     }
        
     identity communications-alarm {
       base xyz-alarms;
     }
     identity quality-of-service-alarm {
       base xyz-alarms;
     }
     identity processing-error-alarm {
       base xyz-alarms;
     }
     identity equipment-alarm {
       base xyz-alarms;
     }
     identity environmental-alarm {
       base xyz-alarms;
     }
        
     // communications alarms
     identity link-alarm {
       base communications-alarm;
     }
        
     // communications alarms
     identity link-alarm {
       base communications-alarm;
     }
        
     // QoS alarms
     identity high-jitter-alarm {
       base quality-of-service-alarm;
     }
   }
        
     // QoS alarms
     identity high-jitter-alarm {
       base quality-of-service-alarm;
     }
   }
        
Appendix B. Alarm Inventory Example
附录B.警报清单示例

This shows an alarm inventory: one alarm type is defined only with the identifier and another is dynamically configured. In the latter case, a digital input has been connected to a smoke detector; therefore, the "alarm-type-qualifier" is set to "smoke-detector" and the "alarm-type-id" to "environmental-alarm".

这将显示报警清单:一个报警类型仅使用标识符定义,另一个是动态配置的。在后一种情况下,数字输入已连接到烟雾探测器;因此,“报警类型限定符”设置为“烟雾探测器”,“报警类型id”设置为“环境报警”。

   <alarms xmlns="urn:ietf:params:xml:ns:yang:ietf-alarms"
           xmlns:xyz-al="urn:example:xyz-alarms"
           xmlns:dev="urn:example:device">
     <alarm-inventory>
       <alarm-type>
         <alarm-type-id>xyz-al:link-alarm</alarm-type-id>
         <alarm-type-qualifier/>
         <resource>
           /dev:interfaces/dev:interface
         </resource>
         <will-clear>true</will-clear>
         <description>
           Link failure; operational state down but admin state up
         </description>
       </alarm-type>
       <alarm-type>
         <alarm-type-id>xyz-al:environmental-alarm</alarm-type-id>
         <alarm-type-qualifier>smoke-alarm</alarm-type-qualifier>
         <will-clear>true</will-clear>
         <description>
           Connected smoke detector to digital input
         </description>
       </alarm-type>
     </alarm-inventory>
   </alarms>
        
   <alarms xmlns="urn:ietf:params:xml:ns:yang:ietf-alarms"
           xmlns:xyz-al="urn:example:xyz-alarms"
           xmlns:dev="urn:example:device">
     <alarm-inventory>
       <alarm-type>
         <alarm-type-id>xyz-al:link-alarm</alarm-type-id>
         <alarm-type-qualifier/>
         <resource>
           /dev:interfaces/dev:interface
         </resource>
         <will-clear>true</will-clear>
         <description>
           Link failure; operational state down but admin state up
         </description>
       </alarm-type>
       <alarm-type>
         <alarm-type-id>xyz-al:environmental-alarm</alarm-type-id>
         <alarm-type-qualifier>smoke-alarm</alarm-type-qualifier>
         <will-clear>true</will-clear>
         <description>
           Connected smoke detector to digital input
         </description>
       </alarm-type>
     </alarm-inventory>
   </alarms>
        
Appendix C. Alarm List Example
附录C.警报列表示例

In this example, we show an alarm that has toggled [major, clear, major]. An operator has acknowledged the alarm.

在本例中,我们显示了一个已切换[主、清除、主]的报警。操作员已确认警报。

   <alarms xmlns="urn:ietf:params:xml:ns:yang:ietf-alarms"
           xmlns:xyz-al="urn:example:xyz-alarms"
           xmlns:dev="urn:example:device">
     <alarm-list>
       <number-of-alarms>1</number-of-alarms>
       <last-changed>2018-04-08T08:39:50.00Z</last-changed>
       <alarm>
        
   <alarms xmlns="urn:ietf:params:xml:ns:yang:ietf-alarms"
           xmlns:xyz-al="urn:example:xyz-alarms"
           xmlns:dev="urn:example:device">
     <alarm-list>
       <number-of-alarms>1</number-of-alarms>
       <last-changed>2018-04-08T08:39:50.00Z</last-changed>
       <alarm>
        
         <resource>
           /dev:interfaces/dev:interface[name='FastEthernet1/0']
         </resource>
         <alarm-type-id>xyz-al:link-alarm</alarm-type-id>
         <alarm-type-qualifier></alarm-type-qualifier>
         <time-created>2018-04-08T08:20:10.00Z</time-created>
         <is-cleared>false</is-cleared>
         <alt-resource>1.3.6.1.2.1.2.2.1.1.17</alt-resource>
         <last-raised>2018-04-08T08:39:40.00Z</last-raised>
         <last-changed>2018-04-08T08:39:50.00Z</last-changed>
         <perceived-severity>major</perceived-severity>
         <alarm-text>
           Link operationally down but administratively up
         </alarm-text>
         <status-change>
           <time>2018-04-08T08:39:40.00Z</time>
           <perceived-severity>major</perceived-severity>
           <alarm-text>
             Link operationally down but administratively up
           </alarm-text>
         </status-change>
         <status-change>
           <time>2018-04-08T08:30:00.00Z</time>
           <perceived-severity>cleared</perceived-severity>
           <alarm-text>
             Link operationally up and administratively up
           </alarm-text>
         </status-change>
         <status-change>
           <time>2018-04-08T08:20:10.00Z</time>
           <perceived-severity>major</perceived-severity>
           <alarm-text>
             Link operationally down but administratively up
           </alarm-text>
         </status-change>
         <operator-state-change>
           <time>2018-04-08T08:39:50.00Z</time>
           <state>ack</state>
           <operator>joe</operator>
           <text>Will investigate, ticket TR764999</text>
         </operator-state-change>
       </alarm>
     </alarm-list>
   </alarms>
        
         <resource>
           /dev:interfaces/dev:interface[name='FastEthernet1/0']
         </resource>
         <alarm-type-id>xyz-al:link-alarm</alarm-type-id>
         <alarm-type-qualifier></alarm-type-qualifier>
         <time-created>2018-04-08T08:20:10.00Z</time-created>
         <is-cleared>false</is-cleared>
         <alt-resource>1.3.6.1.2.1.2.2.1.1.17</alt-resource>
         <last-raised>2018-04-08T08:39:40.00Z</last-raised>
         <last-changed>2018-04-08T08:39:50.00Z</last-changed>
         <perceived-severity>major</perceived-severity>
         <alarm-text>
           Link operationally down but administratively up
         </alarm-text>
         <status-change>
           <time>2018-04-08T08:39:40.00Z</time>
           <perceived-severity>major</perceived-severity>
           <alarm-text>
             Link operationally down but administratively up
           </alarm-text>
         </status-change>
         <status-change>
           <time>2018-04-08T08:30:00.00Z</time>
           <perceived-severity>cleared</perceived-severity>
           <alarm-text>
             Link operationally up and administratively up
           </alarm-text>
         </status-change>
         <status-change>
           <time>2018-04-08T08:20:10.00Z</time>
           <perceived-severity>major</perceived-severity>
           <alarm-text>
             Link operationally down but administratively up
           </alarm-text>
         </status-change>
         <operator-state-change>
           <time>2018-04-08T08:39:50.00Z</time>
           <state>ack</state>
           <operator>joe</operator>
           <text>Will investigate, ticket TR764999</text>
         </operator-state-change>
       </alarm>
     </alarm-list>
   </alarms>
        
Appendix D. Alarm Shelving Example
附录D.警报搁置示例

This example shows how to shelve alarms. We shelve alarms related to the smoke detectors, since they are being installed and tested. We also shelve all alarms from FastEthernet1/0.

此示例显示如何搁置警报。我们搁置了与烟雾探测器相关的警报,因为它们正在安装和测试。我们还搁置了FastEthernet1/0的所有警报。

   <alarms xmlns="urn:ietf:params:xml:ns:yang:ietf-alarms"
           xmlns:xyz-al="urn:example:xyz-alarms"
           xmlns:dev="urn:example:device">
     <control>
       <alarm-shelving>
         <shelf>
           <name>FE10</name>
           <resource>
             /dev:interfaces/dev:interface[name='FastEthernet1/0']
           </resource>
         </shelf>
         <shelf>
           <name>detectortest</name>
           <alarm-type>
             <alarm-type-id>
               xyz-al:environmental-alarm
             </alarm-type-id>
             <alarm-type-qualifier-match>
               smoke-alarm
             </alarm-type-qualifier-match>
           </alarm-type>
         </shelf>
       </alarm-shelving>
     </control>
   </alarms>
        
   <alarms xmlns="urn:ietf:params:xml:ns:yang:ietf-alarms"
           xmlns:xyz-al="urn:example:xyz-alarms"
           xmlns:dev="urn:example:device">
     <control>
       <alarm-shelving>
         <shelf>
           <name>FE10</name>
           <resource>
             /dev:interfaces/dev:interface[name='FastEthernet1/0']
           </resource>
         </shelf>
         <shelf>
           <name>detectortest</name>
           <alarm-type>
             <alarm-type-id>
               xyz-al:environmental-alarm
             </alarm-type-id>
             <alarm-type-qualifier-match>
               smoke-alarm
             </alarm-type-qualifier-match>
           </alarm-type>
         </shelf>
       </alarm-shelving>
     </control>
   </alarms>
        
Appendix E. X.733 Mapping Example
附录E.X.733映射示例

This example shows how to map a dynamic alarm type (alarm-type-id=environmental-alarm, alarm-type-qualifier=smoke-alarm) to the corresponding X.733 "event-type" and "probable-cause" parameters.

此示例显示如何将动态报警类型(报警类型id=环境报警,报警类型限定符=烟雾报警)映射到相应的X.733“事件类型”和“可能原因”参数。

   <alarms xmlns="urn:ietf:params:xml:ns:yang:ietf-alarms"
           xmlns:xyz-al="urn:example:xyz-alarms">
     <control>
       <x733-mapping
          xmlns="urn:ietf:params:xml:ns:yang:ietf-alarms-x733">
         <alarm-type-id>xyz-al:environmental-alarm</alarm-type-id>
         <alarm-type-qualifier-match>
           smoke-alarm
         </alarm-type-qualifier-match>
         <event-type>quality-of-service-alarm</event-type>
         <probable-cause>777</probable-cause>
       </x733-mapping>
     </control>
   </alarms>
        
   <alarms xmlns="urn:ietf:params:xml:ns:yang:ietf-alarms"
           xmlns:xyz-al="urn:example:xyz-alarms">
     <control>
       <x733-mapping
          xmlns="urn:ietf:params:xml:ns:yang:ietf-alarms-x733">
         <alarm-type-id>xyz-al:environmental-alarm</alarm-type-id>
         <alarm-type-qualifier-match>
           smoke-alarm
         </alarm-type-qualifier-match>
         <event-type>quality-of-service-alarm</event-type>
         <probable-cause>777</probable-cause>
       </x733-mapping>
     </control>
   </alarms>
        
Appendix F. Relationship to Other Alarm Standards
附录F.与其他报警标准的关系

This section briefly describes how this alarm data model relates to other relevant standards.

本节简要介绍了报警数据模型与其他相关标准的关系。

F.1. Definition of "Alarm"
F.1. “警报”的定义

The table below summarizes relevant definitions of the term "alarm" in other alarm standards.

下表总结了其他报警标准中“报警”一词的相关定义。

   +------------+---------------------------+--------------------------+
   | Standard   | Definition                | Comment                  |
   +------------+---------------------------+--------------------------+
   | X.733      | error: A deviation of a   | The X.733 alarm          |
   | [X.733]    | system from normal        | definition is focused on |
   |            | operation.  fault: The    | the notification as such |
   |            | physical or algorithmic   | and not the state.       |
   |            | cause of a malfunction.   | X.733 defines an alarm   |
   |            | Faults manifest           | as a deviation from a    |
   |            | themselves as errors.     | normal condition but     |
   |            | alarm: A notification, of | without the requirement  |
   |            | the form defined by this  | that it needs corrective |
   |            | function, of a specific   | actions.                 |
   |            | event.  An alarm may or   |                          |
   |            | may not represent an      |                          |
   |            | error.                    |                          |
   |            |                           |                          |
        
   +------------+---------------------------+--------------------------+
   | Standard   | Definition                | Comment                  |
   +------------+---------------------------+--------------------------+
   | X.733      | error: A deviation of a   | The X.733 alarm          |
   | [X.733]    | system from normal        | definition is focused on |
   |            | operation.  fault: The    | the notification as such |
   |            | physical or algorithmic   | and not the state.       |
   |            | cause of a malfunction.   | X.733 defines an alarm   |
   |            | Faults manifest           | as a deviation from a    |
   |            | themselves as errors.     | normal condition but     |
   |            | alarm: A notification, of | without the requirement  |
   |            | the form defined by this  | that it needs corrective |
   |            | function, of a specific   | actions.                 |
   |            | event.  An alarm may or   |                          |
   |            | may not represent an      |                          |
   |            | error.                    |                          |
   |            |                           |                          |
        
   | G.7710     | Alarms are indications    | The G.7710 definition is |
   | [G.7710]   | that are automatically    | close to the original    |
   |            | generated by a device as  | X.733 definition.        |
   |            | a result of the           |                          |
   |            | declaration of a failure. |                          |
   |            |                           |                          |
   | Alarm MIB  | Alarm: Persistent         | RFC 3877 defines the     |
   | [RFC3877]  | indication of a fault.    | term alarm as referring  |
   |            | Fault: Lasting error or   | back to "a deviation     |
   |            | warning condition.        | from normal operation".  |
   |            | Error: A deviation of a   | The Alarm YANG data      |
   |            | system from normal        | model adds the           |
   |            | operation.                | requirement that it      |
   |            |                           | should require a         |
   |            |                           | corrective action and    |
   |            |                           | should be undesired, not |
   |            |                           | only a deviation from    |
   |            |                           | normal.  The alarm MIB   |
   |            |                           | is state oriented in the |
   |            |                           | same way as the Alarm    |
   |            |                           | YANG module; it focuses  |
   |            |                           | on the  "lasting         |
   |            |                           | condition", not the      |
   |            |                           | individual               |
   |            |                           | notifications.           |
   |            |                           |                          |
   | ISA        | Alarm: An audible and/or  | The ISA standard adds an |
   | [ISA182]   | visible means of          | important requirement to |
   |            | indicating to the         | the "deviation from      |
   |            | operator an equipment     | normal condition state": |
   |            | malfunction, process      | requiring a response.    |
   |            | deviation, or abnormal    |                          |
   |            | condition requiring a     |                          |
   |            | response.                 |                          |
   |            |                           |                          |
   | EEMUA      | An alarm is an event to   | This is the foundation   |
   | [EEMUA]    | which an operator must    | for the definition of    |
   |            | knowingly react, respond, | alarm in this document.  |
   |            | and acknowledge -- not    | It focuses on the core   |
   |            | simply acknowledge and    | criterion that an action |
   |            | ignore.                   | is really needed.        |
   |            |                           |                          |
        
   | G.7710     | Alarms are indications    | The G.7710 definition is |
   | [G.7710]   | that are automatically    | close to the original    |
   |            | generated by a device as  | X.733 definition.        |
   |            | a result of the           |                          |
   |            | declaration of a failure. |                          |
   |            |                           |                          |
   | Alarm MIB  | Alarm: Persistent         | RFC 3877 defines the     |
   | [RFC3877]  | indication of a fault.    | term alarm as referring  |
   |            | Fault: Lasting error or   | back to "a deviation     |
   |            | warning condition.        | from normal operation".  |
   |            | Error: A deviation of a   | The Alarm YANG data      |
   |            | system from normal        | model adds the           |
   |            | operation.                | requirement that it      |
   |            |                           | should require a         |
   |            |                           | corrective action and    |
   |            |                           | should be undesired, not |
   |            |                           | only a deviation from    |
   |            |                           | normal.  The alarm MIB   |
   |            |                           | is state oriented in the |
   |            |                           | same way as the Alarm    |
   |            |                           | YANG module; it focuses  |
   |            |                           | on the  "lasting         |
   |            |                           | condition", not the      |
   |            |                           | individual               |
   |            |                           | notifications.           |
   |            |                           |                          |
   | ISA        | Alarm: An audible and/or  | The ISA standard adds an |
   | [ISA182]   | visible means of          | important requirement to |
   |            | indicating to the         | the "deviation from      |
   |            | operator an equipment     | normal condition state": |
   |            | malfunction, process      | requiring a response.    |
   |            | deviation, or abnormal    |                          |
   |            | condition requiring a     |                          |
   |            | response.                 |                          |
   |            |                           |                          |
   | EEMUA      | An alarm is an event to   | This is the foundation   |
   | [EEMUA]    | which an operator must    | for the definition of    |
   |            | knowingly react, respond, | alarm in this document.  |
   |            | and acknowledge -- not    | It focuses on the core   |
   |            | simply acknowledge and    | criterion that an action |
   |            | ignore.                   | is really needed.        |
   |            |                           |                          |
        
   | 3GPP Alarm | 3GPP v15: An alarm        | The latest 3GPP Alarm    |
   | IRP        | signifies an undesired    | IRP version uses         |
   | [ALARMIRP] | condition of a resource   | literally the same alarm |
   |            | (e.g., device, link) for  | definition as this alarm |
   |            | which an operator action  | data model.  It is worth |
   |            | is required.  It          | noting that earlier      |
   |            | emphasizes a key          | versions used a          |
   |            | requirement that          | definition not requiring |
   |            | operators [...] should    | an operator action and   |
   |            | not be informed about an  | the more-broad           |
   |            | undesired condition       | definition of deviation  |
   |            | unless it requires        | from normal condition.   |
   |            | operator action.          | The earlier version also |
   |            | 3GPP v12: alarm: abnormal | defined an alarm as a    |
   |            | network entity condition, | special case of "event". |
   |            | which categorizes an      |                          |
   |            | event as a fault.         |                          |
   |            | fault: a deviation of a   |                          |
   |            | system from normal        |                          |
   |            | operation, which may      |                          |
   |            | result in the loss of     |                          |
   |            | operational capabilities  |                          |
   |            | [...]                     |                          |
   +------------+---------------------------+--------------------------+
        
   | 3GPP Alarm | 3GPP v15: An alarm        | The latest 3GPP Alarm    |
   | IRP        | signifies an undesired    | IRP version uses         |
   | [ALARMIRP] | condition of a resource   | literally the same alarm |
   |            | (e.g., device, link) for  | definition as this alarm |
   |            | which an operator action  | data model.  It is worth |
   |            | is required.  It          | noting that earlier      |
   |            | emphasizes a key          | versions used a          |
   |            | requirement that          | definition not requiring |
   |            | operators [...] should    | an operator action and   |
   |            | not be informed about an  | the more-broad           |
   |            | undesired condition       | definition of deviation  |
   |            | unless it requires        | from normal condition.   |
   |            | operator action.          | The earlier version also |
   |            | 3GPP v12: alarm: abnormal | defined an alarm as a    |
   |            | network entity condition, | special case of "event". |
   |            | which categorizes an      |                          |
   |            | event as a fault.         |                          |
   |            | fault: a deviation of a   |                          |
   |            | system from normal        |                          |
   |            | operation, which may      |                          |
   |            | result in the loss of     |                          |
   |            | operational capabilities  |                          |
   |            | [...]                     |                          |
   +------------+---------------------------+--------------------------+
        

Table 1: Definition of the Term "Alarm" in Standards

表1:标准中“警报”一词的定义

The evolution of the definition of alarm moves from focused on events reporting a deviation from normal operation towards a definition to a undesired *state* that *requires an operator action*.

报警定义的演变从侧重于报告偏离正常运行的事件,转向了需要操作员采取行动的非期望*状态*。

F.2. Data Model
F.2. 数据模型

This section describes how this YANG alarm data model relates to other standard data models. Note well that we cover other data models for alarm interfaces but not other standards such as SDO-specific alarms.

本节介绍此报警数据模型与其他标准数据模型的关系。请注意,我们介绍了报警接口的其他数据模型,但没有介绍其他标准,如SDO特定报警。

F.2.1. X.733
F.2.1. X.733

X.733 has acted as a base for several alarm data models over the years. The YANG alarm data model differs in the following ways:

多年来,X.733一直是多个报警数据模型的基础。YANG报警数据模型在以下方面有所不同:

X.733 models the alarm list as a list of notifications. The YANG alarm data model defines the alarm list as the current alarm states for the resources, which is generated from the state change reporting notifications.

X.733将报警列表建模为通知列表。YANG报警数据模型将报警列表定义为资源的当前报警状态,由状态更改报告通知生成。

In X.733, an alarm can have the severity level "clear". In the YANG alarm data model, "clear" is not a severity level; it is a separate state of the alarm. An alarm can have the following states, for example, (major, cleared) and (minor, not cleared).

在X.733中,警报的严重性级别为“清除”。在YANG报警数据模型中,“清除”不是严重级别;这是一个单独的报警状态。报警可以具有以下状态,例如,(主要,已清除)和(次要,未清除)。

X.733 uses a flat, globally defined enumerated "probable-cause" to identify alarm types. This alarm data model uses a hierarchical YANG identity: "alarm-type". This enables delegation of alarm types within organizations. It also enables management to reason about abstract alarm types corresponding to base identities; see Section 3.2.

X.733使用统一的、全局定义的枚举“可能原因”来识别报警类型。此报警数据模型使用分层标识:“报警类型”。这允许在组织内委派报警类型。它还允许管理层对与基本标识对应的抽象报警类型进行推理;见第3.2节。

The YANG alarm data model has not included the majority of the X.733 alarm attributes. Rather, these are defined in an augmenting module [X.733] if "strict" X.733 compliance is needed.

YANG报警数据模型未包含大多数X.733报警属性。相反,如果需要“严格”遵守X.733,则在扩充模块[X.733]中定义这些。

F.2.2. The Alarm MIB (RFC 3877)
F.2.2. 报警MIB(RFC 3877)

The MIB in RFC 3877 takes a different approach; rather than defining a concrete data model for alarms, it defines a model to map existing SNMP-managed objects and notifications into alarm states and alarm notifications. This was necessary since MIBs were already defined with both managed objects and notifications indicating alarms, for example, "linkUp" and "linkDown" notifications in combination with "ifAdminState" and "ifOperState". So, RFC 3877 cannot really be compared to the alarm YANG module in that sense.

RFC3877中的MIB采用不同的方法;它没有为报警定义具体的数据模型,而是定义了一个模型,将现有的SNMP管理对象和通知映射到报警状态和报警通知中。这是必要的,因为MIB已经定义了托管对象和指示报警的通知,例如,“linkUp”和“linkDown”通知以及“ifAdminState”和“ifOperState”。因此,从这个意义上讲,RFC3877不能与报警模块相比较。

The Alarm MIB maps existing MIB definitions into alarms, such as "alarmModelTable". The upside of that is that an SNMP Manager can, at runtime, read the possible alarm types. This corresponds to the "alarmInventory" in the alarm YANG module.

报警MIB将现有MIB定义映射到报警中,例如“alarmModelTable”。这样做的好处是,SNMP管理器可以在运行时读取可能的报警类型。这与报警模块中的“报警清单”相对应。

F.2.3. 3GPP Alarm IRP
F.2.3. 3GPP警报IRP

The 3GPP Alarm IRP is an evolution of X.733. Main differences between the alarm YANG module and 3GPP are as follows:

3GPP报警IRP是X.733的一种改进。报警模块与3GPP之间的主要区别如下:

3GPP keeps the majority of the X.733 attributes, but the alarm YANG module does not.

3GPP保留了X.733的大部分属性,但报警模块没有。

3GPP introduced overlapping and possibly conflicting keys for alarms, alarmId, and (managed object, event type, probable cause, specific problem). (See Example 3 in Annex C of [ALARMIRP]). In the YANG alarm data model, the key for identifying an alarm instance is clearly defined by ("resource", "alarm-type-id", "alarm-type-qualifier"). See also Section 3.4 for more information.

3GPP为报警、alarmId和(受管对象、事件类型、可能原因、特定问题)引入了重叠且可能冲突的键。(参见[ALARMIRP]附录C中的示例3)。在YANG报警数据模型中,用于识别报警实例的键由(“资源”、“报警类型id”、“报警类型限定符”)明确定义。更多信息请参见第3.4节。

The alarm YANG module clearly separates the resource/ instrumentation lifecycle from the operator lifecycle. 3GPP allows operators to set the alarm severity to clear; this is not allowed by this module. Rather, an operator closes an alarm, which does not affect the severity.

报警模块清楚地将资源/仪器生命周期与操作员生命周期分开。3GPP允许操作员将警报严重性设置为清除;此模块不允许这样做。相反,操作员关闭警报,这不会影响严重性。

F.2.4. G.7710
F.2.4. G.7710

G.7710 is different than the previously referenced alarm standards. It does not define a data model for alarm reporting. It defines common equipment management function requirements including alarm instrumentation. The scope is transport networks.

G.7710不同于先前参考的报警标准。它没有定义报警报告的数据模型。它定义了通用设备管理功能要求,包括报警仪表。范围是运输网络。

The requirements in G.7710 correspond to features in the alarm YANG module in the following way:

G.7710中的要求以以下方式与报警模块中的功能相对应:

Alarm Severity Assignment Profile (ASAP): the alarm profile "/alarms/alarm-profile/".

报警严重性分配配置文件(ASAP):报警配置文件“/报警/报警配置文件/”。

Alarm Reporting Control (ARC): alarm shelving "/alarms/control/ alarm-shelving/" and the ability to control alarm notifications "/alarms/control/notify-status-changes". Alarm shelving corresponds to the use case of turning off alarm reporting for a specific resource, which is the NALM (No ALarM) state in M.3100.

报警报告控制(ARC):报警搁置“/报警/控制/报警搁置/”以及控制报警通知的能力“/报警/控制/通知状态更改”。报警搁置对应于关闭特定资源的报警报告的用例,这是M.3100中的NALM(无报警)状态。

Appendix G. Alarm-Usability Requirements

附录G.警报可用性要求

This section defines usability requirements for alarms. Alarm usability is important for an alarm interface. A data model will help in defining the format, but if the actual alarms are of low value, we have not gained the goal of alarm management.

本节定义了警报的可用性要求。报警可用性对于报警界面很重要。数据模型将有助于定义格式,但如果实际报警值较低,则我们尚未达到报警管理的目标。

Common alarm problems and their causes are summarized in Table 2. This summary is adopted to networking based on the ISA [ISA182] and Engineering Equipment Materials Users Association (EEMUA) [EEMUA] standards.

表2总结了常见报警问题及其原因。本摘要适用于基于ISA[ISA182]和工程设备材料用户协会(EEMUA)[EEMUA]标准的联网。

   +-----------------+--------------------------------+----------------+
   | Problem         | Cause                          | How this       |
   |                 |                                | module         |
   |                 |                                | addresses the  |
   |                 |                                | cause          |
   +-----------------+--------------------------------+----------------+
   | Alarms are      | "Nuisance" alarms (chattering  | Strict         |
   | generated, but  | alarms and fleeting alarms),   | definition of  |
   | they are        | faulty hardware, redundant     | alarms         |
   | ignored by the  | alarms, cascading alarms,      | requiring      |
   | operator.       | incorrect alarm settings, and  | corrective     |
   |                 | alarms that have not been      | response.  See |
   |                 | rationalized; the alarms       | alarm          |
   |                 | represent log information      | requirements   |
   |                 | rather than true alarms.       | in Table 3.    |
   |                 |                                |                |
   | When alarms     | Insufficient alarm-response    | The alarm      |
   | occur,          | procedures and not well-       | inventory      |
   | operators do    | defined alarm types.           | lists all      |
   | not know how to |                                | alarm types    |
   | respond.        |                                | and corrective |
   |                 |                                | actions.  See  |
   |                 |                                | alarm          |
   |                 |                                | requirements   |
   |                 |                                | in Table 3.    |
   |                 |                                |                |
   | The alarm       | Nuisance alarms, stale alarms, | The alarm      |
   | display is full | and alarms from equipment not  | definition and |
   | of alarms, even | in service.                    | alarm          |
   | when there is   |                                | shelving.      |
   | nothing wrong.  |                                |                |
   |                 |                                |                |
   | During a        | Incorrect prioritization of    | State-based    |
   | failure,        | alarms.  Not using advanced    | alarm model    |
   | operators are   | alarm techniques (e.g., state- | and alarm-rate |
   | flooded with so | based alarming).               | requirements;  |
   | many alarms     |                                | see Tables 4   |
   | that they do    |                                | and 5,         |
   | not know which  |                                | respectively.  |
   | ones are the    |                                |                |
   | most important. |                                |                |
   +-----------------+--------------------------------+----------------+
        
   +-----------------+--------------------------------+----------------+
   | Problem         | Cause                          | How this       |
   |                 |                                | module         |
   |                 |                                | addresses the  |
   |                 |                                | cause          |
   +-----------------+--------------------------------+----------------+
   | Alarms are      | "Nuisance" alarms (chattering  | Strict         |
   | generated, but  | alarms and fleeting alarms),   | definition of  |
   | they are        | faulty hardware, redundant     | alarms         |
   | ignored by the  | alarms, cascading alarms,      | requiring      |
   | operator.       | incorrect alarm settings, and  | corrective     |
   |                 | alarms that have not been      | response.  See |
   |                 | rationalized; the alarms       | alarm          |
   |                 | represent log information      | requirements   |
   |                 | rather than true alarms.       | in Table 3.    |
   |                 |                                |                |
   | When alarms     | Insufficient alarm-response    | The alarm      |
   | occur,          | procedures and not well-       | inventory      |
   | operators do    | defined alarm types.           | lists all      |
   | not know how to |                                | alarm types    |
   | respond.        |                                | and corrective |
   |                 |                                | actions.  See  |
   |                 |                                | alarm          |
   |                 |                                | requirements   |
   |                 |                                | in Table 3.    |
   |                 |                                |                |
   | The alarm       | Nuisance alarms, stale alarms, | The alarm      |
   | display is full | and alarms from equipment not  | definition and |
   | of alarms, even | in service.                    | alarm          |
   | when there is   |                                | shelving.      |
   | nothing wrong.  |                                |                |
   |                 |                                |                |
   | During a        | Incorrect prioritization of    | State-based    |
   | failure,        | alarms.  Not using advanced    | alarm model    |
   | operators are   | alarm techniques (e.g., state- | and alarm-rate |
   | flooded with so | based alarming).               | requirements;  |
   | many alarms     |                                | see Tables 4   |
   | that they do    |                                | and 5,         |
   | not know which  |                                | respectively.  |
   | ones are the    |                                |                |
   | most important. |                                |                |
   +-----------------+--------------------------------+----------------+
        

Table 2: Alarm Problems and Causes

表2:报警问题和原因

Based upon the above problems, EEMUA gives the following definition of a good alarm:

基于上述问题,EEMUA给出了良好警报的以下定义:

   +----------------+--------------------------------------------------+
   | Characteristic | Explanation                                      |
   +----------------+--------------------------------------------------+
   | Relevant       | Not spurious or of low operational value.        |
   |                |                                                  |
   | Unique         | Not duplicating another alarm.                   |
   |                |                                                  |
   | Timely         | Not long before any response is needed or too    |
   |                | late to do anything.                             |
   |                |                                                  |
   | Prioritized    | Indicating the importance that the operator      |
   |                | deals with the problem.                          |
   |                |                                                  |
   | Understandable | Having a message that is clear and easy to       |
   |                | understand.                                      |
   |                |                                                  |
   | Diagnostic     | Identifying the problem that has occurred.       |
   |                |                                                  |
   | Advisory       | Indicative of the action to be taken.            |
   |                |                                                  |
   | Focusing       | Drawing attention to the most important issues.  |
   +----------------+--------------------------------------------------+
        
   +----------------+--------------------------------------------------+
   | Characteristic | Explanation                                      |
   +----------------+--------------------------------------------------+
   | Relevant       | Not spurious or of low operational value.        |
   |                |                                                  |
   | Unique         | Not duplicating another alarm.                   |
   |                |                                                  |
   | Timely         | Not long before any response is needed or too    |
   |                | late to do anything.                             |
   |                |                                                  |
   | Prioritized    | Indicating the importance that the operator      |
   |                | deals with the problem.                          |
   |                |                                                  |
   | Understandable | Having a message that is clear and easy to       |
   |                | understand.                                      |
   |                |                                                  |
   | Diagnostic     | Identifying the problem that has occurred.       |
   |                |                                                  |
   | Advisory       | Indicative of the action to be taken.            |
   |                |                                                  |
   | Focusing       | Drawing attention to the most important issues.  |
   +----------------+--------------------------------------------------+
        

Table 3: Definition of a Good Alarm

表3:良好警报的定义

Vendors SHOULD rationalize all alarms according to the table above. Another crucial requirement is acceptable alarm notification rates. Vendors SHOULD make sure that they do not exceed the recommendations from EEMUA below:

供应商应根据上表合理化所有警报。另一个关键要求是可接受的报警通知率。供应商应确保其不超过以下EEMUA的建议:

   +-----------------------------------+-------------------------------+
   | Long-Term Alarm Rate in Steady    | Acceptability                 |
   | Operation                         |                               |
   +-----------------------------------+-------------------------------+
   | More than one per minute          | Very likely to be             |
   |                                   | unacceptable.                 |
   |                                   |                               |
   | One per 2 minutes                 | Likely to be overdemanding.   |
   |                                   |                               |
   | One per 5 minutes                 | Manageable.                   |
   |                                   |                               |
   | Less than one per 10 minutes      | Very likely to be acceptable. |
   +-----------------------------------+-------------------------------+
        
   +-----------------------------------+-------------------------------+
   | Long-Term Alarm Rate in Steady    | Acceptability                 |
   | Operation                         |                               |
   +-----------------------------------+-------------------------------+
   | More than one per minute          | Very likely to be             |
   |                                   | unacceptable.                 |
   |                                   |                               |
   | One per 2 minutes                 | Likely to be overdemanding.   |
   |                                   |                               |
   | One per 5 minutes                 | Manageable.                   |
   |                                   |                               |
   | Less than one per 10 minutes      | Very likely to be acceptable. |
   +-----------------------------------+-------------------------------+
        

Table 4: Acceptable Alarm Rates -- Steady State

表4:可接受报警率——稳态

   +----------------------------+--------------------------------------+
   | Number of alarms displayed | Acceptability                        |
   | in 10 minutes following a  |                                      |
   | major network problem      |                                      |
   +----------------------------+--------------------------------------+
   | More than 100              | Definitely excessive and very likely |
   |                            | to lead to the operator abandoning   |
   |                            | the use of the alarm system.         |
   |                            |                                      |
   | 20-100                     | Hard to cope with.                   |
   |                            |                                      |
   | Under 10                   | Should be manageable, but it may be  |
   |                            | difficult if several of the alarms   |
   |                            | require a complex operator response. |
   +----------------------------+--------------------------------------+
        
   +----------------------------+--------------------------------------+
   | Number of alarms displayed | Acceptability                        |
   | in 10 minutes following a  |                                      |
   | major network problem      |                                      |
   +----------------------------+--------------------------------------+
   | More than 100              | Definitely excessive and very likely |
   |                            | to lead to the operator abandoning   |
   |                            | the use of the alarm system.         |
   |                            |                                      |
   | 20-100                     | Hard to cope with.                   |
   |                            |                                      |
   | Under 10                   | Should be manageable, but it may be  |
   |                            | difficult if several of the alarms   |
   |                            | require a complex operator response. |
   +----------------------------+--------------------------------------+
        

Table 5: Acceptable Alarm Rates -- Burst

表5:可接受的报警率——突发

The numbers in Tables 4 and 5 are the sum of all alarms for a network being managed from one alarm console. So every individual system or Network Management System (NMS) contributes to these numbers.

表4和表5中的数字是从一个报警控制台管理的网络的所有报警的总和。因此,每个单独的系统或网络管理系统(NMS)都会对这些数字做出贡献。

Vendors SHOULD make sure that the following rules are used in designing the alarm interface:

供应商应确保在设计报警界面时使用以下规则:

1. Rationalize the alarms in the system to ensure that every alarm is necessary, has a purpose, and follows the cardinal rule that it requires an operator response. Adheres to the rules of Table 3.

1. 使系统中的警报合理化,以确保每个警报都是必要的、有目的的,并遵循要求操作员响应的基本规则。遵守表3的规则。

2. Audit the quality of the alarms. Talk with the operators about how well the alarm information supports them. Do they know what to do in the event of an alarm? Are they able to quickly diagnose the problem and determine the corrective action? Does the alarm text adhere to the requirements in Table 3?

2. 审计警报的质量。与操作员讨论警报信息对他们的支持程度。他们知道发生警报时该怎么办吗?他们是否能够快速诊断问题并确定纠正措施?报警文本是否符合表3中的要求?

3. Analyze and benchmark the performance of the system and compare it to the recommended metrics in Tables 4 and 5. Start by identifying nuisance alarms, as well as standing alarms at normal state and startup.

3. 对系统的性能进行分析和基准测试,并将其与表4和表5中建议的指标进行比较。首先识别干扰警报,以及正常状态和启动时的持续警报。

Acknowledgements

致谢

The authors wish to thank Viktor Leijon and Johan Nordlander for their valuable input on forming the alarm model.

作者希望感谢Viktor Leijon和Johan Nordlander在构建报警模型方面的宝贵投入。

The authors also wish to thank Nick Hancock, Joey Boyd, Tom Petch, and Balazs Lengyel for their extensive reviews and contributions to this document.

作者还要感谢Nick Hancock、Joey Boyd、Tom Petch和Balazs Lengyel对本文件的广泛评论和贡献。

Authors' Addresses

作者地址

Stefan Vallin Stefan Vallin AB

Stefan Vallin Stefan Vallin AB

   Email: stefan@wallan.se
        
   Email: stefan@wallan.se
        

Martin Bjorklund Cisco

马丁·比约克隆德·思科

   Email: mbj@tail-f.com
        
   Email: mbj@tail-f.com