Skip to main content

Overview

NMIS provides specialized monitoring for Juniper Networks devices running JUNOS through Common models that collect Class of Service (CoS) and operational statistics.

Available Juniper Models

The following Common-Juniper models are available in models-default/:
  • Common-Juniper-jnxCoS.nmis - Class of Service queue statistics
  • Common-Juniper-jnxOperations.nmis - Device operations (CPU, memory, temperature)

Juniper Class of Service (jnxCoS)

Overview

Monitors Juniper CoS queue statistics per interface, tracking traffic forwarding, queuing, and drops across different service classes.

Model Structure

# Common-Juniper-jnxCoS.nmis
%hash = (
  'systemHealth' => {
    'sys' => {
      'Juniper_CoS' => {
        'index_oid' => '1.3.6.1.4.1.2636.3.15.1.1.9',
        'index_regex' => '9\.(.+)$',
        'indexed' => 'true',
        'headers' => 'cosDescription,IntName,jnxCosFcName',
        'snmp' => {
          'jnxCosIfqTxedBytes' => {
            'oid' => '1.3.6.1.4.1.2636.3.15.1.1.9',
            'option' => 'counter,U:U'
          },
          'jnxCosIfqQedBytes' => {
            'oid' => '1.3.6.1.4.1.2636.3.15.1.1.5',
            'option' => 'counter,U:U'
          },
          'jnxCosIfqQedPkts' => {
            'oid' => '1.3.6.1.4.1.2636.3.15.1.1.3',
            'option' => 'counter,U:U'
          },
          'jnxCosIfqTailDropPkts' => {
            'oid' => '1.3.6.1.4.1.2636.3.15.1.1.11',
            'option' => 'counter,U:U'
          },
          'jnxCosIfqTotalRedDropPkts' => {
            'oid' => '1.3.6.1.4.1.2636.3.15.1.1.13',
            'option' => 'counter,U:U'
          },
          'jnxCosIfqTotalRedDropBytes' => {
            'oid' => '1.3.6.1.4.1.2636.3.15.1.1.23',
            'option' => 'counter,U:U'
          },
          'cosDescription' => {
            'title' => 'Reference Name'
          },
          'IntName' => {
            'title' => 'Interface Name'
          },
          'jnxCosFcName' => {
            'title' => 'CoS Queue Name'
          }
        }
      }
    }
  }
);

Collected jnxCoS Metrics

Queue Statistics:
  • Transmitted bytes (jnxCosIfqTxedBytes) - Total bytes transmitted from queue
  • Queued bytes (jnxCosIfqQedBytes) - Bytes currently in queue
  • Queued packets (jnxCosIfqQedPkts) - Packets currently in queue
Drop Statistics:
  • Tail drop packets (jnxCosIfqTailDropPkts) - Packets dropped due to queue overflow
  • RED drop packets (jnxCosIfqTotalRedDropPkts) - Packets dropped by Random Early Detection
  • RED drop bytes (jnxCosIfqTotalRedDropBytes) - Bytes dropped by RED
Identification:
  • Interface name - Physical or logical interface
  • CoS queue name - Forwarding class (e.g., best-effort, assured-forwarding, expedited-forwarding)
  • Reference name - User-defined description

RRD Collection

'rrd' => {
  'Juniper_CoS' => {
    'graphtype' => 'jnxCoS-oneway',
    'index_oid' => '1.3.6.1.4.1.2636.3.15.1.1.9',
    'index_regex' => '9\.(.+)$',
    'indexed' => 'true',
    'snmp' => {
      'Txed' => {
        'oid' => '1.3.6.1.4.1.2636.3.15.1.1.9',
        'option' => 'counter,0:U',
        'sysObjectName' => 'jnxCosIfqTxedBytes'
      },
      'Queued' => {
        'oid' => '1.3.6.1.4.1.2636.3.15.1.1.5',
        'option' => 'counter,0:U',
        'sysObjectName' => 'jnxCosIfqQedBytes'
      },
      'QedPkts' => {
        'oid' => '1.3.6.1.4.1.2636.3.15.1.1.3',
        'option' => 'counter,0:U',
        'sysObjectName' => 'jnxCosIfqQedPkts'
      },
      'TailDropPkts' => {
        'oid' => '1.3.6.1.4.1.2636.3.15.1.1.11',
        'option' => 'counter,0:U',
        'sysObjectName' => 'jnxCosIfqTailDropPkts'
      },
      'RedDropPkts' => {
        'oid' => '1.3.6.1.4.1.2636.3.15.1.1.13',
        'option' => 'counter,0:U',
        'sysObjectName' => 'jnxCosIfqTotalRedDropPkts'
      },
      'RedDropBytes' => {
        'oid' => '1.3.6.1.4.1.2636.3.15.1.1.23',
        'option' => 'counter,0:U',
        'sysObjectName' => 'jnxCosIfqTotalRedDropBytes'
      }
    }
  }
}
Juniper devices use forwarding classes to map traffic into queues:Default Forwarding Classes:
  • best-effort - Default queue (0)
  • assured-forwarding - Medium priority (1, 2, 3)
  • expedited-forwarding - High priority, low latency (4)
  • network-control - Control plane traffic (7)
