Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 

Installing AppFormix for NorthStar Integration

 

NorthStar controller for traffic optimization provides granular visibility into, and control over, IP/MPLS flows in large service provider and enterprise networks. NorthStar automates the creation of traffic-engineering paths across the network, increasing network utilization and enabling a customized and programmable networking experience.

Integrating NorthStar and AppFormix is a robust solution where in AppFormix monitors nodes in the network topology by collecting telemetry data and notifies NorthStar via http endpoints to take appropriate action when an alarm is triggered. Some actions that can happen with this integration are:

  • Putting a node in the network into maintenance mode when node metrics such as CPU, memory, etc. are above a threshold.

  • Changes in LSP when an interface on a node is affected.

Requirements

  • NorthStar controller version 4.0.0

  • The Platform Host, on which Appformix is installed, has the following requirements:

    Hardware

    • CPU: 16 cores (virtual or physical)

    • Memory: 16 GB

    • Storage: 100 GB (recommended)

    Software

    • docker 17.03.1-ce

    • Python "docker" package v3.7.1 (Red Hat package python-docker), installed on the Platform Host. RHEL 7.6 packages v2.4.2 is minimum required.

    • Ansible 2.7.6 - 2.3+ (httplib2 is needed to run Ansible playbooks)

    Connectivity

    • One IP address for Platform Host.

    • Dashboard client (in browser) must have IP connectivity to Platform Host.

    Network Agent supported platforms—AppFormix Network Agent runs on a host to collect telemetry data from network devices.

    • Ubuntu 14.04

    • Red Hat Enterprise Linux 6.5, 6.6, 7.1

    • CentOS 6.5, 6.6, 7.1

Installing the NorthStar Controller

For information on installing the NorthStar Controller, see the NorthStar Documentation.

Installing AppFormix

To integrate AppFormix with NorthStar:

  1. Download the following packages from https://www.juniper.net/support/downloads/?p=appformix onto the host where you will run Ansible.

    appformix-<version>.tar.gz

    appformix-platform-images-<version>.tar.gz

    appformix-dependencies-images-<version>.tar.gz

    appformix-network_device-images-<version>.tar.gz

  2. Install Ansible on the installer node.

    Ansible will install docker and docker-py on the appformix_controller.

    # sudo apt-get install python-pip python-dev build-essential libssl-dev libffi-dev

    # sudo yum install python-pip python-devel gcc gcc-c++ make openssl-devel libffi-devel

    # sudo easy_install pyOpenSSL

    # sudo pip install ansible==2.7.6 markupsafe httplib2

    If you are using Ansible 2.3, use the following commands.

    # sudo pip install ansible==2.3 markupsafe httplib2 cryptography==1.5
  3. Install python and python-pip on the appformix_controller so that Ansible can run between the installer node and the appformix_controller node.
    # sudo apt-get install -y python python-pip
  4. Install the python pip package on the hosts where the Appformix Network Agents run.
    # apt-get install -y python-pip
  5. To enable password-less login to Appformix-Controller by Ansible, create an ssh public key on the node where Ansible playbooks are run, and then copy the key to the Appformix-Controller.
    $ ssh-keygen -t rsa #Creates Keys

    $ ssh-copy-id -i ~/.ssh/id_rsa.pub <target_host> #Copies key from the node to Appformix-Controller node

    Or, you can use ansible_connection=local in the inventory example.

  6. Create an Ansible inventory. Create a directory named inventory, and in that directory edit the inventory/hosts file. For example:

    The host listed under appformix_controller is mandatory. This is the host onto which the AppFormix Platform is installed.

    The AppFormix agent is installed on the hosts listed under appformix_network_agents. This field is optional as the agent is already installed on the appformix_controller host.

  7. Within the inventory directory, create a subdirectory called inventory/group_vars. Then create an inventory/groups_vars/all file inside that subdirectory. For example:
    $ mkdir inventory/group_vars

    $ touch inventory/group_vars/all
  8. Add the following configuration parameters to the all file.Note

    All the variables in group_vars are mandatory.

  9. Unpack the AppFormix tarball file, and change directory to the directory that is created. For example:
    $ tar xzf appformix-<version>.tar.gz

    $ cd appformix-<version>
  10. Run Ansible using the path to the inventory directory created in steps 6 and 7. For example:
    $ ansible-playbook -i ../inventory appformix_standalone.yml
  11. If you are running the playbooks as the root user, this step can be skipped. If you are running the playbooks as any other user, for example ubuntu, that user account must have access to the docker user group.

    For example, the below command adds the user ubuntu to the docker group.

    $ sudo usermod -aG docker ubuntu
  12. Obtain the token to log in to the AppFormix UI from the appformix_token.rst file located on the AppFormix Platform Host. For example:
    $ cat /opt/appformix/etc/appformix_token.rst
  13. Use the token from 12 to login to the AppFormix dashboard.
  14. Select Settings > Network Devices.

    The network devices from NorthStar that are discovered by AppFormix appear in a list. Each device that has an SNMP/JTI/gRPC config is posted to AppFormix controller.

    Figure 1 shows an example of network devices of a NorthStar monitored network topology discovered by AppFormix.

    Figure 1: Example Discovered Network Devices
    Example Discovered Network Devices