Asynchronous Network Management System (ANMS) User Guide

DOC-005443, Prepared by The Johns Hopkins Applied Physics Laboratory

JHU/APL

License

This document is part of the Asynchronous Network Management System (ANMS).

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

This work was performed for the Jet Propulsion Laboratory, California Institute of Technology, sponsored by the United States Government under the prime contract 80NM0018D0004 between the Caltech and NASA under subcontract 1658085.

Revision History
Revision Initial30 August 2023
Initial issue of document for ANMS v1.0.0
Revision A28 August 2024
Updates for ANMS v1.1.0

Table of Contents
List of Figures
List of Tables

Introduction

This User Guide provides an overview of the user interface (UI) and high-level workflows of the Asynchronous Network Management System (ANMS), which is part of the Advanced Multi Mission Operations System (AMMOS) suite of tools.

1. Identification

PropertyValue

Configuration ID (CI)

631.17

Element

Multi-Mission Control System (MMCS)

Program Set

Asynchronous Network Management System (ANMS)

Version

1.1

2. Scope

This document describes the user interface and workflows of the ANMS. For technical details about the ANMS architecture, installation, upgrade, monitoring, and maintenance see the ANMS Product Guide.

Terminology

Abbreviations
Asynchronous Management Protocol (AMP)
The application protocol used to communicate between ANMS and its managed agents.
Application Data Model (ADM)
The definition of a collection of objects in an AMP agent. Each agent can support any number of ADMs but only one version of each ADM.
Operational Data Model (ODM)
The collection of objects defined by an Agent during its runtime which are not defined in an ADM.
Asynchronous Resource Identifier (ARI)
A text identifier for any object in the ADM or ODM of an Agent. This is used to command an Agent and to identify reported data from an Agent.
Roles and Subsystems

More details on these topics can be found in the ANMS Product Guide.

User
The human accessing the ANMS via a web browser or a machine accessing via a "northbound" API.
Administrator
A user having an account marked as a special role with extra access to the ANMS for monitoring and troubleshooting.
Manager
A subsystem of the ANMS which sends commands to and receives reports from all defined Agents.
Agent
A device being managed by the ANMS, but separate from the ANMS itself. All agents must be accessible via some network, but not necessarily an IP network.
UI Terminology
Link
A browsable item within a web page which accesses a specific item on the same page or a different page.
Redirect
An automatic change in the current web page caused by some action on the current page.
Select
A user input via a Web Browser to either click with a mouse or keyboard.
Choose
Selecting an item from a drop-down list of available options.

3. References

Table 1. Applicable JPL Rules Documents
TitleDocument Number

Software Development

57653 rev 10


Table 2. Applicable MGSS Documents
TitleDocument Number

MGSS Implementation and Maintenance Task Requirements

DOC-001455 rev G

ANMS Product Guide

DOC-005444 rev A


Table 3. Applicable Other Documents
TitleReference

Grafana Documentation

grafana-docs

Grafana Dashboard Documentation

grafana-dashboard

Grafana Panels Documentation

grafana-panels

ANMS Source

anms-source

ANMS Guide Document Source

anms-docs


Chapter 1. User Interface

The following section provides an overview of the ANMS User Interface, organized by the capabilities provided by each of the tabs - Monitor, Agents, Build, Status, ADMs - shown at the top of the ANMS display.

1.1. User Accounts and Login/Logout

The first thing that must happen before a user can access the ANMS is to log-in with an authorized user account. The Common Access Manager (CAM) controls authentication, authorization, and auditing (AAA) functions for the ANMS (and other AMMOS tools) so any account creation or maintenance must be done in either CAM or its Active Directory user database.

After a user has successfully logged-in the current account name is displayed in the top ribbon of each ANMS page as in Figure 1.1, “Top Ribbon Example”. The leftmost side of the ribbon contains the ANMS name and version identifier. The rightmost side contains the account name and link, along with a "Logout" link.

Figure 1.1. Top Ribbon Example
top ribbon

Selecting the user account link will show the user’s profile page, as described in Section 1.1.1, “User Profile Page”. Selecting the Logout link will immediately cause the login session to be ended and the browser will redirect back to the login page.

1.1.1. User Profile Page

This page includes parameters associated only with a user account, rather than any particular managed Agent or ADM. These parameters include: * Username * Email * First Name * Last Name * Membership Length

Figure 1.2. User Profile Example
user profile

The Email, First Name, and Last Name fields can be edited on this page. Clicking the green Update button will update the user profile with these changes.

1.2. Monitoring