Queue Scheduling:
  • Strict priority
  • Weighted round-robin
  • Shaped/unshaped
The model collects statistics for all configured queues on all interfaces.

Source/Destination Class Usage

The model also supports tracking traffic by source and destination class:

Destination Class Usage

'jnxDestinationClassUsage' => {
  'headers' => 'jnxDcuStatsClName,ifDescr,jnxXcuStatsBytes',
  'index_oid' => '1.3.6.1.4.1.2636.3.6.2.1.6',
  'indexed' => 'jnxDcuStatsClName',
  'snmp' => {
    'jnxDcuStatsClName' => {
      'oid' => '1.3.6.1.4.1.2636.3.6.2.1.6',
      'title' => 'Class Name'
    },
    'jnxXcuStatsBytes' => {
      'oid' => '1.3.6.1.4.1.2636.3.6.2.1.5',
      'title' => 'Total Bytes'
    },
    'ifDescr' => {
      'title' => 'Local Interface'
    }
  }
}

Source Class Usage

'jnxSourceClassUsage' => {
  'headers' => 'jnxScuStatsClName,ifDescr,jnxXcuStatsBytes',
  'index_oid' => '1.3.6.1.4.1.2636.3.16.1.1.1.6',
  'indexed' => 'jnxScuStatsClName',
  'snmp' => {
    'jnxScuStatsClName' => {
      'oid' => '1.3.6.1.4.1.2636.3.16.1.1.1.6',
      'title' => 'Class Name'
    },
    'jnxXcuStatsBytes' => {
      'oid' => '1.3.6.1.4.1.2636.3.16.1.1.1.5',
      'title' => 'Total Bytes'
    }
  }
}
Source and Destination Class Usage sections are disabled by default and can be enabled via model_policy.nmis.

Juniper Operations Monitoring

Overview

Monitors Juniper device operational statistics including CPU, memory, temperature, and buffer utilization.

Model Structure

