Topology API
Learn how Augtera can build your network topology using REST API
When Augtera learns of your devices and their relationships, Augtera can visualize your full Layer 2 and Layer 3 topology. It can auto-correlate network events and Augtera anomalies using the topology, track network changes, and monitor your devices.
You can either configure the Augtera platform with a list of your devices or use the Augtera Topology REST API to share your device information. The REST API allows the platform to automatically discover your devices and enables you to manage the lifecycle of your devices in Augtera. For example, if you use the API to change the state of a device to maintenance, it will inform the Augtera platform to appropriately modify notifications and correlation.
Further, Augtera can discover the relationships between devices and the network model using autodiscovery based on either SNMP, OpenConfig, or both. It can also base it on you sharing your network information using the Augtera Topology REST API.
This document describes the REST API commands to share your network information with the Augtera platform.
Workflow for Device and Topology Discovery
The entire workflow for endpoint discovery is represented in the following graphic:
To successfully understand the workflow, here are the high-level steps:
Use a POST API call to request Augtera's SCHEMA file.
Augtera will respond with a SCHEMA file in JSON format.
Send a POST request with header type INGESTION .
Send a POST request with header type Topology to allow Augtera to learn about devices and their relationships in your network.
Augtera will respond with a success zero code. This indicates that Augtera has successfully registered your POST notifications.
At any time, to verify the success of your configuration, use a GET command to see if Augtera is tracking your requested devices.
Augtera will respond with your devices list in JSON format.
Access Token Authentication
If token-based authentication is enabled, use the API TOKEN provided by Augtera to reach the Augtera Platform hosted on the public cloud. Include the token in the header along with the X-Api-Key.
Example Request
Here is a sample request.
Discovering Endpoints
For Augtera to begin tracking your devices, use the
http://
customer1.console.augtera.com
/augtera/api/v1/network
API endpoint to direct information to the Augtera console. Replace customer1.console.augtera.com
with your Augtera UI URL.
Using the Augtera API
The Header JSON API has two request types:
SCHEMA: When your request type is specified as SCHEMA, Augtera will respond with a JSON SCHEMA. Use the following CURL command to request the SCHEMA:
curl -X POST -H "Content-Type: application/json" -d @topology.json
http://<AUGTERA_PLATFORM_URL>/augtera/api/v1/network
INGESTION: When your request type is specified as INGESTION, the response will send a topology map containing a list of devices with their parameters. Use the following CURL command:
curl -X POST -H "Content-Type: application/json" -d @topology.json
http://<AUGTERA_PLATFORM_URL>/augtera/api/v1/network
For information on the top-level mapping, refer to the following table:
Type | Type | Timestamp | Description |
---|---|---|---|
header | INGESTION | Publish time | Description of a request |
header | SCHEMA | Publish time | GET schema of the topology request |
topology | N/A | N/A | List of entities |
Device Management
For Augtera to be able to manage and monitor your devices, Augtera relies on initial device discovery to start its automated device polling process. The basic workflow is as follows:
Provide a list of all monitored devices and the following information for each:
" id ": A unique Global Unique Identifier (GUID) for a device
" entity_type ": Indicate "device" as the type
" mgmt_ipv4 ": IP address of the device to poll
" device_name ": Global unique device name
"site": Indicate the location of the device
Augtera reads the deviceAdminState value to check if polling or analytics are enabled on a particular device. There are three valid states per device:
ENABLE: A device is enabled for polling and analytics.
MAINTENANCE: A device is enabled for polling, but it is disabled for analytics.
DISABLED: A device is disabled for polling and analytics. This device will be deleted from the Augtera database.
Sample Request for Device Information
Topology API
To send a POST response to Augtera to report any topological changes, use the sample CURL request:
Example Request
curl -X POST -H "Content-Type: application/json" -d @topology.json
http://<augtera_platform_url>/augtera/api/v1/network
Augtera runs validation against the SCHEMA. Thetopology.json
file displays validated JSON schema in the body of the text
Example Response
Here is an explanation the responses:
success- True confirms that the JSON body adheres to the SCHEMA
code-Code zero (0) indicates a successful transaction
message-Displays the number of entities that were processed
For more details on different status codes and what they mean, refer to the following table.
Table: Response Codes
Code | Description |
---|---|
0 | Success. The transaction was successfully posted to Augtera's backend service. |
1 | The message request is not supported |
2 | Augtera's backend service is down |
3 | The SCHEMA validation check failed |
Example Body for Topology Information
Verify your Configuration
After you have sent your POST requests to Augtera and want to verify what devices are being tracked by Augtera, use this GET request.
HTTP GET
customer-platform-url
/augtera/api/get_model_devices
Again, replace customer-platform-url
with your Augtera platform URL.
This request helps retrieve a list of network devices that have been created by Augtera services. Use this API to verify the state created by v1/network APIs.
Augtera will respond with a list of devices that Augtera will monitor. The following graphic represents this workflow.
At any time, use the Augtera UI to view any real-time updates based on any REST API event. This data is visible from the Trends page. To view updated information, choose
eventSource ="internal_event", eventType = "v1/network"
.
The UI will display information of this nature:
Mappings Reference
This section contains the field descriptions for the Entities, Relationships, and the NOS mappings.
Entities Mapping
The following table lists the entities mappings and provides a brief description for each field.
Table: Entities Mapping
Property | Required | Type | Description |
---|---|---|---|
id | YES | String | Global Unique ID for the entity |
entity_type | YES | String | Specify "device" |
mgmt_ipv4 | YES | String | IPv4 Address of the management interface |
device_name | YES | String | Hostname of the device |
locations.groups.site | YES | String | Site where the entity is located |
status | YES | String | Administrative state (admin_state) of the device. This can be one of the following:
|
status | NO | String | Operational status (oper_status) of the device. It can be one of the following:
|
device_desc | NO | String | Device version |
dns_device_name | NO | String | FQDN device name |
os | NO | String | Operating system of the device |
entity Required | NO/YES | String | role: If an entity is chosen, then a role must be specified |
entity | NO | String | cluster: Indicate the cloud cluster that contains this device |
locations.groups.type | NO | String | type: This can be one of the following:
|
locations | NO | String | type: This can be one of the following:
|
locations.groups.region | NO | String | region: For example, this region can be specified as us-east |
locations.groups.pod | NO | String | pod: Indicate the datacenter pod id |
locations.groups.dc | NO | String | dc: Data center name |
Relationships Mapping
The following table lists the relationships mapping and provides a brief description for each field.
Table: Relationships Mapping
Property | Required | Type | Description |
---|---|---|---|
type | YES | String | Only "INTERFACE" is supported |
if_name | YES | String | Name of the interface |
if_index | NO | Integer | Interface index used for SNMP Metrics or Trap |
ipv4_addr | NO | String | IP address of the interface |
ipv6_addr | NO | String | IPv6 address of the interface |
if_speed | NO | String | Interface speed |
mtu | NO | Integer | Maximum Transmission Unit (MTU) of the interface |
if_descr | NO | String | SNMP interface description |
if_alias | NO | String | Alias name for interface |
if_admin_status | NO | String | This can be one of the following:
|
if_oper_status | NO | String | This can be one of the following:
|
remote | NO | Object | The remote interface that is linked to the specified interface |
remote.device_name | YES | String | The name of the device to which this remote interface belongs |
remote.mgmt_ipv4 | YES | String | The management IP to which this remote interface belongs |
remote.if_name | YES | String | Remote interface name |
remote.link_type | YES | String | This can be one of the following:
|
remote.ipv4_addr | NO | String | Indicate the IP Address of the remote device. This is necessary for isis link_type |
NOS Mapping
The following table lists the NOS mappings and provides a brief description for each field.
Table: NOS Mapping
Property | NOS | Augtera Dimension | Description |
---|---|---|---|
site | tenant | locations.groups.site | For example, mtbb |
device name | name | device_name | For example, slcar1011 |
device IP | ip | mgmt_ipv4 | For example, 10.1.1.1 |
status | enabled | status.admin_state | ENABLED |
status | inMaintenance | status.admin_state | MAINTENANCE |
status | decommissioned | status.admin_state | DISABLED |
reachability | reachable | status.oper_status | This can be one of the following:
|
Last updated