The Monitor tab uses Grafana to display data stored in the ANMS databases, which are populated with information collected from the Managers and Agents in the network.

There are four default displays that are populated at the top of the Monitor tab, in addition to the option to build custom graphs and visualizations of the information monitored by the ANMS.

Note

Based on your network configuration and if you have previously authenticated to Grafana, the browser may present a login window (either a pop-up or a menu that drops from the top of the window, based on your browser). This is the Nginx server proxying authentication to Grafana. This ensures that the Grafana panels do not render to anonymous users.

1.2.1. Default Panels

1.2.1.1. Message Groups per Minute

Figure 1.3. Message Groups per Minute Sample Display
msg groups per min

The Message Groups per Minute visualization in the top right of the Monitor tab displays the rate of messages generated by Agents and stored in the database by the Manager.

1.2.1.2. Received Reports

The first table on the Monitor tab displays information from all reports the Manager has received and stored. The values in this table are organized by type; the report template needs to be used to decode the report entry values.

The report entries are populated with: * Time the report was received * ID of the Agent that generated the report * Report name * ADM defining the report template used (if applicable) * Values included in the received report

Figure 1.4. Received Reports Sample Table
received reports

1.2.1.3. ARIs

The second table on the Monitor tab displays all of the ARIs stored in the database. These resource identifiers are useful in showing the messages that can be built and sent to an Agent.

The ARI table entries include: * The object metadata ID * Data type ID * Object name * Namespace ID * ADM name * ADM enumeration * ADM enumeration label * Description of the ARI

Figure 1.5. ARI Sample Table
ari table

1.2.2. Creating Custom Panels

The Grafana display at the bottom of the Monitor tab allows a user to create custom panels - graphs, charts, alerts, etc. - to visualize information gathered by the ANMS that is stored in the database.

Navigate to the Monitor tab, and select New Panel under the Grafana section.

Figure 1.6. Create a Custom Panel for Monitoring
new panel

A new page is then displayed; this is the Grafana’s panel creation wizard.

There are three sections in the panel creator, which can be resized for easy viewing and editing.

Figure 1.7. Grafana Panel Creation Wizard
panel creator

Section A, as depicted in Figure 1.7, “Grafana Panel Creation Wizard” in the upper left box, displays a preview of what the panel you are creating will look like or will show an error screen if it can not be generated.

Figure 1.8. Sample Panel Data Selection from the amp-core Database
panel data

Section B, in the bottom left of Figure 1.7, “Grafana Panel Creation Wizard”, is where you select the data you would like to display in your custom panel. It is best to resize this section to easily set up the data you would like to view.

Under data source, you can select which database to use. amp_core is a PostgreSQL database for ANMS that contains health and status for the ANMS system and stores the information generated and used by the AMP network manager. The amp-core database is selected in the sample query provided in Figure 1.8, “Sample Panel Data Selection from the amp-core Database”.

Section C, on the right side of Figure 1.7, “Grafana Panel Creation Wizard”, provides the settings for the panel. You can edit the title of the graph, the type of graph, and other attributes.

To build out a Grafana panel, select the amp_core database to display data from the manager. Then, choose the table or view from the database that you wish to display.

Note

Not every table has a timestamp entry, so you might need to change the type of graph you are attempting to use if data is not displaying as expected. You can change the type of graph you would like to use in Section C.

Next, select the columns you would like to use. The Generate SQL option may be useful to you if you are familiar with SQL.

Once the data for the panel is selected, you can preview the graph in Section A.

The Query Inspector button will display the results of the SQL query and is useful for debugging if the panel is not displaying correctly.

Additional information on the use of Grafana to build panels can be found in the detailed documentation available online [grafana-docs], including a tutorial on building a [grafana-dashboard] and instructions on how to customize [grafana-panels].

1.3. Agents

The Agents tab can be used to search for Agents known to the ANMS, get additional information on these Agents, and add new Agents to the system.

The search bar at the top of the page allows a user to search the Agents known to the ANMS by:

  • ID String (Example: ipn:1.1)
  • Time Agent was First Registered (Example: 2023-02-16T19:44:20.805658)
  • Time Agent was Last Registered (Example: 2023-03-20T17:13:41.284906)

The table in the middle of the Agents page displays the Agents registered with the ANMS, giving the Agent ID String and the times that agent was first and last registered.

For additional information on a specific Agent, click a row in the table. The Agent details are displayed, including:

  • Registered Agent ID
  • Agent ID String
  • Time Agent was First Registered
  • Time Agent was Last Registered
