Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 

AppFormix for Network Devices

 

AppFormix supports monitoring of metrics from network devices and collects three types of metrics:

SNMP metricsSNMP metrics collection is supported using SNMP versions 2c and 3.
Junos Telemetry Interface (JTI) native sensor metricsJTI metrics collection can be enabled for devices that have Junos OS Release 17.2R1, 17.3R1, 15.1F5, 15.1F6, and 15.1F7.
gRPC metricsAppFormix supports gRPC remote procedure calls (gRPC ) telemetry from network devices.

Beginning with AppFormix v2.17, Junos OS Release 18.1R1 is also supported. If you specify any Junos OS Release not in the supported list, AppFormix defaults to Junos OS Release 18.1R1, so AppFormix will use the protocol buffer (.proto) files from Junos OS Release 18.1R1 to decode data received from the device(s).

Prior to AppFormix Release 2.17, the Junos OS Release number was required.

The 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.

Steps for Configuring Network Device Monitoring

If Contrail service monitoring is enabled in AppFormix, the service adapter automatically discovers underlay and overlay network topology from the Contrail control plane APIs. OpenContrail services automatically run LLDP and discover the topology graph. Within AppFormix, configuration for the Contrail analytics and config nodes need to be provided. AppFormix then interacts with the analytics and config APIs of the Contrail control plane and is able to display the devices and metrics from them in the AppFormix Dashboard.

SNMP Metrics

For SNMP-based polling using plugins in AppFormix, the polling interval is 60 seconds.

For SNMP-based metrics from the Contrail APIs, the configuration within the Contrail service should be checked.

SNMP version 2c (SNMPv2c) and version 3 (SNMPv3) are supported. AppFormix has a field named OIDList in the Network Device Config JSON file, that indicates which OIDs you want to enable on the device. Every OID you add to that list must be included in the SNMP network device plugins you posted. The OIDs included in AppFormix certified plugins include IF-MIB::ifTable, IF-MIB::ifXTable, and TCP-MIB::tcp that provides the ifTable metrics, ifXTable metrics, and TCP metrics for the network devices. For Juniper devices, there are three additional certified plugins which include the following three OIDs: 1.3.6.1.4.1.2636.3.4.2, enterprises.2636.3.1.13.1, and APPFORMIX_ROUTING_ENGINE_MIB.

You can also update the sensor list in the AppFormix Dashboard by selecting Settings > Network Devices > SNMP Devices.

JTI Native Sensors

For UDP-based streaming from native sensors, AppFormix Agent automatically configures the network device based on the JSON file you provide. AppFormix Agent configures a network device to stream metrics to Agent on UDP port 42596 with a default interval of 60 seconds.

gRPC Sensors

For gRPC-based streaming, Junos OS Release 16.1R3 or later is required. AppFormix Agent automatically configures the network device based on the JSON file you provide. gRPC metrics are streamed to AppFormix Agent with a default interval of 60 seconds.

  • For platforms that are running a version of Junos OS based on an upgraded FreeBSD kernel only, you must install a separate package named Network Agent that functions as a gRPC server and terminates the RPC interfaces.

  • For all other versions of Junos OS, the Network Agent functionality is embedded in the software.

You must also install the OpenConfig for Junos OS module and the YANG models. For additional information, see: https://www.juniper.net/documentation/en_US/junos/topics/concept/open-config-grpc-junos-telemetry-interface-understanding.html.

After completing the steps for installing OpenConfig for Junos OS module and YANG models, verify the configuration on the network device by entering the following show configuration command:

Also, set the following configuration which enables AppFormix to configure the device:

NETCONF CLI Monitoring

If you configure a device with source user.netconf, AppFormix periodically pulls the NETCONF CLI output from the device and pushes output data to Kafka, based on the command-line and interval user supply.

Set the following configuration which enables AppFormix to perform NETCONF SSH to the device:

Configuring AppFormix Network Device Monitoring Plugins

First, configure AppFormix to use the SNMP, JTI Native, and gRPC network device plugins by including the plugin descriptor in the appformix_plugins variable in the group_vars/all file. This variable must be initialized at the time of AppFormix Platform installation and is an additional step for configuring SNMP network device monitoring. Each SNMP plugin is associated with one OID in the OIDList. You can check each JSON file and see which OID is used by which plugin. The jti_plugin is for enabling the JTI monitoring.

Example:

Creating Network Device Topology File

Second, provide the filename that contains the network device topology and set the flag to enable Appformix network device monitoring. In group_vars/all file, set variables network_device_file_name and appformix_network_device_monitoring_enabled:

Example:

Multiple network devices can be added to the JSON file. This file can be written by hand from the network inventory. Alternately, tools like LLDP can be used to generate the device names, interface connections, and topology information.

The network device topology file adheres to the following schema. The JSON file shows various devices with the following enabled. Note that a device can be configured with both SNMP and JTI monitoring.

Supported Sensors:

  • SNMP version 2c

  • SNMP version 3

  • JTI Native sensor

  • JTI gRPC sensor

Example network device topology JSON:

Some fields have a fixed list of valid choices. The available values for NetworkDevice.MetaData.JtiConfig.SensorList.Resource and NetworkDevice.MetaData.GrpcConfig.SensorList.Resource is the list of supported JTI sensors in AppFormix.

You can also update the sensor list in the AppFormix Dashboard by selecting Settings > Network Devices > JTI Devices or Settings > Network Devices > GRPC Devices.

Network Device Topology File Sensors and Values

