Search code examples
snmpnet-snmpcacti

How to create (upload/download) graph for devices connected to router/switch using Cacti?


I am trying to create the graph for the ONU (client end) devices connected to the Optical Line Terminal(OLT) . The graph for OLT(upstream) can be created but Im stuck on creating graphs for every devices connected to OLT.


Solution

  • Got it working : The DataInputMethod should be script/command. Script to get OLT snmp data and output them to file [ I run this script using cron every 2 minutes ] The data is saved to respective OLT files in /tmp directory.

    Later I use another script to extract the ONU (client side device connected to each OLT to extract download and upload data)

    # get_olt_snmp.sh
    
    #!/bin/bash
    echo ` date`
    # PTS-OLT1.example.com
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area1-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.4 > /tmp/area1-olt1.example.com_download_data
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area1-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.3 > /tmp/area1-olt1.example.com_upload_data 
    
    #CBL-OLT1.example.com
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area2-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.4 > /tmp/area2-olt1.example.com_download_data
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area2-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.3 > /tmp/area2-olt1.example.com_upload_data
    
    #area3-olt1.example.com.example.com
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area3-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.4 > /tmp/area3-olt1.example.com_download_data
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area3-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.3 > /tmp/area3-olt1.example.com_upload_data
    
    #area4-olt1.example.com.example.com
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area4-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.4 > /tmp/area4-olt1.example.com_download_data
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area4-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.3 > /tmp/area4-olt1.example.com_upload_data
    
    #area5-olt1.example.com.example.com
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area5-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.4 > /tmp/area5-olt1.example.com_download_data
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area5-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.3 > /tmp/area5-olt1.example.com_upload_data
    
    #area6-olt1.example.com.example.com
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area6-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.4 > /tmp/area6-olt1.example.com_download_data
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area6-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.3 > /tmp/area6-olt1.example.com_upload_data
    
    #area7-olt1.example.com.example.com
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area7-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.4 > /tmp/area7-olt1.example.com_download_data
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area7-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.3 > /tmp/area7-olt1.example.com_upload_data
    
    #area8-olt1.example.com.example.com
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area8-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.4 > /tmp/area8-olt1.example.com_download_data
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area8-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.3 > /tmp/area8-olt1.example.com_upload_data
    
    #area9-olt1.example.com.example.com
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area9-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.4 > /tmp/area9-olt1.example.com_download_data
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area9-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.3 > /tmp/area9-olt1.example.com_upload_data
    
    #area10-olt1.example.com.example.com
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area10-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.4 > /tmp/area10-olt1.example.com_download_data
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area10-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.3 > /tmp/area10-olt1.example.com_upload_data
    
    #area11-olt1.example.com.example.com
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area11-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.4 > /tmp/area11-olt1.example.com_download_data
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area11-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.3 > /tmp/area11-olt1.example.com_upload_data
    
    #area12-olt1.example.com.example.com
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area12-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.4 > /tmp/area12-olt1.example.com_download_data
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area12-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.3 > /tmp/area12-olt1.example.com_upload_data
    
    #area13-olt1.example.com.example.com
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area13-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.4 > /tmp/area13-olt1.example.com_download_data
    /usr/bin/snmpwalk -v2c -c SnmpS3cretpass area13-olt1.example.com .1.3.6.1.4.1.2011.6.128.1.1.4.23.1.3 > /tmp/area13-olt1.example.com_upload_data
    

    Read onu script to create graph for each client end device.Add this script in cacti datainputtype field

    # read_onu_snmp.sh
    
    #!/bin/sh
    #
    # Find a user's in/out traffic by username.
    # Syntax:
    # olt_snmp <olt> <ontid>
    
    OLT=$1
    ONTID=$2
    
    UPLOAD=`/bin/grep ${ONTID} /tmp/${OLT}_upload_data | cut -d':' -f4 | sed 's/ *//g'`
    DOWNLOAD=`/bin/grep ${ONTID} /tmp/${OLT}_download_data | cut -d':' -f4 | sed 's/ *//g'`
    
    echo "in_traffic:${UPLOAD} out_traffic:${DOWNLOAD}"