Figure 1.10. Detailed Agent Information Provided by the ANMS
agent details

The first dropdown, labeled "Select Sent Reports" provides a list of reports that an Agent has sent.

Figure 1.11. The Agent Sent Reports Dropdown Menu
agent reports sent

Select a report from the list for additional data.

Figure 1.12. Selecting a Report Sent by the Agent
agent select sent report

Figure 1.13. Displaying a Report
agent report print example

The second dropdown menu allows the user to build a command to send to the currently selected Agent. The Select Operation dropdown can be used to select the operation for the command, and the text box to the right accepts any parameters, as a comma separated list, necessary for that command. Click the Send Parameter button to send the control to the agent.

Figure 1.14. Select an Operation and Parameter to Build a Control to Send to the Agent
agent operation

Adding an Agent to the ANMS can be done from the Agents page as well. Enter the Address of the Agent to add to the ANMS, and select the Add Node button.

Figure 1.15. Add an Agent to the ANMS
agent add

To manage an Agent(s), select the agent(s) to be managed from the agent table, then select the manage button in the upper right part of the table.

Figure 1.16. Manage an Agent
agent manage

From this Agent management menu, the user can: 1. Generate a new ARI to send to the agent(s) 1. Send a prebuilt string ARI to the agent(s)

Figure 1.17. The Agent Management Menu
agent manage menu

The manage tab uses the same system as the build tab to generate ARIs. See Build on how to generate new ARIs. A user will be able to preview the generated ARI before sending it to the agent(s). A status indiactor will be displayed as the ARI is being translated

Figure 1.18. The Agent Management Preview ARI
agent manage ari done

Figure 1.19. The Agent Management Waiting Indiactor
agent manage wating

After the ARI is translated and successfully sent to the manager to be forwared to the agent(s), a status toast will be displayed.

Figure 1.20. The Successful Managed Agent Toast
agent manage toast

1.4. Build

Figure 1.21. Select the Build Tab of the ANMS
build tab

The Build tab is for used for generating ARIs, translating string ARIs to CBOR, and sending those ARIs to the ANMS database and/or Agent(s). All ARIs in the ANMS database can be used to generate new string ARIs using the ARI Builder that can be translated using the ARI String Input option. To switch between building and translating ARIs, use the toggle at the center of the screen beneath the menu bar.

When first navigating to this tab, the ANMS compiles all known ARIs, including their parameter information, from the database.

1.4.1. ARI String Input

Figure 1.22. ARI String Input Toggle
string input

The ANMS transcodes string ARIs to CBOR, which can then be sent to Agents. To perform this translation, toggle the switch at the top of the screen to select the ARI String Input option.

Figure 1.23. ARI String Transcoder
ari string transcode

In the top input box, enter a string ARI (Ex: "ari:/IANA:bp_agent/EDD.endpoint_names") and select the SUBMIT button to transcode the given ARI. The CBOR generated by the ANMS will be populated in the table below the input options on the page, as shown in Figure 1.25, “Transcoded ARIs with String and CBOR Versions Shown”.


To search the ARIs that have been transcoded by the ANMS, enter one of the following: 1. Transcoder Log ID 2. String ARI (URI) 3. CBOR

Figure 1.25. Transcoded ARIs with String and CBOR Versions Shown
transcoded aris

The transcoded ARIs are presented in the table at the bottom of the Build tab. The table provides the Transcoder Log ID, String form of the ARI, a description of what the provided string was parsed as (currently, all string input is parsed as a URI), the CBOR translation for the ARI, the URI, and details on transcoding errors if an issue with the input was detected.

1.4.2. ARI Builder

Figure 1.26. ARI Builder Toggle
ari builder toggle

The ANMS allows a user to build ARIs from existing ADMs. To begin building an ARI, type in the search bar as shown in Figure 1.27, “ARI Search Bar” to filter available ARIs by type, ADM, or name.


The user may also choose an ARI from the drop down list, as shown in Figure 1.28, “Search Available ARIs”.

Figure 1.28. Search Available ARIs
ari search dropdown

If the chosen ARI has parameters, input boxes will be provided for each required field. The parameters will be displayed as a comma separated list after the name of the ARI.

Figure 1.29. ARI Parameter Input
simple ari param

ARIs with complex parameters include additional guidance for populating these required fields. For instance, an ARI Collection (AC) builder is provided for ARIs requiring an AC parameter, as shown in Figure 1.30, “Sample ARI with an AC Parameter”. The left side of the screen allows a user to search for the ARI they want to add to the AC and the right-hand side of the screen displays the selected ARI(s).

