From 037c99f0b76b87a2be51fd0298820860aa8fe7e3 Mon Sep 17 00:00:00 2001 From: Stone Date: Wed, 11 Nov 2020 09:02:55 -0500 Subject: [PATCH] Fault Management doc Added Data Networks toctree Changed case on doc title in top level index - changed doc directory to fault-mgmt. Added Distributed Cloud section. Broke out "OpenStack Fault Management Overview" statement about remote log collection to conditionally included file. Incorporated patch 6 review comments. Also implemented rST :abbr: for first instance of SNMP in each file. Changed port number and community string in two SNMP walk examples. Change-Id: I1afd71265e752c4c9a54bf2dc9a173b3e17332a7 Signed-off-by: Stone --- .../openstack-fault-management-overview.rest | 0 .../100-series-alarm-messages.rst | 0 .../200-series-alarm-messages.rst | 0 ...ries-maintenance-customer-log-messages.rst | 0 .../300-series-alarm-messages.rst | 0 .../400-series-alarm-messages.rst | 0 .../400-series-customer-log-messages.rst | 0 .../500-series-alarm-messages.rst | 0 .../750-series-alarm-messages.rst | 0 .../800-series-alarm-messages.rst | 0 .../900-series-alarm-messages.rst | 0 ...es-orchestration-customer-log-messages.rst | 0 ...an-snmp-community-string-using-the-cli.rst | 4 +- ...larms-management-for-distributed-cloud.rst | 24 ++++ .../cli-commands-and-paged-output.rst | 4 +- .../cli-commands-for-dc-alarms-management.rst | 90 ++++++++++++ .../configuring-snmp-trap-destinations.rst | 4 +- .../deleting-an-alarm-using-the-cli.rst | 6 +- .../enabling-snmp-support.rst | 9 +- .../events-suppression-overview.rst | 0 .../fault-management-overview.rst | 2 +- .../figures/nlc1463584178366.png | Bin .../fault-mgmt/figures/psa1420475905055.png | Bin 0 -> 40093 bytes .../figures/psa1567524091300.png | Bin .../figures/uty1463514747661.png | Bin .../figures/xyj1558447807645.png | Bin doc/source/{fault => fault-mgmt}/index.rs1 | 0 doc/source/{fault => fault-mgmt}/index.rst | 11 ++ .../openstack-alarm-messages-300s.rst | 0 .../openstack-alarm-messages-400s.rst | 0 .../openstack-alarm-messages-700s.rst | 0 .../openstack-alarm-messages-800s.rst | 0 ...mer-log-messages-270s-virtual-machines.rst | 0 ...ck-customer-log-messages-401s-services.rst | 0 ...mer-log-messages-700s-virtual-machines.rst | 0 .../openstack-fault-management-overview.rst | 21 +-- .../setting-snmp-identifying-information.rst | 4 +- .../fault-mgmt/snmp-active-alarm-table.rst | 82 +++++++++++ doc/source/fault-mgmt/snmp-event-table.rst | 128 ++++++++++++++++++ .../{fault => fault-mgmt}/snmp-overview.rst | 6 +- .../suppressing-an-alarm-using-the-cli.rst | 0 .../suppressing-and-unsuppressing-events.rst | 0 .../the-global-alarm-banner.rst | 0 doc/source/{fault => fault-mgmt}/traps.rst | 9 +- .../troubleshooting-log-collection.rst | 4 +- .../unsuppressing-an-alarm-using-the-cli.rst | 10 +- .../viewing-active-alarms-using-horizon.rst | 0 .../viewing-active-alarms-using-the-cli.rst | 101 +++++++------- .../viewing-alarm-details-using-the-cli.rst | 0 ...iewing-suppressed-alarms-using-the-cli.rst | 0 .../viewing-the-event-log-using-horizon.rst | 0 .../viewing-the-event-log-using-the-cli.rst | 16 +-- doc/source/fault/snmp-event-table.rst | 44 ------ doc/source/index.rst | 13 +- 54 files changed, 455 insertions(+), 137 deletions(-) create mode 100644 doc/source/_includes/openstack-fault-management-overview.rest rename doc/source/{fault => fault-mgmt}/100-series-alarm-messages.rst (100%) rename doc/source/{fault => fault-mgmt}/200-series-alarm-messages.rst (100%) rename doc/source/{fault => fault-mgmt}/200-series-maintenance-customer-log-messages.rst (100%) rename doc/source/{fault => fault-mgmt}/300-series-alarm-messages.rst (100%) rename doc/source/{fault => fault-mgmt}/400-series-alarm-messages.rst (100%) rename doc/source/{fault => fault-mgmt}/400-series-customer-log-messages.rst (100%) rename doc/source/{fault => fault-mgmt}/500-series-alarm-messages.rst (100%) rename doc/source/{fault => fault-mgmt}/750-series-alarm-messages.rst (100%) rename doc/source/{fault => fault-mgmt}/800-series-alarm-messages.rst (100%) rename doc/source/{fault => fault-mgmt}/900-series-alarm-messages.rst (100%) rename doc/source/{fault => fault-mgmt}/900-series-orchestration-customer-log-messages.rst (100%) rename doc/source/{fault => fault-mgmt}/adding-an-snmp-community-string-using-the-cli.rst (95%) create mode 100644 doc/source/fault-mgmt/alarms-management-for-distributed-cloud.rst rename doc/source/{fault => fault-mgmt}/cli-commands-and-paged-output.rst (86%) create mode 100644 doc/source/fault-mgmt/cli-commands-for-dc-alarms-management.rst rename doc/source/{fault => fault-mgmt}/configuring-snmp-trap-destinations.rst (94%) rename doc/source/{fault => fault-mgmt}/deleting-an-alarm-using-the-cli.rst (79%) rename doc/source/{fault => fault-mgmt}/enabling-snmp-support.rst (70%) rename doc/source/{fault => fault-mgmt}/events-suppression-overview.rst (100%) rename doc/source/{fault => fault-mgmt}/fault-management-overview.rst (95%) rename doc/source/{fault => fault-mgmt}/figures/nlc1463584178366.png (100%) create mode 100644 doc/source/fault-mgmt/figures/psa1420475905055.png rename doc/source/{fault => fault-mgmt}/figures/psa1567524091300.png (100%) rename doc/source/{fault => fault-mgmt}/figures/uty1463514747661.png (100%) rename doc/source/{fault => fault-mgmt}/figures/xyj1558447807645.png (100%) rename doc/source/{fault => fault-mgmt}/index.rs1 (100%) rename doc/source/{fault => fault-mgmt}/index.rst (90%) rename doc/source/{fault => fault-mgmt}/openstack-alarm-messages-300s.rst (100%) rename doc/source/{fault => fault-mgmt}/openstack-alarm-messages-400s.rst (100%) rename doc/source/{fault => fault-mgmt}/openstack-alarm-messages-700s.rst (100%) rename doc/source/{fault => fault-mgmt}/openstack-alarm-messages-800s.rst (100%) rename doc/source/{fault => fault-mgmt}/openstack-customer-log-messages-270s-virtual-machines.rst (100%) rename doc/source/{fault => fault-mgmt}/openstack-customer-log-messages-401s-services.rst (100%) rename doc/source/{fault => fault-mgmt}/openstack-customer-log-messages-700s-virtual-machines.rst (100%) rename doc/source/{fault => fault-mgmt}/openstack-fault-management-overview.rst (53%) rename doc/source/{fault => fault-mgmt}/setting-snmp-identifying-information.rst (84%) create mode 100644 doc/source/fault-mgmt/snmp-active-alarm-table.rst create mode 100644 doc/source/fault-mgmt/snmp-event-table.rst rename doc/source/{fault => fault-mgmt}/snmp-overview.rst (92%) rename doc/source/{fault => fault-mgmt}/suppressing-an-alarm-using-the-cli.rst (100%) rename doc/source/{fault => fault-mgmt}/suppressing-and-unsuppressing-events.rst (100%) rename doc/source/{fault => fault-mgmt}/the-global-alarm-banner.rst (100%) rename doc/source/{fault => fault-mgmt}/traps.rst (72%) rename doc/source/{fault => fault-mgmt}/troubleshooting-log-collection.rst (94%) rename doc/source/{fault => fault-mgmt}/unsuppressing-an-alarm-using-the-cli.rst (85%) rename doc/source/{fault => fault-mgmt}/viewing-active-alarms-using-horizon.rst (100%) rename doc/source/{fault => fault-mgmt}/viewing-active-alarms-using-the-cli.rst (67%) rename doc/source/{fault => fault-mgmt}/viewing-alarm-details-using-the-cli.rst (100%) rename doc/source/{fault => fault-mgmt}/viewing-suppressed-alarms-using-the-cli.rst (100%) rename doc/source/{fault => fault-mgmt}/viewing-the-event-log-using-horizon.rst (100%) rename doc/source/{fault => fault-mgmt}/viewing-the-event-log-using-the-cli.rst (97%) delete mode 100644 doc/source/fault/snmp-event-table.rst diff --git a/doc/source/_includes/openstack-fault-management-overview.rest b/doc/source/_includes/openstack-fault-management-overview.rest new file mode 100644 index 000000000..e69de29bb diff --git a/doc/source/fault/100-series-alarm-messages.rst b/doc/source/fault-mgmt/100-series-alarm-messages.rst similarity index 100% rename from doc/source/fault/100-series-alarm-messages.rst rename to doc/source/fault-mgmt/100-series-alarm-messages.rst diff --git a/doc/source/fault/200-series-alarm-messages.rst b/doc/source/fault-mgmt/200-series-alarm-messages.rst similarity index 100% rename from doc/source/fault/200-series-alarm-messages.rst rename to doc/source/fault-mgmt/200-series-alarm-messages.rst diff --git a/doc/source/fault/200-series-maintenance-customer-log-messages.rst b/doc/source/fault-mgmt/200-series-maintenance-customer-log-messages.rst similarity index 100% rename from doc/source/fault/200-series-maintenance-customer-log-messages.rst rename to doc/source/fault-mgmt/200-series-maintenance-customer-log-messages.rst diff --git a/doc/source/fault/300-series-alarm-messages.rst b/doc/source/fault-mgmt/300-series-alarm-messages.rst similarity index 100% rename from doc/source/fault/300-series-alarm-messages.rst rename to doc/source/fault-mgmt/300-series-alarm-messages.rst diff --git a/doc/source/fault/400-series-alarm-messages.rst b/doc/source/fault-mgmt/400-series-alarm-messages.rst similarity index 100% rename from doc/source/fault/400-series-alarm-messages.rst rename to doc/source/fault-mgmt/400-series-alarm-messages.rst diff --git a/doc/source/fault/400-series-customer-log-messages.rst b/doc/source/fault-mgmt/400-series-customer-log-messages.rst similarity index 100% rename from doc/source/fault/400-series-customer-log-messages.rst rename to doc/source/fault-mgmt/400-series-customer-log-messages.rst diff --git a/doc/source/fault/500-series-alarm-messages.rst b/doc/source/fault-mgmt/500-series-alarm-messages.rst similarity index 100% rename from doc/source/fault/500-series-alarm-messages.rst rename to doc/source/fault-mgmt/500-series-alarm-messages.rst diff --git a/doc/source/fault/750-series-alarm-messages.rst b/doc/source/fault-mgmt/750-series-alarm-messages.rst similarity index 100% rename from doc/source/fault/750-series-alarm-messages.rst rename to doc/source/fault-mgmt/750-series-alarm-messages.rst diff --git a/doc/source/fault/800-series-alarm-messages.rst b/doc/source/fault-mgmt/800-series-alarm-messages.rst similarity index 100% rename from doc/source/fault/800-series-alarm-messages.rst rename to doc/source/fault-mgmt/800-series-alarm-messages.rst diff --git a/doc/source/fault/900-series-alarm-messages.rst b/doc/source/fault-mgmt/900-series-alarm-messages.rst similarity index 100% rename from doc/source/fault/900-series-alarm-messages.rst rename to doc/source/fault-mgmt/900-series-alarm-messages.rst diff --git a/doc/source/fault/900-series-orchestration-customer-log-messages.rst b/doc/source/fault-mgmt/900-series-orchestration-customer-log-messages.rst similarity index 100% rename from doc/source/fault/900-series-orchestration-customer-log-messages.rst rename to doc/source/fault-mgmt/900-series-orchestration-customer-log-messages.rst diff --git a/doc/source/fault/adding-an-snmp-community-string-using-the-cli.rst b/doc/source/fault-mgmt/adding-an-snmp-community-string-using-the-cli.rst similarity index 95% rename from doc/source/fault/adding-an-snmp-community-string-using-the-cli.rst rename to doc/source/fault-mgmt/adding-an-snmp-community-string-using-the-cli.rst index 41490c9f0..a13e447be 100644 --- a/doc/source/fault/adding-an-snmp-community-string-using-the-cli.rst +++ b/doc/source/fault-mgmt/adding-an-snmp-community-string-using-the-cli.rst @@ -6,8 +6,8 @@ Add an SNMP Community String Using the CLI ========================================== -To enable SNMP services you need to define one or more SNMP community strings -using the command line interface. +To enable :abbr:`SNMP (Simple Network Management Protocol)` services you need +to define one or more SNMP community strings using the command line interface. .. rubric:: |context| diff --git a/doc/source/fault-mgmt/alarms-management-for-distributed-cloud.rst b/doc/source/fault-mgmt/alarms-management-for-distributed-cloud.rst new file mode 100644 index 000000000..81c6cfc9d --- /dev/null +++ b/doc/source/fault-mgmt/alarms-management-for-distributed-cloud.rst @@ -0,0 +1,24 @@ + +.. gge1558616301307 +.. _alarms-management-for-distributed-cloud: + +======================================= +Alarms Management for Distributed Cloud +======================================= + +The System Controller collects alarm summaries from subclouds. + +You can monitor and review a summary count of alarms from all systems by using +either the CLI or the Horizon Web interface. + +The System Controller polls all subclouds periodically for alarm summaries. + +Alarm summaries are gathered if a subcloud is online. However, they are not +gathered for a subcloud that has never been moved to the Managed state. In +this case, alarm counts are not available for the subcloud and dashes are shown +instead. + +You can access detailed alarm information for a subcloud from the System +Controller page by clicking **Alarm and Event Details** for the subcloud from +Horizon. This action automatically switches from the interface from the System +Controller page to the subcloud page. diff --git a/doc/source/fault/cli-commands-and-paged-output.rst b/doc/source/fault-mgmt/cli-commands-and-paged-output.rst similarity index 86% rename from doc/source/fault/cli-commands-and-paged-output.rst rename to doc/source/fault-mgmt/cli-commands-and-paged-output.rst index 7d6043c83..97ca0261a 100644 --- a/doc/source/fault/cli-commands-and-paged-output.rst +++ b/doc/source/fault-mgmt/cli-commands-and-paged-output.rst @@ -24,8 +24,8 @@ CLI fault management commands that perform paging include: - :command:`fm event-unsuppress-all` -To turn paging off, use the --nopaging option for the above commands. The ---nopaging option is useful for bash script writers. +To turn paging off, use the ``--nopaging`` option for the above commands. The +``--nopaging`` option is useful for bash script writers. .. _cli-commands-and-paged-output-section-N10074-N1001C-N10001: diff --git a/doc/source/fault-mgmt/cli-commands-for-dc-alarms-management.rst b/doc/source/fault-mgmt/cli-commands-for-dc-alarms-management.rst new file mode 100644 index 000000000..08148dc8e --- /dev/null +++ b/doc/source/fault-mgmt/cli-commands-for-dc-alarms-management.rst @@ -0,0 +1,90 @@ + +.. hmg1558616220923 +.. _cli-commands-for-dc-alarms-management: + +=================================================== +CLI Commands for Distributed Cloud Alarm Management +=================================================== + +You can use the CLI to review alarm summaries for the Distributed Cloud. + +.. _cli-commands-for-alarms-management-ul-ncv-m4y-fdb: + +- To show the status of all subclouds, as well as a summary count of alarms + and warnings for each one, use the :command:`alarm summary` command. + + For example: + + .. code-block:: none + + ~(keystone_admin)$ dcmanager alarm summary + +------------+-----------------+--------------+--------------+----------+----------+ + | NAME | CRITICAL_ALARMS | MAJOR_ALARMS | MINOR_ALARMS | WARNINGS | STATUS | + +------------+-----------------+--------------+--------------+----------+----------+ + | subcloud-5 | 0 | 2 | 0 | 0 | degraded | + | subcloud-1 | 0 | 0 | 0 | 0 | OK | + +------------+-----------------+--------------+--------------+----------+----------+ + + System Controller alarms and warnings are not included. + + The status is one of the following: + + **OK** + There are no alarms or warnings, or only warnings. + + **degraded** + There are minor or major alarms. + + **critical** + There are critical alarms. + +- To show the count of alarms and warnings for the System Controller, use the + :command:`fm alarm-summary` command. + + For example: + + .. code-block:: none + + ~(keystone_admin)$ fm alarm-summary + +-----------------+--------------+--------------+----------+ + | Critical Alarms | Major Alarms | Minor Alarms | Warnings | + +-----------------+--------------+--------------+----------+ + | 0 | 0 | 0 | 0 | + +-----------------+--------------+--------------+----------+ + + The following command is equivalent to the :command:`fm alarm-summary`, + providing a count of alarms and warnings for the System Controller: + + .. code-block:: none + + fm --os-region-name RegionOne alarm-summary + +- To show the alarm and warning count for a specific subcloud only, add the + ``--os-region-name`` parameter and supply the region name: + + For example: + + .. code-block:: none + + ~(keystone_admin)$ fm --os-region-name subcloud2 --os-auth-url http://192.168.121.2:5000/v3 alarm-summary + +-----------------+--------------+--------------+----------+ + | Critical Alarms | Major Alarms | Minor Alarms | Warnings | + +-----------------+--------------+--------------+----------+ + | 0 | 0 | 0 | 0 | + +-----------------+--------------+--------------+----------+ + +- To list the alarms for a subcloud: + + .. code-block:: none + + ~(keystone_admin)$ fm --os-region-name subcloud2 --os-auth-url http://192.168.121.2:5000/v3 alarm-list + +----------+--------------------------------------------+-------------------+----------+-------------------+ + | Alarm ID | Reason Text | Entity ID | Severity | Time Stamp | + +----------+--------------------------------------------+-------------------+----------+-------------------+ + | 250.001 | controller-0 Configuration is out-of-date. | host=controller-0 | major | 2018-02-06T21:37: | + | | | | | 32.650217 | + | | | | | | + | 250.001 | controller-1 Configuration is out-of-date. | host=controller-1 | major | 2018-02-06T21:37: | + | | | | | 29.121674 | + | | | | | | + +----------+--------------------------------------------+-------------------+----------+-------------------+ diff --git a/doc/source/fault/configuring-snmp-trap-destinations.rst b/doc/source/fault-mgmt/configuring-snmp-trap-destinations.rst similarity index 94% rename from doc/source/fault/configuring-snmp-trap-destinations.rst rename to doc/source/fault-mgmt/configuring-snmp-trap-destinations.rst index a8d219a89..636503914 100644 --- a/doc/source/fault/configuring-snmp-trap-destinations.rst +++ b/doc/source/fault-mgmt/configuring-snmp-trap-destinations.rst @@ -6,8 +6,8 @@ Configure SNMP Trap Destinations ================================ -SNMP trap destinations are hosts configured in |prod| to receive unsolicited -SNMP notifications. +:abbr:`SNMP (Simple Network Management Protocol)` trap destinations are hosts +configured in |prod| to receive unsolicited SNMP notifications. .. rubric:: |context| diff --git a/doc/source/fault/deleting-an-alarm-using-the-cli.rst b/doc/source/fault-mgmt/deleting-an-alarm-using-the-cli.rst similarity index 79% rename from doc/source/fault/deleting-an-alarm-using-the-cli.rst rename to doc/source/fault-mgmt/deleting-an-alarm-using-the-cli.rst index df8a00f2b..d703a71af 100644 --- a/doc/source/fault/deleting-an-alarm-using-the-cli.rst +++ b/doc/source/fault-mgmt/deleting-an-alarm-using-the-cli.rst @@ -11,8 +11,10 @@ system. .. rubric:: |context| -Manually deleting an alarm should not be done unless it is absolutely -clear that there is no reason for the alarm to be active. +.. warning:: + + Manually deleting an alarm should not be done unless it is absolutely + clear that there is no reason for the alarm to be active. You can use the command :command:`fm alarm-delete` to manually delete an alarm that remains active/set for no apparent reason, which may happen in rare diff --git a/doc/source/fault/enabling-snmp-support.rst b/doc/source/fault-mgmt/enabling-snmp-support.rst similarity index 70% rename from doc/source/fault/enabling-snmp-support.rst rename to doc/source/fault-mgmt/enabling-snmp-support.rst index 4a53712a2..ec82ae43b 100644 --- a/doc/source/fault/enabling-snmp-support.rst +++ b/doc/source/fault-mgmt/enabling-snmp-support.rst @@ -6,7 +6,8 @@ Enable SNMP Support =================== -SNMP support must be enabled before you can begin using it to monitor a system. +:abbr:`SNMP (Simple Network Management Protocol)` support must be enabled +before you can begin using it to monitor a system. .. rubric:: |context| @@ -17,10 +18,12 @@ interface on the active controller to complete the following steps. #. Define at least one SNMP community string. - See |fault-doc|: :ref:`Adding an SNMP Community String Using the CLI ` for details. + See |fault-doc|: :ref:`Adding an SNMP Community String Using the CLI + ` for details. #. Configure at least one SNMP trap destination. This will allow alarms and logs to be reported as they happen. - For more information, see :ref:`Configuring SNMP Trap Destinations `. \ No newline at end of file + For more information, see :ref:`Configuring SNMP Trap Destinations + `. \ No newline at end of file diff --git a/doc/source/fault/events-suppression-overview.rst b/doc/source/fault-mgmt/events-suppression-overview.rst similarity index 100% rename from doc/source/fault/events-suppression-overview.rst rename to doc/source/fault-mgmt/events-suppression-overview.rst diff --git a/doc/source/fault/fault-management-overview.rst b/doc/source/fault-mgmt/fault-management-overview.rst similarity index 95% rename from doc/source/fault/fault-management-overview.rst rename to doc/source/fault-mgmt/fault-management-overview.rst index 7c1b22765..7734226d0 100644 --- a/doc/source/fault/fault-management-overview.rst +++ b/doc/source/fault-mgmt/fault-management-overview.rst @@ -15,7 +15,7 @@ alarms and :ref:`Customer Log Messages for the list of customer logs reported by |prod|. You can access active and historical alarms, and customer logs using the CLI, -GUI, REST APIs and SNMP. +GUI, REST APIs and :abbr:`SNMP (Simple Network Management Protocol)`. To use the CLI, see :ref:`Viewing Active Alarms Using the CLI diff --git a/doc/source/fault/figures/nlc1463584178366.png b/doc/source/fault-mgmt/figures/nlc1463584178366.png similarity index 100% rename from doc/source/fault/figures/nlc1463584178366.png rename to doc/source/fault-mgmt/figures/nlc1463584178366.png diff --git a/doc/source/fault-mgmt/figures/psa1420475905055.png b/doc/source/fault-mgmt/figures/psa1420475905055.png new file mode 100644 index 0000000000000000000000000000000000000000..1b4ebf9649a2d3445b11c2bd748cdae36b8f66b8 GIT binary patch literal 40093 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

