DNAC Monitoring App

published

About this App

DNAC Monitoring App extends the basic features of DNA-C (Cisco Digital Network Architecture Center). This App help collect information about devices and manage network issues. This App can be useful for Enterprise and Service Providers who want to collect and store different changes about network devices, calculate and manage different indicators such as:

  • Average MTTR (Mean time to repair);
  • Average mean time to recover incident;

The main features

  1. An application that can collect and process data from DNA-C

  2. User-friendly interface

  3. You can add and manage different type of roles:

  • IT management/CIO reports: gets health report and high-level SLA stats (you can manage or propose your parameters for SLA calculation)
  • IT manager: gets opened/closed service requests (ticket) and MTTR stats.
  • Also can assign responsible persons from the Administrator/DevOps list for solving the ticket
  • Administrator/DevOps: can solve a ticket, get WAN availability and average latency reports
  1. Using Redis, Celery and local DataBase App collect and compare different device config changes

  2. Ticket management:

  • filters by type of problem:

    • traffic
    • configuration change
  • filters by creation date

  • filters by ticket status:

    • open
    • in progress
    • rejected
    • solved
  • Notifications module:

  • Collect and display inventory and topology from DNA-C

Install and run locally

You need to install Python 3+, Vue.js

In developer mode, open project in IDE/terminal

git clone https://github.com/oborys/DNAC-Monitoring-App.git

then run commands (also you can find)

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
./manage.py migrate
cd app/vueapp
npm i
npm run build
cd ../..
./manage.py collectstatic
./manage.py createsuperuser

Password must contain at least 8 characters

./manage.py runserver

First, you need to create User profile for created superuser:
go to http://localhost:8000/admin/
Click on User profiles --> Add user profile --> Select user (chose superuser name that you create before) --> Select role (Admin) --> Push Save

open new terminal tab and run the commands

install Redis for mac:

brew install redis

install Redis for linux:

sudo apt-get install redis-server

redis-server

open new terminal tab and run the commands

source venv/bin/activate
celery -A project worker -l info

open new terminal tab and run the commands

source venv/bin/activate
celery -A project beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler

For correct using of notification module, you need to create your Bot
Sign-up and Sign-in in Webex Teams
Go to https://developer.webex.com/, then click My Apps and Create a New App (Bot)

Copy and save Bot's Access Token

Then add email credential (EMAIL_HOST, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD, EMAIL_PORT) in project/settings.py
Uncomment send_mail function in file info_sender/email_sender.py
For example you can use Gmail to send email from App

After deployment, you need to add a network controller (DNA-C) credentials (in case of local deployment http://localhost:8000/app/#/settings)

Ticket management

Edit/modify front-end files:

  • For edit information in static files go to static/templates (you can find three html file index.html, app.html, base.html)
  • For edit vue files go to app/src/components

Test App using Cisco DevNet sandboxes

Available sandboxes by Networking category

In this direction, you can also use DNA-C (Digital Network Architecture Center) sandboxes

DNA-C 1.2.10 - https://sandboxdnac2.cisco.com/

login: devnetuser

password: Cisco123!

DNA-C 1.2.6 - https://sandboxdnac.cisco.com

login: devnetuser

password: Cisco123!

Other Useful links

View code on GitHub

Code Exchange Community

Get help, share code, and collaborate with other developers in the Code Exchange community.View Community
Disclaimer:
Cisco provides Code Exchange for convenience and informational purposes only, with no support of any kind. This page contains information and links from third-party websites that are governed by their own separate terms. Reference to a project or contributor on this page does not imply any affiliation with or endorsement by Cisco.