Figure 1.30. Sample ARI with an AC Parameter
ari params

ARI parameters can be searched and selected from a dropdown menu, similar to the search to initiate the ARI build process.

Figure 1.31. Selecting an ARI Parameter
ari param dropdown

When an ARI is selected from the search box on the left, it is populated in the box below, Selected ARIs. The finale ARI is updated automaticly as new ARIs are added or removed from the AC.

Figure 1.32. ARI Parameter Added to an AC
ari param in ac

For parameters that also require parameters, the system will generate additional input fields.

Figure 1.33. ARI Parameter Added to an AC with its own parameter
ari param in ac filled

After all ARI parameters have been filled in, the system will generate the new string URI that is shown beneath the parameter fields. This string URI is sent via anms-core to the transcoder to be translated. The final result of the translation is displayed in the table at the bottom of the page, as depicted in Figure 1.35, “Translated ARI with Input String and CBOR Output”.

Figure 1.34. ARI in "pending" State
pending ari build

Note

An ARI that is currently being translated by the ANMS will be marked as "pending" in the Parsed As field of the transcoded ARI table, as pictured in Figure 1.34, “ARI in "pending" State”. When the ARI translation is complete, the Parsed As field will be updated to show the provided format of the ARI.

Figure 1.35. Translated ARI with Input String and CBOR Output
completed ari build

To start building a new ARI simply select the 'X' clear seleceted button on the right hand side of the search bar. This will reset the builder screen, making it ready for the user to select a new ARI to build.

Figure 1.36. reset ari builder area
reset ari build

The transcoded ARI table provides the following information:

Table 1.1. Transcoded ARI Table Contents
Column LabelDescriptionTypeSample ValueNotes

Transcoder Log ID

The ID of the transaction.

UINT

10

Used primarily for debugging purposes.

Input String

The user input sent to the Transcoder.

String

ari:/IANA:ion_ltp_admin/EDD.ion_version

The URI string shown below the search bar on the ARI Build tab.

Parsed As

The determined format of the Input String.

STR

URI

Set to "pending" while transcoding is in progress. Set to "URI" if provided input is successfully parsed as a URI.

CBOR

The CBOR generated from the Input String.

Hex

0x8218B64100

Agent-parsable ARI.

Ari

Details regarding ARI parsing from the transcoder.

STR

"Failed to process: Error decoding from ari:/IANA:amp_agent/CTRL.gen_rpts([],[{type:STR,name:,value:ipn:1.6}]): Failed to parse \"ari:/IANA:amp_agent/CTRL.gen_rpts([],[{type:STR,name:,value:ipn:1.6}])\": Syntax error in input at: LexToken(NAME,'type:STR',1,39)"

Set to "{}" if transcoding was successful.

Uri

The URI generated from the user input.

STR

"ari:/IANA:amp_agent/CTRL.gen_rpts([ari:/IANA:amp_agent/RPTT.full_report,ari:/IANA:bp_agent/RPTT.endpoint_report('ipn:2.6')],[])"

Set to "" if transcoding was unsuccessful. Consult the Ari field for further details on parsing/processing errors.


The ANMS-generated CBOR in the table provides ARIs in the format Agents expect. To send the CBOR ARI to an Agent, click the value in the table. This will display all registered Agents. When an Agent is selected, the details for that Agent and the option to send a CBOR ARI is provided. This process is discussed in detail in Section 1.3, “Agents”.

1.5. Status

Figure 1.37. Selecting the Status Tab with System Health Indicated as Good
status tab

The Status page provides a summary of the overall health and status of the ANMS services. If all ANMS containers are up and running, a green "Good" label is included in the Status tab header. Selecting the Status page provides a list of the ANMS services and their individual statuses. All statuses will be set to "running" and displayed in green to indicate that the overall health of the ANMS system is good.

Select the "Check Service Status" button to refresh the health and status data displayed for the ANMS services.

Figure 1.38. ANMS Status
status

1.6. ADMs

Figure 1.39. Selecting the ADMs Tab
adms tab

The ADMs page of the ANMS displays the Application Data Models (ADMs) known to the system, and allows a user to upload additional ADM files.

1.6.1. Displaying Supported ADMs

Selecting the "Get ADMs" button, a user can refresh the table of supported ADMs. The table displays the enumeration, ADM name, Namespace, version, and description associated with each ADM.

Figure 1.40. Supported ADMs
adms table

1.6.2. Downlaoding ADMs

Selecting an ADM’s name will download the associated JSON file.