# Common-Juniper-jnxOperations.nmis
%hash = (
  'systemHealth' => {
    'rrd' => {
      'jnxOperations' => {
        'graphtype' => 'jnxCPU,jnxMem,jnxTemp',
        'indexed' => 'true',
        'control' => 'CVAR=jnxOperatingMemory;$CVAR > 0',
        'threshold' => 'jnx_cpu,jnx_temp,jnx_buffer,jnx_heap',
        'snmp' => {
          'jnxOperatingTemp' => {
            'oid' => '1.3.6.1.4.1.2636.3.1.13.1.7',
            'sysObjectName' => 'jnxOperatingTemp',
            'title' => 'Temperature (C)'
          },
          'jnxOperatingBuffer' => {
            'oid' => '1.3.6.1.4.1.2636.3.1.13.1.11',
            'sysObjectName' => 'jnxOperatingBuffer',
            'title' => 'Buffer Pool Utilization'
          },
          'jnxOperatingHeap' => {
            'oid' => '1.3.6.1.4.1.2636.3.1.13.1.12',
            'sysObjectName' => 'jnxOperatingHeap',
            'title' => 'Heap Utilization'
          },
          'jnxOper1MinLoadAvg' => {
            'oid' => '1.3.6.1.4.1.2636.3.1.13.1.20',
            'sysObjectName' => 'jnxOperating1MinLoadAvg',
            'title' => '1 Min CPU Load Average'
          },
          'jnxOper5MinLoadAvg' => {
            'oid' => '1.3.6.1.4.1.2636.3.1.13.1.21',
            'sysObjectName' => 'jnxOperating5MinLoadAvg',
            'title' => '5 Min CPU Load Average'
          }
        }
      }
    },
    'sys' => {
      'jnxOperations' => {
        'headers' => 'jnxOperatingDescr,jnxOperatingState,jnxOperatingTemp,jnxOperatingMemory',
        'index_oid' => '1.3.6.1.4.1.2636.3.1.13.1.5',
        'index_regex' => '\\.(\\d+\\.\\d+\\.\\d+\\.\\d+)$',
        'indexed' => 'jnxOperatingDescr',
        'snmp' => {
          'jnxOperatingDescr' => {
            'oid' => '1.3.6.1.4.1.2636.3.1.13.1.5',
            'sysObjectName' => 'jnxOperatingDescr',
            'title' => 'Description'
          },
          'jnxOperatingState' => {
            'oid' => '1.3.6.1.4.1.2636.3.1.13.1.6',
            'replace' => {
              '1' => 'unknown',
              '2' => 'running',
              '3' => 'ready',
              '4' => 'reset',
              '5' => 'runningAtFullSpeed',
              '6' => 'down',
              '7' => 'standby'
            },
            'title' => 'State'
          },
          'jnxOperatingTemp' => {
            'oid' => '1.3.6.1.4.1.2636.3.1.13.1.7',
            'title' => 'Temperature (C)'
          },
          'jnxOperatingMemory' => {
            'oid' => '1.3.6.1.4.1.2636.3.1.13.1.15',
            'title' => 'Installed Memory (MB)'
          },
          'jnxOperatingBuffer' => {
            'oid' => '1.3.6.1.4.1.2636.3.1.13.1.11',
            'title' => 'Buffer Pool Utilization'
          },
          'jnxOperatingHeap' => {
            'oid' => '1.3.6.1.4.1.2636.3.1.13.1.12',
            'title' => 'Heap Utilization'
          },
          'jnxOper1MinLoadAvg' => {
            'oid' => '1.3.6.1.4.1.2636.3.1.13.1.20',
            'title' => '1 Min CPU Load Average'
          },
          'jnxOper5MinLoadAvg' => {
            'oid' => '1.3.6.1.4.1.2636.3.1.13.1.21',
            'title' => '5 Min CPU Load Average'
          }
        }
      }
    }
  }
);

Collected Operations Metrics

System Components:
  • Routing Engine
  • Line cards
  • Power supplies
  • Fan trays
Resource Utilization:
  • Temperature - Celsius, per component
  • CPU Load - 1 minute and 5 minute averages
  • Memory - Total installed RAM in MB
  • Buffer Pool - Percentage utilization
  • Heap - Percentage utilization
Operating States:
  • unknown (1)
  • running (2)
  • ready (3)
  • reset (4)
  • runningAtFullSpeed (5)
  • down (6)
  • standby (7)

Control Statements

The model uses control statements to filter valid data:
'control' => 'CVAR=jnxOperatingMemory;$CVAR > 0',
'control_descr' => 'Only collect if the memory is greater than 0 (ZERO)'
This prevents collecting statistics from non-existent or placeholder components.

Including Juniper Models

To enable Juniper-specific monitoring in a custom model:
'-common-' => {
  'class' => {
    'Juniper-jnxCoS' => {
      'common-model' => 'Juniper-jnxCoS'
    },
    'Juniper-jnxOperations' => {
      'common-model' => 'Juniper-jnxOperations'
    }
  }
}

Example: Complete Juniper Model

%hash = (
  'system' => {
    'nodeModel' => 'JuniperRouter',
    'nodeVendor' => 'Juniper Networks',
    'nodetype' => 'router',
    'sys' => {
      'standard' => {
        'snmp' => {
          'sysLocation' => {
            'oid' => 'sysLocation',
            'title' => 'Location'
          },
          'sysDescr' => {
            'oid' => 'sysDescr',
            'title' => 'Description'
          },
          'sysObjectID' => {
            'oid' => 'sysObjectID'
          },
          'sysContact' => {
            'oid' => 'sysContact',
            'title' => 'Contact'
          },
          'sysName' => {
            'oid' => 'sysName',
            'title' => 'System Name'
          }
        }
      }
    }
  },
  'systemHealth' => {
    'sections' => 'jnxOperations,Juniper_CoS'
  },
  '-common-' => {
    'class' => {
      'Juniper-jnxCoS' => {
        'common-model' => 'Juniper-jnxCoS'
      },
      'Juniper-jnxOperations' => {
        'common-model' => 'Juniper-jnxOperations'
      }
    }
  }
);
Juniper models use the JUNIPER-MIB and JUNIPER-COS-MIB. Ensure your NMIS installation has these MIBs loaded for proper OID resolution.

Next Steps

Build docs developers (and LLMs) love