Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Feature Overview

NMIS supports custom fields, or custom attributes for managed nodes.  For example; some organisations may find that a Country attribute is important to them.   Once a custom filed is provisioned in NMIS it may be extended to opCharts, where it can be added to the node filter so nodes can be filtered by the new attribute, the the node table so it is possible to see this value for all nodes and to the node view page so the new attribute can be seen when looking at an overview of an individual node.

Configuration & Verification

Configure NMIS

Modify Table-Nodes.nmis

Adding a custom field to NMIS is accomplished by modifying /usr/local/nmis8/conf/Table-Nodes.nmis.  Notice that this file contains a hash with a Nodes section.  For this example we will add a Country field.  Several fields may be added if required.  Put the new field between the 'extra_options' entry and the 'advanced_options' entry.  Observe the new country field in the code block below.

Code Block
title/usr/local/nmis8/conf/Table-Nodes.nmis
--snip
%hash = (
        Nodes => [ # using an array for fixed order of fields
                { name => { mandatory => 'true', header => 'Name',display => 'key,header,text',value => [""] }},
                { host => { mandatory => 'true', header => 'Name/IP Address',display => 'header,text',value => [""] }},
                { group => { mandatory => 'true', header => 'Group',display => 'header,popup',value => [ @groups] }},
                { community => { mandatory => 'true', header => 'SNMP Community',display => 'text',value => ["$C->{default_communityRO}"] }},
                { extra_options => { special => 'separator', header => 'Extra Options'}},
                { country => { header => 'Country', display => 'header,text',value => [""] }},
                { netType => { header => 'Net Type', display => 'popup',value => ["wan", "lan"] }},
                { roleType => { header => 'Role Type', display => 'popup',value => ["core", "distribution", "access"] }},
                { location => { header => 'Location',display => 'header,popup',value => [ sort keys %{loadGenericTable('Locations')}] }},
                { advanced_options => { special => 'separator', header => 'Advanced Options'}},
--snip

Verify Table-Nodes.nmis

Using the NMIS GUI navigate to System -> System Configuration -> NMIS Nodes.  This should render the Table Nodes widget displaying the new field.  If it does not; restore the original Table-Nodes.nmis file and try again paying close attention to syntax.

...

Assuming everything is working as desired we may now click the 'edit' button per device and update the Country attribute.

Modify Config.nmis

Modify the node_summary_field_list list attribute in /usr/local/nmis8/conf/Config.nmis.  Add the new field key value previously added to Table-Nodes.nmis to this list.  The code block below adds the country attribute.

Code Block
title/usr/local/nmis8/conf/Config.nmis
 --snip
    'node_summary_field_list' => 'host,uuid,country,customer,businessService,serviceStatus,snmpdown,wmidown,remote_connection_name,remote_connection_url,host_addr',
--snip

Verify Config.nmis

Config.nmis can be compiled with perl to make sure there are no syntax errors 

Code Block
perl -c /usr/local/nmis8/conf/Config.nmis
# /usr/local/nmis8/conf/Config.nmis syntax OK

 


Configure opCharts

Modify opCommon.nmis

Add the new field to the following attributes in /usr/local/omk/conf/opCommon.nmis.

...

Code Block
title/usr/local/omk/conf/opCommon.nmis
 --snip
    'opcharts_gui_node_list_table_columns' => [
      {
        'cell' => 'NodeLinkCell',
        'comment' => 'must be present for NodeLinkCell to work on any column, use renderable => 0 to hide',
        'label' => 'Name',
        'name' => 'node_name',
        'renderable' => 1
      },
      {
        'cell' => 'String',
        'label' => 'Host',
        'name' => 'node_summary.host'
      },
      {
        'cell' => 'String',
        'label' => 'Country',
        'name' => 'node_summary.country'
      },
      {
        'cell' => 'NodeStatusCell',
        'label' => 'Node Status',
        'name' => 'node_summary.nodestatus'
      },
--snip
    'opcharts_node_selector_sections' => [
      {
        'key' => 'nodestatus',
        'name' => 'Node Status'
      },
      {
        'key' => 'group',
        'name' => 'Group'
      },
      {
        'key' => 'roleType',
        'name' => 'Node Role'
      },
      {
        'key' => 'nodeType',
        'name' => 'Node Type'
      },
      {
        'key' => 'nodeVendor',
        'name' => 'Node Vendor'
      },
      {
        'key' => 'country',
        'name' => 'Country'
      }
    ],
--snip
    'opcharts_gui_node_summary_list' => [
      'name',
      'country',
      'group',
      'host',
      'host_addr',
--snip

Verify opCommon.nmis

  • Restart the omkd service.
  • Open a browser to the opCharts GUI.
  • The new field should be found as in the example below.

If any comfortableness in experienced restore the original opCommon.nmis

Conclusion

Understanding that 'one size fits all' solutions fits no one well; Opmantek strives to provide customers with the ability to customize their network management solutions.