Figure 1.41. Downlaoding ADM
adms download

1.6.3. Adding ADMs

The file selection option at the bottom of the ADMs page allows a user to add an ADM to the ANMS. Selecting the "Browse" button, the user can select any JSON ADM file from their local filesystem. Selecting the blue "Upload adm json" button will upload the file and the ADM information is populated in the table above.

Figure 1.42. Add an ADM by Uploading a JSON file
add adm

If the new ADM is not displayed in the table, it may be necessary to click the "Get ADMs" button to refresh the table contents.

Chapter 2. Workflows

The workflows presented in the following sections provide examples of common ANMS use cases and a walkthrough of the steps taken to produce the described results.

2.1. Display Data with a Custom Grafana Panel

The Monitor tab of the ANMS allows a user to construct custom panels for data visualization using Grafana, as discussed in Section 1.2.2, “Creating Custom Panels”. This sample workflow shows the construction of a custom panel to view a report variable for an AMP agent, but can be modified to plot any data points of interest within the ANMS UI.

In this example, the user wants to know the number of times a time-based rule is executed at a particular agent. This can be achieved using Graphana to plot the TBR_RUN EDD contained in the AMP Agent reports collected by the Manager.

Grafana uses SQL queries to pull data from the ANMS database and display it to the user.

The code block below is an SQL query that will retrieve all report information in the ANMS database. This is the starting point for plotting any information from reports received by the Manager. This query is the same as the one used to generate the Received Reports Grafana panel in the ANMS UI’s default configuration.

SQL Query for All Report Information. 

-- all reports
SELECT
  time,
  "Agent ID",
  "Report Name",
  "ADM",
  "Report ID",
  "String Values",
  "UINT Values",
  "INT Values",
  "REAL32 Values",
  "REAL64 Values",
  "UVAST Values",
  "VAST Values",
  "Object ID Values",
  "AC ID Values",
  "TNVC ID Values"
FROM
  vw_rpt_entries

To plot a specific variable from a specific report type, incorporate an SQL WHERE block to filter Report Name and ADM. The Report Name and ADM variables are defined in an agent’s ADM and are viewable in the ARI table.

In the example below, in order to retrieve the TBR_RUN information, which is stored in the amp_agent.full_report, we add the final where clause which sets the Report Name to full_report and the ADM to amp_agent. This gives us the correct report data.

Within the amp_agent.full_report, by looking at the report template in the ADM, we can determine that the TBR_RUN data point is the fifth UINT entry in the report. Using this information, we can SELECT the fifth entry in the UINT Values to retrieve the TBR_RUN data. The entries are separated by commas, so we use the substring_index command to extract individual entries. Finally, we cast the value to the proper type. Now the query SQL Query for Number of Time-Based Rules Run by an Agent can be executed to extract the data needed to generate a Grafana graph.

SQL Query for Number of Time-Based Rules Run by an Agent. 

SELECT
    time as "time",
    "Agent ID" as metric,
    -- agent_id_string as metric,
    cast(split_part(split_part("UINT Values", ',', 5),
            ',',
            - 1) as integer)
FROM
    vw_rpt_entries
WHERE
    "Report Name" = 'full_report' AND "ADM" = 'amp_agent'

To use this SQL query and extract the relevant data, toggle Grafana to text-edit mode, then insert the SQL.

Figure 2.1. Toggle for Text-Edit Mode in Grafana
text edit

After inserting the formatted query, a sample visualization will be displayed.

Figure 2.2. Sample Time-Based Rule Execution Visualization
sample tbr results

After setting final options, such as graph title, the panel is ready to be saved and viewed on the Monitor tab.

Figure 2.3. Time-Based Rule Panel Displayed on Monitor Tab
tbr panel

In this sample panel, the number of time-based rules executed by each registered Agent is plotted over the period of time the Manager has been receiving data. To refine the timeframe the data is shown for, edit the SQL query to include a condition in the WHERE block.

2.2. Receiving Agent Data

Agents in the ANMS can be configured to monitor applications and services. The data they produce can be requested by a Manager as a report or table, depending on the associated data template, and viewed either on the Agents tab of the ANMS, or used to produce custom Grafana visualizations on the Monitor tab.

2.2.1. Generate a Report

To generate a report, the AMP Agent gen_rpts control is used. This control accepts two parameters: 1. An ARI Collection (AC) specifying the report template(s) (RPTTs) that should be populated by the Agent. 2. A Type-Name-Value Collection (TNVC) identifying the Manager(s) that are the intended recipients of the report(s).

