From: Tarus B. <ta...@so...> - 2002-07-31 19:04:04
|
A customer of ours had the following problem: they wanted to add and remove devices from the Categories screen dynamically. Currently, they would create a rule similar to ipaddress == "192.168.0.1" && ipaddress == "192.168.1.17", etc. so every time they wanted to add or remove a device they would need to edit the categories.xml file and restart OpenNMS. Since the rules in the categories file can access the database directly, we came up with a solution of creating a new table, which will consist of a list of IP addresses and custom category names, and then all that would need to be done is to populate this table. I thought I would share this method in case anyone was interested. 1) First, add the table to the database: psql -U opennms opennms create table customCat (ipAddr varchar(16) not null, constraint pk_ipAddr primary key (ipAddr), custCategory varchar(16) ); This will map IP address to a 16 character custom category name. You could use an integer or a longer/shorter field if you want. 2) Edit /opt/OpenNMS/etc/database-schema.xml add at the bottom, before </database-schema> <table name="customCat"> <join column="ipAddr" table="ipInterface" table-column="ipAddr"/> <column name="ipAddr visable="false"/> <column name="custCategory"/> </table> This allows the filter system within OpenNMS to utilize the custCategory field. See http://faq.opennms.org/faq/fom-serve/cache/105.html for a longer explanation. 3) Edit /opt/OpenNMS/etc/categories.xml add new categories: <category> <label><![CDATA[Test Number One]]></label> <comment>Test Category Number One</comment> <normal>99</normal> <warning>97</warning> <service>ICMP</service> <rule><![CDATA[custCategory == "Test1"]]></rule> </category> <category> <label><![CDATA[Test Number Two]]></label> <comment>Test Category Number Two</comment> <normal>99</normal> <warning>97</warning> <service>ICMP</service> <rule><![CDATA[custCategory == "Test2"]]></rule> </category> Note that you need to state the services you are interested in monitoring in the category definition. These two test categories will just look for ICMP. 4) Edit /opt/OpenNMS/etc/viewsdisplay.xml <category><![CDATA[Test Number One]]></category> <category><![CDATA[Test Number Two]]></category> This will allow the new categories to be displayed. Note: do not use special charaters in the CDATA name, use entities: i.e. don't use "ICMP & HTTP", use "ICMP & HTTP". 5) /sbin/service opennms restart So that the changes will take effect. 6) Now, just add entries into the customCat table: psql -U opennms opennms insert into customCat values ('192.168.0.1', 'Test1'); insert into customCat values ('192.168.0.2', 'Test2'); wait a minute and then refresh the screen. This will add the ICMP service for 192.168.0.1 to the category "Test1" and the ICMP service for 192.168.0.2 to the category "Test2". -T -- Tarus Balog Consultant Sortova Consulting Group, http://www.sortova.com +1-919-696-7625 ta...@so... |