The following tables list the sensors and valid values for the network device topology file.

Note

Important tips:

  • You cannot have “.”(period) in the NetworkDeviceId field.

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

Chassis Type and Source Sensors

Table 1: Chassis Type and Source Sensors and Values

Sensor

Value

NetworkDevice.ChassisType

  • coreswitch

  • spine

  • tor

NetworkDevice.Source

  • user.jti

  • user.snmp

  • user.grpc

SNMP Sensors

Table 2: SNMP Sensors and Values

Sensor

Value

NetworkDevice.MetaData.SnmpConfig.Version

  • 2c

  • 3

NetworkDevice.MetaData.SnmpConfig.Protocol

  • MD5

  • SHA

NetworkDevice.MetaData.SnmpConfig.Level

  • noAuthNoPriv

  • authNoPriv

  • authPriv

NetworkDevice.MetaData.SnmpConfig.PrivProtocol

  • AES

  • DES

JTI Sensors

Table 3: JTI Sensors and Values

Sensor

Value

NetworkDevice.MetaData.SnmpConfig.OIDList

  • TCP-MIB::tcp

  • IF-MIB::ifXTable

  • IF-MIB::ifTable

  • APPFORMIX_ROUTING_ENGINE_MIB

  • 1.3.6.1.4.1.2636.3.4.2

  • enterprises.2636.3.1.13.1

NetworkDevice.MetaData.JtiConfig.SensorList.Resource

  • /junos/system/linecard/interface/

  • /junos/system/linecard/npu/memory/

  • /junos/system/linecard/cpu/memory/

  • /junos/system/linecard/packet/usage/

  • /junos/system/linecard/npu/utilization/

  • /junos/system/linecard/interface/logical/usage/

  • /junos/system/linecard/firewall/

  • /junos/system/linecard/qmon/

  • /junos/system/linecard/fabric/

  • /junos/system/linecard/optics/

gRPC Sensors

Sensor

Value

NetworkDevice.MetaData.GrpcConfig.SensorList.Resource

  • /components/

  • /junos/system/subscriber-management/infra/sdb/statistics/

  • /junos/task-memory-information/task-memory-overall-report/task-memory-stats-list/task-memory-stats/

  • /junos/task-memory-information/task-memory-overall-report/task-size-block-list/task-size-block/

  • /lldp/interfaces/interface/state/

  • /lldp/interfaces/interface/neighbors/

  • /interfaces/

  • /lacp/

  • /nd6-information/

  • /bgp-rib/afi-safis/afi-safi/ipv4-unicast/loc-rib/

  • /junos/services/label-switched-path/usage/

  • /arp-information/ipv4/neighbors/neighbor/

  • /bgp-rib/afi-safis/afi-safi/ipv6-unicast/loc-rib/

  • /bgp-rib/afi-safis/afi-safi/ipv4-unicast/neighbors/

  • /bgp-rib/afi-safis/afi-safi/ipv6-unicast/neighbors/

  • /junos/npu-memory/

  • /junos/rsvp-interface-information/

  • /junos/services/segment-routing/interface/egress/usage/

  • /junos/services/segment-routing/interface/ingress/usage/

  • /junos/services/segment-routing/sid/usage/

  • /junos/system/linecard/cpu/memory/

  • /junos/system/linecard/firewall/

  • /junos/system/linecard/intf-exp/

  • /junos/system/linecard/npu/memory/

  • /junos/system/linecard/npu/utilization/

  • /junos/system/linecard/optics/

  • /junos/system/linecard/packet/usage/

  • /junos/system/linecard/qmon-sw/

  • /junos/system/subscriber-management/client-protocols/dhcp/v6/

  • /junos/system/subscriber-management/client-protocols/dhcp/v4/

Fields with Default Values

Some fields have default values. Those fields are listed in the following table.

Sensor

Default Value

NetworkDevice.MetaData.NetConfPort

830

JTI

NetworkDevice.MetaData.JtiConfig.Dscp

20

NetworkDevice.MetaData.JtiConfig.ReportRate

60

NetworkDevice.MetaData.JtiConfig.DeviceLocalPort

21112

gRPC

NetworkDevice.MetaData.GrpcConfig.SensorList.ReportRate

60

NetworkDevice.MetaData.GrpcConfig.DeviceLocalPort

50051

Explanation for some fields:

JTI

NetworkDevice.MetaData.JtiConfig.LocalAddress

(Optional) If JTI device in-band IP address is not specified, AppFormix uses ManagementIp.

NetworkDevice.MetaData.JtiConfig.ForwardingClass

(Optional) If specified, AppFormix configures forwarding-class value in device export-profile.

Packages Needed for SNMP Network Device Monitoring

The plugins run on the Agents part of the appformix_network_agents aggregate hosts. This is the default for all appformix_controller nodes, if not defined. Some packages are needed to ensure the plugin execution succeeds. The AppFormix playbooks will handle the installation of the packages if the following flag is set in the group_vars/all file at the time the AppFormix Platform is installed.

Because a plugin architecture is used to enable network device monitoring to troubleshoot issues, ensure the packages listed in the following topic “Packages Needed for JTI Network Device Monitoring” are present on the appformix_platform nodes.

Packages Needed for JTI Network Device Monitoring

You need to specify on which Agents should JTI network devices stream their metrics to. On those Agents, you need to install the following three packages:

These packages are needed for receiving and decoding JTI messages.

Network Device Monitoring Metrics

The metrics derived through network device monitoring are detailed here: Network Device Metrics.