First, navigate to the Build tab of the ANMS and toggle the switch at the top to use the ARI Builder. In the ARI search box, find the AMP Agent gen_rpts control. ari:/IANA:amp_agent/CTRL.gen_rpts(AC, TNVC)


Next, the parameters for the control must be chosen. Select the report templates (RPTTs) to be populated by the Agent and add them to the AC.


For this sample workflow, the AMP Agent Full Report and BP Agent Endpoint Report templates have been selected.

Figure 2.6. Full Report and Endpoint Report Selected for AC
rptt selected

The system create the AC and any additional parameter fields as needed. The AMP Agent Full Report does not require any parameters, but the BP Agent Endpoint Report requires a string identifying the endpoint(s) for which the report should be generated for. This input option is generated when added the RPTT is added to the AC, as shown in Figure 2.7, “Endpoint Report Parameter”.

Figure 2.7. Endpoint Report Parameter
endpoint pol parm

Enter the desired endpoint - in the case of this example, "ipn:2.6" is used. The AC is updated automaticly to include the parameter value, as seen in Figure 2.8, “AC Updated with Endpoint Report Parameter "ipn:2.6"”.

Figure 2.8. AC Updated with Endpoint Report Parameter "ipn:2.6"
updated ac

The second parameter for the gen_rpts control is a type-name-value collection: rxmgrs. This parameter specifies the Manager(s) that will receive the generated report(s). This is not a required parameter when just using the gen_rpts command. By default, the reports generated by this control will be sent to the Manager that issued the control. If this default option is desired, leave these fields blank.

Note

If using gen_rpts in list of controls or macros, ie in the control field for a TBR, the rxmgrs should be filled out to ensure that the report can be delivered.

Figure 2.9. Optional Receiving Managers Parameter
rxmgrs tnvc

Now that all the parameters are filled out, select the SUBMIT ARI String button which will generate the string ARI. This string ARI is sent to the transcoder and will be available in the lower table after it has ben processed.

Resulting String ARI: ari:/IANA:amp_agent/CTRL.gen_rpts([ari:/IANA:amp_agent/RPTT.full_report,ari:/IANA:bp_agent/RPTT.endpoint_report("ipn:2.6")],[]) CBOR: 0xC115410505022523828718194100C7182D41010501274769706E3A322E3600

Figure 2.10. Generate Report ARI and CBOR Representations
transcoded rpt ari

Now that the control has been built, the CBOR can be sent to the desired Agent(s). Click the CBOR entry for the translated ARI and the UI will redirect to the Agents tab.

From the available agent table, select the Agent(s) to send the control to. In Figure 2.11, “Manage Agent ipn:2.6”, the Agent address selected ipn:2.6.

Figure 2.11. Manage Agent ipn:2.6
managed agent

Select the Manage button to open a menu of options for Agent handling. The input field for a Text Input will be auto-filled with the CBOR selected from the Build tab. Select the Submit button and then Send to send the CBOR command to the Agent.

Figure 2.12. Auto-filled CBOR in RAW Command Field
raw cmd

After successfully sending the control to the Agent a success popup should be displayed in the upper right portion of the screen.

2.2.2. Generate a Tabular Report

To generate a tabular report, the AMP Agent gen_tbls control is used. This control accepts two parameters: 1. An ARI Collection (AC) specifying the tabular report template(s) (TBLTs) that should be populated by the Agent. 2. A Type-Name-Value Collection (TNVC) identifying the Manager(s) that are the intended recipients of the tabular report(s).

First, navigate to the Build tab of the ANMS and toggle the switch at the top to use the ARI Builder. In the ARI search box, find the AMP Agent gen_tbls control. ari:/IANA:amp_agent/CTRL.gen_tbls(AC, TNVC)


Next, the parameters for the control must be chosen. Select the tabular report templates (TBLTs) to be populated by the Agent and add them to the AC.


For this sample workflow, the AMP Agent ADM Tabular Report template is selected, to determine the ADMs known to the Agent.

Figure 2.15. ADM Tabular Report Selected for AC
tblt selected

The AC and any additional parameter fields will update automaticly as needed. Since the ADM Tabular Report does not require any further parameters the AC parameter is ready.

The second parameter for the gen_tbls control is a type-name-value collection: rxmgrs. This parameter specifies the Manager(s) that will receive the generated tabular report(s). This is not a required parameter. By default, the tabular reports generated by this control will be sent to the Manager that issued the control. If this default option is desired, leave these fields blank.

