Navigation
Guide That Contains This Content
[+] Expand All
[-] Collapse All

    Network Devices

    AppFormix supports monitoring of metrics from network devices. Metric collection is supported using SNMP versions 2c and 3.

    AppFormix data model has object types for network devices, including the topology of connections between devices. The data model is configured using the REST APIs. The Ansible playbooks can read the topology information from a JSON file, and configure the AppFormix Platform.

    For each network device, metrics are available for charts and alarms. Metric collection may be performed using SNMP or Juniper Telemetry Interface (JTI), depending on the capability of the network device. AppFormix can monitor multiple network devices using a combination of SNMP or JTI, but SNMP and JTI metrics cannot be enabled simultaneously for a single network device.

    Network Device Monitoring with SNMP

    Metrics can be collected from network devices using SNMP. If Contrail Analytics is present, and AppFormix is configured with service details to connect to Contrail APIs, then AppFormix will automatically import network topology from Contrail. If Contrail Analytics is not present, then you must configure network topology using AppFormix REST APIs or with a file provided to Ansible playbooks.

    Enable SNMP Collection Plug-In

    To collect network device metrics by means of SNMP, you must first configure AppFormix to use the SNMP network device plug-in. Include the plug-in descriptor in the appformix_plugins variable in group_vars/all.

    This variable must be initialized at the time of AppFormix Platform installation.

    appformix_plugins:
        - { plugin_info: 'certified_plugins/snmp_network_device_usage.json' }
        - { plugin_info: 'certified_plugins/snmp_network_device_routing_engine.json' }
    

    Enable JTI Collection Plug-In

    To collect network device metrics by means of JTI, you must first configure AppFormix to use the JTI network device plug-in. Include the plug-in descriptor in the appformix_plugins variable in group_vars/all.

    This variable must be initialized at the time of the AppFormix Platform installation.

    appformix_plugins:
        - { plugin_info: 'certified_plugins/jti_network_device_usage.json' }
    

    Network Device Monitoring with Contrail Analytics

    Contrail Analytics uses Link Layer Discovery Protocol (LLDP) to discover the network topology. AppFormix provides a Contrail adapter to interface with Contrail APIs. The Contrail adapter discovers underlay and overlay network topology from Contrail Analytics and configures the data model in the AppFormix Platform. The Contrail adapter also collects network metrics from the Contrail APIs and sends the data to the AppFormix Platform.

    Network device monitoring is enabled automatically when Contrail Service Monitoring is configured. To configure Contrail Service Monitoring, see Service Monitoring

    Contrail Analytics collects metrics from network devices using SNMP. For the SNMP configuration details, refer to Contrail documentation.

    Network Device Monitoring without Contrail Analytics

    If Contrail is not present, then AppFormix Agent collects metrics directly from network devices using SNMP. AppFormix Agent polls SNMP metrics every 60 seconds.

    The list of devices and the topology can be configured using the AppFormix REST APIs or provided in a network device topology file as input to the Ansible playbooks. The format of the network device topology file is described below.

    For SNMP, versions 2c and 3 of the protocol are supported. All metrics present in the SNMP OID IF-MIB::ifTable are available for charts and alarms in AppFormix. For Juniper devices, routing engine CPU, memory, and temperature metrics (defined in the Juniper MIB file named mib-jnx-chassis.txt) are available for charts and alarms.

    Network Device Monitoring with JTI

    With JTI, the network device streams metrics to AppFormix Agent. JTI is supported for devices running Junos version 17.2R1.

    AppFormix Agent performs all of the necessary network device configuration to enable JTI streaming telemetry. You only need to provide the device address and credentials in a network device topology file or by means of REST API. For each device configured in AppFormix, AppFormix Agent configures a network device to stream metrics to Agent on UDP port 42596 with an interval of 60 seconds.

    AppFormix Agent supports the interface sensor with resource name /junos/system/linecard/interface/. This sensor provides all of the interface metrics and queue metrics of the interface for a network device.

    Format of the Network Device Topology File

    To provide the list of network devices, create a network device topology file. Tools like LLDP can be used to generate the device list, interface connections, and topology information. Alternately, this file can be written by hand from network inventory.

    Specify the network device topology file as an input to the Ansible playbooks. In group_vars/all, set variable network_device_file_name:

    network_device_file_name: /path/to/network_device_file_name.json

    The file format is JSON. Multiple network devices can be added to the JSON file. The schema of network device topology file used by the Ansible playbook follows this sample that shows three different devices. In this sample configuration, a different protocol is used to collect metrics from each of the three devices: SNMP version 2c, SNMP version 3, and JTI. Table 1 explains the fields in the sample configuration.

    {
      "NetworkDeviceList": [
        {
          "NetworkDevice": {
            "MetaData": {
              "SnmpConfig": {
                "Version": "2c",
                "Community": "public"
              }
            },
            "ManagementIp": "10.1.1.2",
            "Name": "qfx1",
            "NetworkDeviceId": "qfx1",
            "Source": "user.snmp",
            "ChassisType": "tor",
            "ConnectionInfo": [
              {
                "local_interface_name": "et-0/1/0",
                "remote_system_id": "qfx2"
                "remote_interface_name": "et-0/0/1",
              }
            ]
          }
        },
        {
          "NetworkDevice": {
            "MetaData": {
              "SnmpConfig": {
                "Version": "3",
                "Username": "user1",
                "Password": "password1",
                "Level": "authPriv",
                "Protocol": "SHA"
              }
            },
            "ManagementIp": "10.1.1.3",
            "Name": "qfx2",
            "NetworkDeviceId": "qfx2",
            "Source": "user.snmp",
            "ChassisType": "spine",
            "ConnectionInfo": [
              {
                "local_interface_name": "et-0/0/1",
                "remote_system_id": "qfx1"
                "remote_interface_name": "et-0/1/0",
              }
            ]
          }
        },
        {
          "NetworkDevice": {
            "MetaData": {
              "JtiConfig": {
                "Version": "17.2R1",
                "Username": "user2",
                "Password": "password2",
                "SensorList": [
                  {
                    "Name": "Interface_Sensor",
                    "Resource": "/junos/system/linecard/interface/"
                  }
                ]
              }
            },
            "ManagementIp": "10.1.1.4",
            "Name": "qfx3",
            "NetworkDeviceId": "qfx3",
            "Source": "user.jti",
            "ChassisType": "tor",
            "ConnectionInfo": [
              {
                "local_interface_name": "et-0/1/0",
                "remote_system_id": "qfx2"
                "remote_interface_name": "et-0/0/2",
              }
            ]
          }
        }
      ]
    }
    

    Table 1: Explanation of Fields

    Field

    Description

    NetworkDevice.Name

    Display name of this network device. Used in Dashboard.

    NetworkDevice.NetworkDeviceId

    Unique identifier for this network device.

    NetworkDevice.ConnectionInfo

    A list of interfaces. Each entry in the list is a dictionary that describes the connection from a local interface to an interface on a remote device.

    NetworkDevice.ConnectionInfo.remote_system_id

    NetworkDeviceId of a remote network device that is connected to this network device.

    NetworkDevice.ConnectionInfo.remote_interface_name

    Name of interface on remote network device that forms a connection between this network device and remote network device.

    NetworkDevice.ConnectionInfo.local_interface_name

    Name of local interface that forms a connection between this network device and remote network device.

    The following fields have a fixed list of valid choices:

    NetworkDevice.ChassisType

    coreswitch, spine, tor

    NetworkDevice.MetaData.SnmpConfig.Version

    2c, 3

    NetworkDevice.MetaData.SnmpConfig.Protocol

    MD5, SHA

    NetworkDevice.MetaData.SnmpConfig.Level

    noAuthNoPriv, authNoPriv, authPriv

    NetworkDevice.MetaData.JtiConfig.Version

    17.2R1

    NetworkDevice.Source

    user.jti, user.snmp

    Note: Included in the release bundle is a sample configuration file sample_network_device_config.json.

    Packages Needed for SNMP Network Device Monitoring

    The SNMP plug-in is executed by Agent installed on hosts in the appformix_platform host aggregate. Some dependencies are required for plug-in execution. The AppFormix playbooks install the dependencies if the appformix_network_device_monitoring_enabled flag is set in the group_vars/all file at the time the AppFormix playbooks are executed.

    appformix_network_device_monitoring_enabled: true

    The following dependencies are installed by the playbooks, depending on the host operating system of the AppFormix Platform host. If troubleshooting network device monitoring, ensure that following packages are present on the appformix_platform hosts.

    For Ubuntu and Debian:

    • snmp 5.7.2
    • snmp-mibs-downloader 1.1

    For Centos and Red Hat Enterprise Linux:

    • net-snmp 5.7.2
    • net-snmp-utils 5.7.2

    Packages Needed for JTI Network Device Monitoring

    The AppFormix Agent(s) running on hosts in appformix_platform aggregate receives and analyzes JTI metrics. The following dependencies are required on hosts in the appformix_platform aggregate, to support receiving and analyzing JTI metrics.

    sudo apt-get install netcat
    sudo apt-get install protobuf-compiler
    sudo apt-get install libprotobuf-dev
    

    These packages are needed for receiving and decoding JTI messages.

    Modified: 2017-11-12