Prerequisites
NMIS version 8.3.18G or greater.
Unix Shell access to the NMIS server and suitable Unix privileges to edit the NMIS configuration files, usually a member of the group "nmis" or the root user.
Introduction
While working with customers who wanted to extend NMIS and make it even more of a Network Management System, to support parts of their operational process, to integrate more closely with their ITIL service management processes for example, we found that it would become difficult for them to maintain the customisations of the extended data collection, to better support NMIS users, we have made the way "Tables" in NMIS are defined and how they are shown in the Menu.
This article will briefly describe how these capability works and how it support operational agility.
Tables in NMIS
What are Tables in NMIS
To use NMIS various data is required, this data represents policies or configuration or credentials or a combination of all of those. In the past NMIS users have added tables as they needed and this required some Perl coding, to support faster and more easily modified tables in NMIS, the table definitions are now defined outside of the code base, making the tables themselves configuration items. So like the chicken and the egg, you need to start with something.
Tables used in NMIS
The following tables are used in NMIS, this includes the new table, Tables.nmis which now allows dynamic definition of tables.
File | Description |
Access.nmis | Access levels for Authorisation System |
BusinessServices.nmis | A list of Business Services to link to a node. |
Contacts.nmis | Contacts information used for notifications. |
Enterprise.nmis | List of “vendors” SNMP OID prefixes |
Escalations.nmis | Escalation policy, how notifications will happen |
Links.nmis | List of Links in the network. |
Locations.nmis | List of Locations |
Logs.nmis | Log viewer configuration file |
Modules.nmis | Opmantek modules integration |
Nodes.nmis | Main NMIS8 Nodes file |
Outage.nmis | Current planned outages |
Portal.nmis | Portal configuration for internal integrations |
PrivMap.nmis | Privilege mappings for authorisation |
Services.nmis | Services configuration file |
ServiceStatus.nmis | The definition of the Service Status's for NMIS (production, pre-production, etc) |
Toolset.nmis | External tools configuration file |
Tables.nmis | The list of Tables in NMIS |
Users.nmis | Users authorisation mappings |
ifTypes.nmis | List of standard interface types from IANA |
Table Configuration
Each table has a table configuration file, these files are in essence little bits of code, which is evaluated at run time. These files live in /usr/local/nmis8/conf and all begin with "Table-", so the table configuration for Nodes.nmis is called Table-Nodes.nmis. The contents of the looks like:
%hash = ( SampleTable => [ { Email => { header => 'Email Address', display => 'key,header,text', value => [""] }}, { Name => { header => 'Name', display => 'header,text', value => [""] }}, { Age => { header => 'Age', display => 'header,text', value => [""] }}, { Married => { header => 'Married', display => 'popup',value => ["true", "false"] }}, ] );
SampleTable => [ | Is the name of the table, this should match the name, e.g. Table-SampleTable.nmis |
---|---|
{ Email => { header => 'Email Address', display => 'key,header,text', value => [""] } }, | Each Column in the table is defined with an entry like this. In this case the column is called Email To define each column necessary fields are:
|
{ Married => { header => 'Married', display => 'popup', value => ["true", "false"] } }, | This field would not be displayed in the main view and would contain a select list to select true or false from. |
Adding a New Table to NMIS
The following steps are required to add a new table:
- Create a table configuration
- Add the table to Tables.nmis
- Create permissions in Access.nmis
- Link to any other data
Create a Table Configuration
Create a file in /usr/local/nmis8/conf/, in our case /usr/local/nmis8/conf/Table-SampleTable.nmis, and add the appropriate configuration.
Add the table to Tables.nmis
Using the GUI or from the Unix prompt add the new table to Tables.nmis.
To add using GUI, access the menu item "System -> System Configuration -> Tables", a dialog will appear, and click on "add" next "Action >" in the top right of the widget.
Enter the properties for the table, the Table Name must match the name in the Table Configuration, in our case SampleTable, the "Display Name" is what you want it to appear in the menu, and Description is so you don't forget.
Refresh the NMIS Dashboard and your new table will exist in the menu, but you can't access it yet.
Create permissions in Access.nmis
You need to tell NMIS what Access permissions to add this with, we have created a script to add the tables with the default permissions which is as described in the table below, the command to run to add the permissions is.
/usr/local/nmis8/admin/add_table_auth.pl SampleTable
You should get some output like this:
Checking NMIS Authorisation for SampleTable INFO: Authorisation NOT defined for SampleTable RW Access, ADDING IT NOW INFO: Authorisation NOT defined for SampleTable View Access, ADDING IT NOW
You can add it again if you want, it will not actually add it twice.
The following table is the default permissions your table will be added with, if you want to change them, you can do that through the Access menu item at "System -> System Configuration -> Access".
Level | Privilege | View | Read/Write |
---|---|---|---|
level0 | administrator | Yes | Yes |
level1 | manager | Yes | Yes |
level2 | engineer | Yes | Yes |
level3 | operator | Yes | No |
level4 | guest | No | No |
level5 | anonymous | No | No |
level6 | security | No | No |
This step is intentionally done using the Unix shell, as we want to ensure that people adding privileges are truly NMIS admins and not someone sneaking up and using a browser window.
View the Table and Add Something
If you haven't already, refresh the NMIS Dashboard and access the new table through the menu, in this example "System -> System Configuration -> Sample Table".
It will likely have an error message like "Error on loading table SampleTable" this is because there was not data. So lets add some data, and the file will be created for us automatically
The first step to creating a new table is to define the Table Configuration