Figure 2.16. Optional Receiving Managers Parameter
rxmgrs tnvc

Now that all the parameters are filled out, select the Submit ARI String button which will generate the string ARI. This string ARI is sent to the transcoder and will be available in the lower table after it has ben processed.

Resulting String ARI: ari:/IANA:amp_agent/CTRL.gen_tbls([ari:/IANA:amp_agent/TBLT.adms],[]) CBOR: 0xC115410605022523818A181B410000

TODO

Figure 2.17. Generate Report ARI and CBOR Representations
transcoded rpt ari

Now that the control has been built, the CBOR can be sent to the desired Agent(s). Click the CBOR entry for the translated ARI and the UI will redirect to the Agents tab.

At the bottom of the page, fill in the address of the Agent (or a comma separated list if providing multiple Agents) to send the control to. In Figure 2.18, “Manage Agent ipn:2.6”, the Agent address is ipn:2.6.

Figure 2.18. Manage Agent ipn:2.6
managed agent

Select the Manage button to open the modal for Agent handling. The input box for a Text Input will be auto-filled with the CBOR selected from the Build tab. Select the Submit button to send the CBOR command to the Agent.

TODO

Figure 2.19. Auto-filled CBOR in RAW Command Field
raw cmd

After successfully sending the control to the Agent a success popup should be displayed in the upper right portion of the screen.

TODO

Figure 2.20. Command Sent Successfully
cmd success

2.2.3. View Tabular Report Data

This feature is not currently supported by the ANMS.

2.3. Defining Agent Rules

Agents in the ANMS can be configured to produce reports, influence managed device behavior as a reaction to a change in state detected for a monitored application/service. This stimulus-response system is captured through the definition of rules whose stimulus indicates a change in managed device state or the passage of time.

2.3.1. State-Based Rules

A State-Based Rule (SBR) can be used to specify an action that should be executed by the Agent when a particular internal state is identified. This state information may be obtained from one of the applications or services associated with the Agent.

For the purpose of this example, a SBR is created to instruct an Agent to TODO

Use the Build tab to construct the add_sbr ARI, which follows the form ari:/IANA:amp_agent/CTRL.add_sbr(ARI, TV, EXPR, UVAST, UVAST, AC, STR).

The add_sbr control has the following parameters:

Table 2.1. State-Based Rule Parameters
NameTypeDescriptionSample ValueNotes

Id

ARI

ARI Id for the SBR being defined.

ari:/sbr.ex

The Id for this example SBR is "ex", which exists in an anonymous namespace ("ari:/").

Start

TV

Relative start time.

0

Setting this parameter to the special value of 0 will command the Agent to start execution of the SBR as soon as it is received.

State

EXPR

The expression that defines the condition(s) based on some internal Agent state that must be met for the action associated with the SBR to be executed.

(BOOL)[ari:/IANA:amp_agent/EDD.run_tbr,ari:/IANA:amp_agent/EDD.run_sbr,ari:/IANA:amp_agent/OPER.Equal]

An EXPR is considered true if it evaluates to a non-zero value.

Max Eval

UVAST

The number of times the SBR condition can be evaluated.

'30'

The special value of 0 indicates there is no limit on how many times the condition can be evaluated.

Count

UVAST

The total number of times the SBR can be executed.

20

Setting Max Eval to the special value of 0 allows a SBR to be executed an unlimited number of times.

Action

AC

The collection of commands (CTRLs/MACROs) to be executed by the Agent each time the conditions (state) for the SBR are met.

[ari:/IANA:amp_agent/CTRL.gen_rpts([ari:/IANA:amp_agent/RPTT.full_report],["ipn:1.7"])]

All ARIs in the AC must be either a CTRL or MACRO.

Description

STR

A human-readable description of the SBR.

generate a report when run_sbr = run_tbr

Details useful to network operators may be provided in this field.


Populate these parameters in the fields provided by the ANMS. The ARI will update as new parameters are populated.

Figure 2.21. Sample SBR Parameters
sbr parms

After finalizing the parameters, click the SUBMIT Ari String button to send the ARI to the transcoder to be translated.

Resulting String ARI: ari:/IANA:amp_agent/CTRL.add_sbr(ari:/SBR.ex,0,(BOOL)[ari:/IANA:amp_agent/EDD.run_tbr,ari:/IANA:amp_agent/EDD.run_sbr,ari:/IANA:amp_agent/OPER.Equal],30,20,[ari:/IANA:amp_agent/CTRL.gen_rpts([ari:/IANA:amp_agent/RPTT.full_report],["ipn:1.7"])],"generate a report when run_sbr = run_tbr") CBOR: 0xC115410B050724152615152512084265780010838216410482164106851818421831181E1481C1154105050225238187181941000501126769706E3A312E37782867656E65726174652061207265706F7274207768656E2072756E5F736272203D2072756E5F746272