pmx3`BKBp@j{F6@eAne)d2q@)Mgt*xoMy9OQ} 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 literal 0 HcmV?d00001 diff --git a/doc/source/fault/figures/psa1567524091300.png b/doc/source/fault-mgmt/figures/psa1567524091300.png similarity index 100% rename from doc/source/fault/figures/psa1567524091300.png rename to doc/source/fault-mgmt/figures/psa1567524091300.png diff --git a/doc/source/fault/figures/uty1463514747661.png b/doc/source/fault-mgmt/figures/uty1463514747661.png similarity index 100% rename from doc/source/fault/figures/uty1463514747661.png rename to doc/source/fault-mgmt/figures/uty1463514747661.png diff --git a/doc/source/fault/figures/xyj1558447807645.png b/doc/source/fault-mgmt/figures/xyj1558447807645.png similarity index 100% rename from doc/source/fault/figures/xyj1558447807645.png rename to doc/source/fault-mgmt/figures/xyj1558447807645.png diff --git a/doc/source/fault/index.rs1 b/doc/source/fault-mgmt/index.rs1 similarity index 100% rename from doc/source/fault/index.rs1 rename to doc/source/fault-mgmt/index.rs1 diff --git a/doc/source/fault/index.rst b/doc/source/fault-mgmt/index.rst similarity index 90% rename from doc/source/fault/index.rst rename to doc/source/fault-mgmt/index.rst index b9e0771d9..dab92946d 100644 --- a/doc/source/fault/index.rst +++ b/doc/source/fault-mgmt/index.rst @@ -88,10 +88,21 @@ SNMP enabling-snmp-support traps configuring-snmp-trap-destinations + snmp-active-alarm-table snmp-event-table adding-an-snmp-community-string-using-the-cli setting-snmp-identifying-information +********************************** +Distributed Cloud alarm management +********************************** + +.. toctree:: + :maxdepth: 1 + + alarms-management-for-distributed-cloud + cli-commands-for-dc-alarms-management + ****************************** Troubleshooting log collection ****************************** diff --git a/doc/source/fault/openstack-alarm-messages-300s.rst b/doc/source/fault-mgmt/openstack-alarm-messages-300s.rst similarity index 100% rename from doc/source/fault/openstack-alarm-messages-300s.rst rename to doc/source/fault-mgmt/openstack-alarm-messages-300s.rst diff --git a/doc/source/fault/openstack-alarm-messages-400s.rst b/doc/source/fault-mgmt/openstack-alarm-messages-400s.rst similarity index 100% rename from doc/source/fault/openstack-alarm-messages-400s.rst rename to doc/source/fault-mgmt/openstack-alarm-messages-400s.rst diff --git a/doc/source/fault/openstack-alarm-messages-700s.rst b/doc/source/fault-mgmt/openstack-alarm-messages-700s.rst similarity index 100% rename from doc/source/fault/openstack-alarm-messages-700s.rst rename to doc/source/fault-mgmt/openstack-alarm-messages-700s.rst diff --git a/doc/source/fault/openstack-alarm-messages-800s.rst b/doc/source/fault-mgmt/openstack-alarm-messages-800s.rst similarity index 100% rename from doc/source/fault/openstack-alarm-messages-800s.rst rename to doc/source/fault-mgmt/openstack-alarm-messages-800s.rst diff --git a/doc/source/fault/openstack-customer-log-messages-270s-virtual-machines.rst b/doc/source/fault-mgmt/openstack-customer-log-messages-270s-virtual-machines.rst similarity index 100% rename from doc/source/fault/openstack-customer-log-messages-270s-virtual-machines.rst rename to doc/source/fault-mgmt/openstack-customer-log-messages-270s-virtual-machines.rst diff --git a/doc/source/fault/openstack-customer-log-messages-401s-services.rst b/doc/source/fault-mgmt/openstack-customer-log-messages-401s-services.rst similarity index 100% rename from doc/source/fault/openstack-customer-log-messages-401s-services.rst rename to doc/source/fault-mgmt/openstack-customer-log-messages-401s-services.rst diff --git a/doc/source/fault/openstack-customer-log-messages-700s-virtual-machines.rst b/doc/source/fault-mgmt/openstack-customer-log-messages-700s-virtual-machines.rst similarity index 100% rename from doc/source/fault/openstack-customer-log-messages-700s-virtual-machines.rst rename to doc/source/fault-mgmt/openstack-customer-log-messages-700s-virtual-machines.rst diff --git a/doc/source/fault/openstack-fault-management-overview.rst b/doc/source/fault-mgmt/openstack-fault-management-overview.rst similarity index 53% rename from doc/source/fault/openstack-fault-management-overview.rst rename to doc/source/fault-mgmt/openstack-fault-management-overview.rst index 6dcd056e4..c79109b93 100644 --- a/doc/source/fault/openstack-fault-management-overview.rst +++ b/doc/source/fault-mgmt/openstack-fault-management-overview.rst @@ -2,18 +2,23 @@ .. ekn1458933172232 .. _openstack-fault-management-overview: -======== -Overview -======== +=================================== +OpenStack Fault Management Overview +=================================== |prod-os| is a containerized application running on top of |prod|. -All Fault Management related interfaces for displaying alarms and logs, -suppressing/unsuppressing events, enabling SNMP and enabling remote log -collection are available on the |prod| REST APIs, CLIs and/or GUIs. - .. xreflink See :ref:`Fault Management Overview ` for details on these interfaces. This section provides the list of OpenStack related Alarms and Customer Logs that are monitored and reported for the |prod-os| application through the -|prod| fault management interfaces. \ No newline at end of file +|prod| fault management interfaces. + +All Fault Management related interfaces for displaying alarms and logs, +suppressing/unsuppressing events, and enabling :abbr:`SNMP (Simple Network +Management Protocol)` are available on the |prod| REST APIs, :abbr:`CLIs +(Command Line Interfaces)` and/or GUIs. + +.. :only: partner + + .. include:: ../_includes/openstack-fault-management-overview.rest \ No newline at end of file diff --git a/doc/source/fault/setting-snmp-identifying-information.rst b/doc/source/fault-mgmt/setting-snmp-identifying-information.rst similarity index 84% rename from doc/source/fault/setting-snmp-identifying-information.rst rename to doc/source/fault-mgmt/setting-snmp-identifying-information.rst index 3d3423d15..e5930126c 100644 --- a/doc/source/fault/setting-snmp-identifying-information.rst +++ b/doc/source/fault-mgmt/setting-snmp-identifying-information.rst @@ -6,8 +6,8 @@ Set SNMP Identifying Information ================================ -You can set SNMP system information including name, location and contact -details. +You can set :abbr:`SNMP (Simple Network Management Protocol)` system +information including name, location and contact details. .. rubric:: |proc| diff --git a/doc/source/fault-mgmt/snmp-active-alarm-table.rst b/doc/source/fault-mgmt/snmp-active-alarm-table.rst new file mode 100644 index 000000000..96a0c189d --- /dev/null +++ b/doc/source/fault-mgmt/snmp-active-alarm-table.rst @@ -0,0 +1,82 @@ + +.. rst1448309104743 +.. _rst1448309104743: + +======================== +SNMP Active Alarms Table +======================== + +|prod| supports the :abbr:`SNMP (Simple Network Management Protocol)` Active +alarm table from the Wind River Alarm MIB via SNMP. + +The active alarm table contains a list of all active or set alarms in the +system. Each entry in the table includes the following variables: + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +An external SNMP Manager can examine the Active Alarm table contents by doing +an SNMP Walk of the table. + +For example, below is the output for a simple :command:`snmpwalk` cli tool +showing a table with three rows (i.e. three active alarms). + +.. code-block:: none + + $ snmpwalk -v2c -c public udp:10.10.10.2:161 WRS-ALARM-MIB::wrsAlarmActiveTable + + WRS-ALARM-MIB::wrsAlarmActiveIndex.1 = Wrong Type (should be Gauge32 or Unsigned32): INTEGER: 1 + WRS-ALARM-MIB::wrsAlarmActiveIndex.2 = Wrong Type (should be Gauge32 or Unsigned32): INTEGER: 2 + WRS-ALARM-MIB::wrsAlarmActiveIndex.3 = Wrong Type (should be Gauge32 or Unsigned32): INTEGER: 3 + WRS-ALARM-MIB::wrsAlarmActiveUuid.1 = STRING: 742c2d64-df2e-4feb-8607-1ae6de11f15 + WRS-ALARM-MIB::wrsAlarmActiveUuid.2 = STRING: 742c2d64-df2e-4feb-8607-1ae6de11f15 + WRS-ALARM-MIB::wrsAlarmActiveUuid.3 = STRING: 742c2d64-df2e-4feb-8607-1ae6de11f15 + WRS-ALARM-MIB::wrsAlarmActiveAlarmId.1 = STRING: "100.114" + WRS-ALARM-MIB::wrsAlarmActiveAlarmId.2 = STRING: "100.114" + WRS-ALARM-MIB::wrsAlarmActiveAlarmId.3 = STRING: "100.114" + WRS-ALARM-MIB::wrsAlarmActiveEntityInstanceId.1 = STRING: system=7dd633ba-96f9-47ef-8531-983e4ca89fa3.host=controller-0.ntp + WRS-ALARM-MIB::wrsAlarmActiveEntityInstanceId.2 = STRING: system=7dd633ba-96f9-47ef-8531-983e4ca89fa3.host=controller-0.ntp=162.159.200.123 + WRS-ALARM-MIB::wrsAlarmActiveEntityInstanceId.3 = STRING: system=7dd633ba-96f9-47ef-8531-983e4ca89fa3.host=controller-0.ntp=213.199.225.40 + WRS-ALARM-MIB::wrsAlarmActiveDateAndTime.1 = STRING: 2020-11-11,13:8:4.0,+0:0 + WRS-ALARM-MIB::wrsAlarmActiveDateAndTime.2 = STRING: 2020-11-13,13:13:53.0,+0:0 + WRS-ALARM-MIB::wrsAlarmActiveDateAndTime.3 = STRING: 2020-11-13,13:13:53.0,+0:0 + WRS-ALARM-MIB::wrsAlarmActiveAlarmSeverity.1 = INTEGER: major(3) + WRS-ALARM-MIB::wrsAlarmActiveAlarmSeverity.2 = INTEGER: minor(2) + WRS-ALARM-MIB::wrsAlarmActiveAlarmSeverity.3 = INTEGER: minor(2) + WRS-ALARM-MIB::wrsAlarmActiveReasonText.1 = STRING: NTP configuration does not contain any valid or reachable NTP servers. + WRS-ALARM-MIB::wrsAlarmActiveReasonText.2 = STRING: NTP address 162.159.200.123 is not a valid or a reachable NTP server. + WRS-ALARM-MIB::wrsAlarmActiveReasonText.3 = STRING: NTP address 213.199.225.40 is not a valid or a reachable NTP server. + WRS-ALARM-MIB::wrsAlarmActiveEventType.1 = INTEGER: operationalViolation(7) + WRS-ALARM-MIB::wrsAlarmActiveEventType.2 = INTEGER: operationalViolation(7) + WRS-ALARM-MIB::wrsAlarmActiveEventType.3 = INTEGER: operationalViolation(7) + WRS-ALARM-MIB::wrsAlarmActiveProbableCause.1 = INTEGER: threshold-crossed(50) + WRS-ALARM-MIB::wrsAlarmActiveProbableCause.2 = INTEGER: threshold-crossed(50) + WRS-ALARM-MIB::wrsAlarmActiveProbableCause.3 = INTEGER: threshold-crossed(50) + WRS-ALARM-MIB::wrsAlarmActiveProposedRepairAction.1 = STRING: Monitor and if condition persists, contact next level of support. + WRS-ALARM-MIB::wrsAlarmActiveProposedRepairAction.2 = STRING: Monitor and if condition persists, contact next level of support. + WRS-ALARM-MIB::wrsAlarmActiveProposedRepairAction.3 = STRING: Monitor and if condition persists, contact next level of support. + WRS-ALARM-MIB::wrsAlarmActiveServiceAffecting.1 = INTEGER: false(0) + WRS-ALARM-MIB::wrsAlarmActiveServiceAffecting.2 = INTEGER: false(0) + WRS-ALARM-MIB::wrsAlarmActiveServiceAffecting.3 = INTEGER: false(0) + WRS-ALARM-MIB::wrsAlarmActiveSuppressionAllowed.1 = INTEGER: true(1) + WRS-ALARM-MIB::wrsAlarmActiveSuppressionAllowed.2 = INTEGER: true(1) + WRS-ALARM-MIB::wrsAlarmActiveSuppressionAllowed.3 = INTEGER: true(1) \ No newline at end of file diff --git a/doc/source/fault-mgmt/snmp-event-table.rst b/doc/source/fault-mgmt/snmp-event-table.rst new file mode 100644 index 000000000..65544101d --- /dev/null +++ b/doc/source/fault-mgmt/snmp-event-table.rst @@ -0,0 +1,128 @@ + +.. rdr1552680506097 +.. _snmp-event-table: + +================ +SNMP Event Table +================ + +|prod| supports the Event table from the Wind River Alarm MIB via :abbr:`SNMP +(Simple Network Management Protocol)`. + +The Event table contains a historic list of all alarm events (SETs and CLEARs) +and customer log events. + +Each entry in the table includes the following variables: + +.. _snmp-event-table-ul-y1w-4lk-qq: + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +An external SNMP Manager can examine the Event table contents by doing an SNMP +Walk of the table. + +For example, below is the output for a simple :command:`snmpwalk` cli tool. + +.. code-block:: none + + $ snmpwalk -v2c -c public udp:10.10.10.2:161 WRS-ALARM-MIB::wrsEventTable + + WRS-ALARM-MIB::wrsEventIndex.1 = Wrong Type (should be Gauge32 or Unsigned32): INTEGER: 1 + WRS-ALARM-MIB::wrsEventIndex.2 = Wrong Type (should be Gauge32 or Unsigned32): INTEGER: 2 + WRS-ALARM-MIB::wrsEventIndex.3 = Wrong Type (should be Gauge32 or Unsigned32): INTEGER: 3 + WRS-ALARM-MIB::wrsEventIndex.4 = Wrong Type (should be Gauge32 or Unsigned32): INTEGER: 4 + WRS-ALARM-MIB::wrsEventIndex.5 = Wrong Type (should be Gauge32 or Unsigned32): INTEGER: 5 + ... + WRS-ALARM-MIB::wrsEventUuid.1 = STRING: + WRS-ALARM-MIB::wrsEventUuid.2 = STRING: a8711827-ca55-420e-bac5-d5ad6598275 + WRS-ALARM-MIB::wrsEventUuid.3 = STRING: a8711827-ca55-420e-bac5-d5ad6598275 + WRS-ALARM-MIB::wrsEventUuid.4 = STRING: a8711827-ca55-420e-bac5-d5ad6598275 + WRS-ALARM-MIB::wrsEventUuid.5 = STRING: a8711827-ca55-420e-bac5-d5ad6598275 + ... + WRS-ALARM-MIB::wrsEventEventId.1 = STRING: "200.022" + WRS-ALARM-MIB::wrsEventEventId.2 = STRING: "750.004" + WRS-ALARM-MIB::wrsEventEventId.3 = STRING: "750.004" + WRS-ALARM-MIB::wrsEventEventId.4 = STRING: "750.004" + WRS-ALARM-MIB::wrsEventEventId.5 = STRING: "750.004" + ... + WRS-ALARM-MIB::wrsEventState.1 = INTEGER: log(3) + WRS-ALARM-MIB::wrsEventState.2 = INTEGER: set(1) + WRS-ALARM-MIB::wrsEventState.3 = INTEGER: clear(0) + WRS-ALARM-MIB::wrsEventState.4 = INTEGER: set(1) + WRS-ALARM-MIB::wrsEventState.5 = INTEGER: clear(0) + ... + WRS-ALARM-MIB::wrsEventEntityInstanceId.1 = STRING: system=7dd633ba-96f9-47ef-8531-983e4ca89fa3.host=controller-0.status=online + WRS-ALARM-MIB::wrsEventEntityInstanceId.2 = STRING: system=7dd633ba-96f9-47ef-8531-983e4ca89fa3.k8s_application=nginx-ingress-controller + WRS-ALARM-MIB::wrsEventEntityInstanceId.3 = STRING: system=7dd633ba-96f9-47ef-8531-983e4ca89fa3.k8s_application=nginx-ingress-controller + WRS-ALARM-MIB::wrsEventEntityInstanceId.4 = STRING: system=7dd633ba-96f9-47ef-8531-983e4ca89fa3.k8s_application=cert-manager + WRS-ALARM-MIB::wrsEventEntityInstanceId.5 = STRING: system=7dd633ba-96f9-47ef-8531-983e4ca89fa3.k8s_application=cert-manager + ... + WRS-ALARM-MIB::wrsEventDateAndTime.1 = STRING: 2020-11-7,21:31:32.0,+0:0 + WRS-ALARM-MIB::wrsEventDateAndTime.2 = STRING: 2020-11-7,21:34:33.0,+0:0 + WRS-ALARM-MIB::wrsEventDateAndTime.3 = STRING: 2020-11-7,21:41:24.0,+0:0 + WRS-ALARM-MIB::wrsEventDateAndTime.4 = STRING: 2020-11-7,21:41:45.0,+0:0 + WRS-ALARM-MIB::wrsEventDateAndTime.5 = STRING: 2020-11-7,21:43:4.0,+0:0 + ... + WRS-ALARM-MIB::wrsEventSeverity.1 = INTEGER: not-applicable(0) + WRS-ALARM-MIB::wrsEventSeverity.2 = INTEGER: warning(1) + WRS-ALARM-MIB::wrsEventSeverity.3 = INTEGER: warning(1) + WRS-ALARM-MIB::wrsEventSeverity.4 = INTEGER: warning(1) + WRS-ALARM-MIB::wrsEventSeverity.5 = INTEGER: warning(1) + ... + WRS-ALARM-MIB::wrsEventReasonText.1 = STRING: controller-0 is now 'online' + WRS-ALARM-MIB::wrsEventReasonText.2 = STRING: Application Apply In Progress + WRS-ALARM-MIB::wrsEventReasonText.3 = STRING: Application Apply In Progress + WRS-ALARM-MIB::wrsEventReasonText.4 = STRING: Application Apply In Progress + WRS-ALARM-MIB::wrsEventReasonText.5 = STRING: Application Apply In Progress + ... + WRS-ALARM-MIB::wrsEventEventType.1 = INTEGER: other(0) + WRS-ALARM-MIB::wrsEventEventType.2 = INTEGER: other(0) + WRS-ALARM-MIB::wrsEventEventType.3 = INTEGER: other(0) + WRS-ALARM-MIB::wrsEventEventType.4 = INTEGER: other(0) + WRS-ALARM-MIB::wrsEventEventType.5 = INTEGER: other(0) + ... + WRS-ALARM-MIB::wrsEventProbableCause.1 = INTEGER: not-applicable(0) + WRS-ALARM-MIB::wrsEventProbableCause.2 = INTEGER: not-applicable(0) + WRS-ALARM-MIB::wrsEventProbableCause.3 = INTEGER: not-applicable(0) + WRS-ALARM-MIB::wrsEventProbableCause.4 = INTEGER: not-applicable(0) + WRS-ALARM-MIB::wrsEventProbableCause.5 = INTEGER: not-applicable(0) + ... + WRS-ALARM-MIB::wrsEventProposedRepairAction.1 = STRING: + WRS-ALARM-MIB::wrsEventProposedRepairAction.2 = STRING: No action required. + WRS-ALARM-MIB::wrsEventProposedRepairAction.3 = STRING: No action required. + WRS-ALARM-MIB::wrsEventProposedRepairAction.4 = STRING: No action required. + WRS-ALARM-MIB::wrsEventProposedRepairAction.5 = STRING: No action required. + ... + WRS-ALARM-MIB::wrsEventServiceAffecting.1 = INTEGER: false(0) + WRS-ALARM-MIB::wrsEventServiceAffecting.2 = INTEGER: true(1) + WRS-ALARM-MIB::wrsEventServiceAffecting.3 = INTEGER: true(1) + WRS-ALARM-MIB::wrsEventServiceAffecting.4 = INTEGER: true(1) + WRS-ALARM-MIB::wrsEventServiceAffecting.5 = INTEGER: true(1) + ... + WRS-ALARM-MIB::wrsEventSuppressionAllowed.1 = INTEGER: false(0) + WRS-ALARM-MIB::wrsEventSuppressionAllowed.2 = INTEGER: false(0) + WRS-ALARM-MIB::wrsEventSuppressionAllowed.3 = INTEGER: false(0) + WRS-ALARM-MIB::wrsEventSuppressionAllowed.4 = INTEGER: false(0) + WRS-ALARM-MIB::wrsEventSuppressionAllowed.5 = INTEGER: false(0) \ No newline at end of file diff --git a/doc/source/fault/snmp-overview.rst b/doc/source/fault-mgmt/snmp-overview.rst similarity index 92% rename from doc/source/fault/snmp-overview.rst rename to doc/source/fault-mgmt/snmp-overview.rst index 5a7a89e37..f920dfa8c 100644 --- a/doc/source/fault/snmp-overview.rst +++ b/doc/source/fault-mgmt/snmp-overview.rst @@ -6,7 +6,11 @@ SNMP Overview ============= -|prod| can generate SNMP traps for |prod| Alarm Events and Customer Log Events. +|prod| can generate :abbr:`SNMP (Simple Network Management Protocol)` traps for +|prod| Alarm Events and Customer Log Events. + +|prod| also supports SNMP GETs and WALKs of an Active Alarm table and a +historical Event (alarm SET/CLEAR and log) table. This includes alarms based on hardware sensors monitored by board management controllers. diff --git a/doc/source/fault/suppressing-an-alarm-using-the-cli.rst b/doc/source/fault-mgmt/suppressing-an-alarm-using-the-cli.rst similarity index 100% rename from doc/source/fault/suppressing-an-alarm-using-the-cli.rst rename to doc/source/fault-mgmt/suppressing-an-alarm-using-the-cli.rst diff --git a/doc/source/fault/suppressing-and-unsuppressing-events.rst b/doc/source/fault-mgmt/suppressing-and-unsuppressing-events.rst similarity index 100% rename from doc/source/fault/suppressing-and-unsuppressing-events.rst rename to doc/source/fault-mgmt/suppressing-and-unsuppressing-events.rst diff --git a/doc/source/fault/the-global-alarm-banner.rst b/doc/source/fault-mgmt/the-global-alarm-banner.rst similarity index 100% rename from doc/source/fault/the-global-alarm-banner.rst rename to doc/source/fault-mgmt/the-global-alarm-banner.rst diff --git a/doc/source/fault/traps.rst b/doc/source/fault-mgmt/traps.rst similarity index 72% rename from doc/source/fault/traps.rst rename to doc/source/fault-mgmt/traps.rst index f2d66327b..fb911895a 100644 --- a/doc/source/fault/traps.rst +++ b/doc/source/fault-mgmt/traps.rst @@ -6,8 +6,9 @@ Traps ===== -|prod| supports SNMP traps. Traps send unsolicited information to monitoring -software when significant events occur. +|prod| supports :abbr:`SNMP (Simple Network Management Protocol)` traps. Traps +send unsolicited information to monitoring software when significant events +occur. The following traps are defined. @@ -28,7 +29,9 @@ The following traps are defined. - **wrsAlarmHierarchicalClear** .. note:: - Customer Logs always result in **wrsAlarmMessage** traps. + Customer Logs always result in **wrsAlarmMessage** traps. |prod| uses Wind + River Systems (**wrs**) Enterprise Registration and Alarm MIBs. See + :ref:`SNMP Overview ` for details. For Critical, Major, Minor, Warning, and Message traps, all variables in the active alarm table are included as varbinds \(variable bindings\), where each diff --git a/doc/source/fault/troubleshooting-log-collection.rst b/doc/source/fault-mgmt/troubleshooting-log-collection.rst similarity index 94% rename from doc/source/fault/troubleshooting-log-collection.rst rename to doc/source/fault-mgmt/troubleshooting-log-collection.rst index 91ac87338..cec72bbe0 100644 --- a/doc/source/fault/troubleshooting-log-collection.rst +++ b/doc/source/fault-mgmt/troubleshooting-log-collection.rst @@ -53,13 +53,13 @@ Collect Tool Caveats and Usage - For systems with an up-time of more than 2 months, use the date range options. - Use --start-date for the collection of logs on and after a given date: + Use ``--start-date`` for the collection of logs on and after a given date: .. code-block:: none (keystone_admin)$ collect [--start-date | -s] - Use --end-date for the collection of logs on and before a given date : + Use ``--end-date`` for the collection of logs on and before a given date: .. code-block:: none diff --git a/doc/source/fault/unsuppressing-an-alarm-using-the-cli.rst b/doc/source/fault-mgmt/unsuppressing-an-alarm-using-the-cli.rst similarity index 85% rename from doc/source/fault/unsuppressing-an-alarm-using-the-cli.rst rename to doc/source/fault-mgmt/unsuppressing-an-alarm-using-the-cli.rst index ff581675e..1be9a9657 100644 --- a/doc/source/fault/unsuppressing-an-alarm-using-the-cli.rst +++ b/doc/source/fault-mgmt/unsuppressing-an-alarm-using-the-cli.rst @@ -20,16 +20,16 @@ If you need to reactivate a suppressed alarm, you can do so using the CLI. where - **** - is a comma separated list of **Alarm ID** s of alarms to unsuppress. + ```` + is a comma separated **Alarm ID** list of alarms to unsuppress. - **--nowrap** + ``--nowrap`` disables output wrapping. - **--nopaging** + ``--nopaging`` disables paged output - **--uuid** + ``--uuid`` includes the alarm type UUIDs in the output. Alarm type\(s\) with the specified will be unsuppressed. diff --git a/doc/source/fault/viewing-active-alarms-using-horizon.rst b/doc/source/fault-mgmt/viewing-active-alarms-using-horizon.rst similarity index 100% rename from doc/source/fault/viewing-active-alarms-using-horizon.rst rename to doc/source/fault-mgmt/viewing-active-alarms-using-horizon.rst diff --git a/doc/source/fault/viewing-active-alarms-using-the-cli.rst b/doc/source/fault-mgmt/viewing-active-alarms-using-the-cli.rst similarity index 67% rename from doc/source/fault/viewing-active-alarms-using-the-cli.rst rename to doc/source/fault-mgmt/viewing-active-alarms-using-the-cli.rst index eb50a923e..1886e41d0 100644 --- a/doc/source/fault/viewing-active-alarms-using-the-cli.rst +++ b/doc/source/fault-mgmt/viewing-active-alarms-using-the-cli.rst @@ -15,7 +15,8 @@ You can use the CLI to find information about currently active system alarms. of alarms and warnings for the system. To review detailed information about a specific alarm instance, see - :ref:`Viewing Alarm Details Using the CLI `. +:ref:`Viewing Alarm Details Using the CLI +`. .. rubric:: |proc| @@ -48,56 +49,56 @@ To review detailed information about a specific alarm instance, see for more details on string syntax. Also see additional query examples below. - You can use one of the following --query command filters to view + You can use one of the following ``--query`` command filters to view specific subsets of alarms, or a particular alarm: .. table:: :widths: auto - +----------------------------------------------------------------------------+----------------------------------------------------------------------------+ - | Query Filter | Comment | - +============================================================================+============================================================================+ - | :command:`uuid=` | Query alarms by UUID, for example: | - | | | - | | .. code-block:: none | - | | | - | | ~(keystone_admin)$ fm alarm-list --query uuid=4ab5698a-19cb... | - +----------------------------------------------------------------------------+----------------------------------------------------------------------------+ - | :command:`alarm\_id=` | Query alarms by alarm ID, for example: | - | | | - | | .. code-block:: none | - | | | - | | ~(keystone_admin)$ fm alarm-list --query alarm_id=100.104 | - +----------------------------------------------------------------------------+----------------------------------------------------------------------------+ - | :command:`alarm\_type=` | Query alarms by type, for example: | - | | | - | | .. code-block:: none | - | | | - | | ~(keystone_admin)$ fm alarm-list --query \ | - | | alarm_type=operational-violation | - +----------------------------------------------------------------------------+----------------------------------------------------------------------------+ - | :command:`entity\_type\_id=` | Query alarms by entity type ID, for example: | - | | | - | | .. code-block:: none | - | | | - | | ~(keystone_admin)$ fm alarm-list --query \ | - | | entity_type_id=system.host | - +----------------------------------------------------------------------------+----------------------------------------------------------------------------+ - | :command:`entity\_instance\_id=` | Query alarms by entity instance id, for example: | - | | | - | | .. code-block:: none | - | | | - | | ~(keystone_admin)$ fm alarm-list --query \ | - | | entity_instance_id=host=worker-0 | - +----------------------------------------------------------------------------+----------------------------------------------------------------------------+ - | :command:`severity=` | Query alarms by severity type, for example: | - | | | - | | .. code-block:: none | - | | | - | | ~(keystone_admin)$ fm alarm-list --query severity=warning | - | | | - | | The valid severity types are critical, major, minor, and warning. | - +----------------------------------------------------------------------------+----------------------------------------------------------------------------+ + +-----------------------------------------------------+----------------------------------------------------------------------------+ + | Query Filter | Comment | + +=====================================================+============================================================================+ + | :command:`uuid=` | Query alarms by UUID, for example: | + | | | + | | .. code-block:: none | + | | | + | | ~(keystone_admin)$ fm alarm-list --query uuid=4ab5698a-19cb... | + +-----------------------------------------------------+----------------------------------------------------------------------------+ + | :command:`alarm\_id=` | Query alarms by alarm ID, for example: | + | | | + | | .. code-block:: none | + | | | + | | ~(keystone_admin)$ fm alarm-list --query alarm_id=100.104 | + +-----------------------------------------------------+----------------------------------------------------------------------------+ + | :command:`alarm\_type=` | Query alarms by type, for example: | + | | | + | | .. code-block:: none | + | | | + | | ~(keystone_admin)$ fm alarm-list --query \ | + | | alarm_type=operational-violation | + +-----------------------------------------------------+----------------------------------------------------------------------------+ + | :command:`entity\_type\_id=` | Query alarms by entity type ID, for example: | + | | | + | | .. code-block:: none | + | | | + | | ~(keystone_admin)$ fm alarm-list --query \ | + | | entity_type_id=system.host | + +-----------------------------------------------------+----------------------------------------------------------------------------+ + | :command:`entity\_instance\_id=` | Query alarms by entity instance id, for example: | + | | | + | | .. code-block:: none | + | | | + | | ~(keystone_admin)$ fm alarm-list --query \ | + | | entity_instance_id=host=worker-0 | + +-----------------------------------------------------+----------------------------------------------------------------------------+ + | :command:`severity=` | Query alarms by severity type, for example: | + | | | + | | .. code-block:: none | + | | | + | | ~(keystone_admin)$ fm alarm-list --query severity=warning | + | | | + | | The valid severity types are critical, major, minor, and warning. | + +-----------------------------------------------------+----------------------------------------------------------------------------+ Query command filters can be combined into a single expression separated by semicolons, as illustrated in the following example: @@ -111,7 +112,7 @@ To review detailed information about a specific alarm instance, see their Alarm ID set to S<\(alarm-id\)>. **--uuid** - The --uuid option on the :command:`fm alarm-list` command lists the + The ``--uuid`` option on the :command:`fm alarm-list` command lists the active alarm list with unique UUIDs for each alarm such that this UUID can be used in display alarm details with the :command:`fm alarm-show` command. @@ -122,7 +123,7 @@ To review detailed information about a specific alarm instance, see **--mgmt\_affecting** Management affecting alarms prevent some critical administrative actions from being performed. For example, software upgrades. Using the - --mgmt\_affecting option will list an additional column in the output, + ``--mgmt\_affecting`` option will list an additional column in the output, 'Management Affecting', which indicates whether the alarm is management affecting or not. @@ -133,7 +134,7 @@ To review detailed information about a specific alarm instance, see .. code-block:: none - ~(keystone_admin)$ fm alarm-list --uuid + ~(keystone_admin)$ fm alarm-list ``--uuid`` +--------------+-------+------------------+---------------+----------+-----------+ | UUID | Alarm | Reason Text | Entity ID | Severity | Time | | | ID | | | | Stamp | @@ -189,4 +190,4 @@ To review detailed information about a specific alarm instance, see | | locked to take it | | | | 794640 | | | out-of-service. | | | | | | | | | | | | - +-------+-------------------+---------------+----------+------------+-------------+ \ No newline at end of file + +-------+-------------------+---------------+----------+------------+-------------+ diff --git a/doc/source/fault/viewing-alarm-details-using-the-cli.rst b/doc/source/fault-mgmt/viewing-alarm-details-using-the-cli.rst similarity index 100% rename from doc/source/fault/viewing-alarm-details-using-the-cli.rst rename to doc/source/fault-mgmt/viewing-alarm-details-using-the-cli.rst diff --git a/doc/source/fault/viewing-suppressed-alarms-using-the-cli.rst b/doc/source/fault-mgmt/viewing-suppressed-alarms-using-the-cli.rst similarity index 100% rename from doc/source/fault/viewing-suppressed-alarms-using-the-cli.rst rename to doc/source/fault-mgmt/viewing-suppressed-alarms-using-the-cli.rst diff --git a/doc/source/fault/viewing-the-event-log-using-horizon.rst b/doc/source/fault-mgmt/viewing-the-event-log-using-horizon.rst similarity index 100% rename from doc/source/fault/viewing-the-event-log-using-horizon.rst rename to doc/source/fault-mgmt/viewing-the-event-log-using-horizon.rst diff --git a/doc/source/fault/viewing-the-event-log-using-the-cli.rst b/doc/source/fault-mgmt/viewing-the-event-log-using-the-cli.rst similarity index 97% rename from doc/source/fault/viewing-the-event-log-using-the-cli.rst rename to doc/source/fault-mgmt/viewing-the-event-log-using-the-cli.rst index 5ee0ceacf..eb3ebf05e 100644 --- a/doc/source/fault/viewing-the-event-log-using-the-cli.rst +++ b/doc/source/fault-mgmt/viewing-the-event-log-using-the-cli.rst @@ -32,27 +32,27 @@ You can use CLI commands to work with historical alarms and logs in the event lo Optional arguments: - **-q QUERY, --query QUERY** + ``-q QUERY, --query QUERY`` \- key\[op\]data\_type::value; list. data\_type is optional, but if supplied must be string, integer, float, or boolean. - **-l NUMBER, --limit NUMBER** + ``-l NUMBER, --limit NUMBER`` Maximum number of event logs to return. - **--alarms** + ``--alarms`` Show historical alarms set/clears only. - **--logs** + ``--logs`` Show customer logs only. - **--include\_suppress** + ``--include\_suppress`` Show suppressed alarms as well as unsuppressed alarms. - **--uuid** + ``--uuid`` Include the unique event UUID in the listing such that it can be used in displaying event details with :command:`fm event-show` . - **-nopaging** + ``-nopaging`` Disable output paging. For details on CLI paging, see @@ -96,7 +96,7 @@ You can use CLI commands to work with historical alarms and logs in the event lo +-----------+-----+-----+--------------------+-----------------+---------+ .. note:: - You can also use the --nopaging option to avoid paging long event + You can also use the ``--nopaging`` option to avoid paging long event lists. In the following example, the :command:`fm event-list` command shows diff --git a/doc/source/fault/snmp-event-table.rst b/doc/source/fault/snmp-event-table.rst deleted file mode 100644 index 83e5d1201..000000000 --- a/doc/source/fault/snmp-event-table.rst +++ /dev/null @@ -1,44 +0,0 @@ - -.. rdr1552680506097 -.. _snmp-event-table: - -================ -SNMP Event Table -================ - -|prod| supports SNMP active and historical alarms, and customer logs, in an -event table. - -The event table contains historical alarms \(sets and clears\) alarms and -customer logs. It does not contain active alarms. Each entry in the table -includes the following variables: - -.. _snmp-event-table-ul-y1w-4lk-qq: - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -.. note:: - The previous SNMP Historical Alarm Table and the SNMP Customer Log Table - are still supported but marked as deprecated in the MIB. \ No newline at end of file diff --git a/doc/source/index.rst b/doc/source/index.rst index ccf6d0063..898c32c52 100755 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -58,13 +58,22 @@ Configuration configuration/index ---------------- -Fault Management +Fault management ---------------- .. toctree:: :maxdepth: 2 - fault/index + fault-mgmt/index + +------------------------------------------------ +Data Network Configuration and Management Guides +------------------------------------------------ + +.. toctree:: + :maxdepth: 2 + + datanet/index ---------------- Operation guides