TODO: add a reference to section for issuing commands to the agent.

2.3.2. Time-Based Rules

A Time-Based Rule (TBR) can be used to instruct an Agent to send a report at a user-specified time interval.

For the purpose of this example, a TBR is created to instruct an Agent to send an AMP Agent Full Report to the local Manager every 60 seconds, until 100 reports have been sent.

The process is similar to generating a report command, but with a few additional parameters.

Use the Build tab to construct the add_tbr ARI, which follows the form ari:/IANA:amp_agent/CTRL.add_tbr(ARI, TV, TV, UVAST, AC, STR).

The add_tbr control has the following parameters:

Table 2.2. Time-Based Rule Parameters
NameTypeDescriptionSample ValueNotes

Id

ARI

ARI Id for the TBR being defined.

ari:/tbr.ex

The Id for this example TBR is "ex", which exists in an anonymous namespace ("ari:/").

Start

TV

Relative start time.

0

Setting this parameter to the special value of 0 will command the Agent to start execution of the TBR as soon as it is received.

Period

TV

The number of seconds to wait between executing the action specified by the TBR.

60

This TBR will run every minute according to the sample period.

Count

UVAST

The total number of times the TBR can be executed.

100

Setting Count to the special value of 0 allows a TBR to be executed an unlimited number of times.

Action

AC

The collection of commands (CTRLs/MACROs) to be executed by the Agent each time the TBR is executed.

ari:/IANA:amp_agent/CTRL.gen_rpts([ari:/IANA:amp_agent/RPTT.full_report],["ipn:1.7"])

All ARIs in the AC must be either a CTRL or MACRO.

Description

STR

A human-readable description of the TBR.

gen full rpt

Details useful to network operators may be provided in this field.


Populate these parameters in the fields provided by the ANMS, selecting Create AC and Submit AC to build the Action AC.

Figure 2.22. Sample TBR Parameters
gen full rpt

After finalizing the parameters, click the SUBMIT for add_tbr button to send the ARI to the transcoder to be translated.

Resulting String ARI: ari:/IANA:amp_agent/CTRL.add_tbr(ari:/tbr.ex,TV.0,TV.60,UVAST.100,[ari:/IANA:amp_agent/CTRL.gen_rpts([ari:/IANA:amp_agent/RPTT.full_report],["ipn:1.7])],"gen full rpt") CBOR: 0xC115410A05062420201625120B42657800183C186481C115410505022523818718194100006C67656E2066756C6C20727074

TODO: add a reference to section for issuing commands to the agent.

Chapter 3. Product Support

There are two levels of support for the ANMS: troubleshooting by the administrator or user attempting to operate the ANMS, which is detailed in Section 3.1, “Troubleshooting”, and upstream support via the ANMS public GitHub project, accessible as described in Section 3.2, “Contacting or Contributing”. Attempts to troubleshoot should be made before submitting issue tickets to the upstream project.

3.1. Troubleshooting

The following situations provide troubleshooting guidance for the ANMS from the perspective of a normal or administrative user, typically operating the ANMS via a web browser. Each situation consists of an observed state followed by a recommended troubleshooting activity.

The Grafana panels in the Monitor tab displays Connection was reset errors

The Grafana container may not have started successfully. Contact a system administrator to restart the component.

An Agent is not present in the Agents tab on start up

This is likely due to an error in one of the ION containers and their connection to the underlying database. Contact a system administrator to restart the component.

Registering a new Agent does not result in an update to the displayed Agents in the ANMS Agent tab

Contact a system administrator to verify that the Agent has been registered to the Manager via CLI tools.

3.2. Contacting or Contributing

The ANMS is hosted on a GitHub repository [anms-source] with submodule references to several other repositories. There is a CONTRIBUTING.md document in the ANMS repository which describes detailed procedures for submitting tickets to identify defects and suggest enhancements.

Separate from the source for the ANMS proper, the ANMS Product Guide and User Guide are hosted on a GitHub repository [anms-docs], with its own CONTRIBUTING.md document for submitting tickets about either the Product Guide or User Guide.

While the GitHub repositories are the primary means by which users should submit detailed tickets, other inquiries can be made directly via email to the the support address dtnma-support@jhuapl.edu.

Index