OpenNMS Maps - the OpenNMS User Conference Website!
OpenNMS Maps - the OpenNMS User Conference Website!
OpenNMS Maps - the OpenNMS User Conference Website!
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>OpenNMS</strong> <strong>Maps</strong><br />
Antonio Russo<br />
antonio@opennms.it
<strong>Maps</strong>: are useful?<br />
About maps history<br />
OpenView vs <strong>OpenNMS</strong> maps (Tarus!)<br />
Visual Organization<br />
Context Visualization<br />
Visual Correlation<br />
Executive require maps<br />
Free design for maps...only hierarchy
The technology<br />
SVG – Client side<br />
Spring MVC – Server side<br />
map.properties –client<br />
configuration file<br />
mapDispatcher-servlet.xml
Map layout: Map Panel<br />
Background<br />
Color #ab1100<br />
Image -> Url<br />
MapElement<br />
Link<br />
Icon<br />
Label<br />
Semaphore (Views: Availability, Severity, Status)<br />
Dash-Array<br />
Description
Views<br />
Map layout: Map Panel<br />
Availability – Calculate availability using opennms<br />
standard api and database function<br />
Status – Worst<br />
status.default=nodeup<br />
status.unknown.uei=undefined<br />
Severity – Calculate severity<br />
Map(severity.map=worst)<br />
Node(worst)
Alarms<br />
New Style:<br />
Map layout: Alarms<br />
• final String sqlQuery = "select nodeid,<br />
eventuei,severity from alarms where nodeid is not null<br />
and severity > 3 order by nodeid, lasteventtime desc";<br />
• final String sqlQuery = "select distinct<br />
outages.nodeid, eventuei,eventseverity from<br />
outages left join events on events.eventid =<br />
outages.svclosteventid where ifregainedservice is<br />
null order by nodeid";
Map layout: Work Panel<br />
Toolbar Menu<br />
Map Menu: Admin Mode e Normal Mode<br />
Node Menu: Admin Mode<br />
View Menu: Normal Mode<br />
Refresh Menu: Admin Mode and Normal Mode<br />
Text Info<br />
MapInfo<br />
TopInfo<br />
DownInfo<br />
History
Map layout: contextMenu<br />
Double click on MapElement!<br />
Default Context Menu:<br />
ELEMENT_ID<br />
ELEMENT_LABEL<br />
-----> MapElement “submap” or “node”<br />
ELEMENT_ID=mapid if submap<br />
ELEMENT_ID=nodeid if node
Map Access Control<br />
-MapOwner (default admin)<br />
-MapGroup (default null)<br />
-MapAccess (RW|RO) RWRO<br />
IF RW|RO <strong>the</strong>n all users can access <strong>the</strong> map<br />
IF RWRO on user that match mapOwner or<br />
user that are in group that match mapGroup<br />
Only OPENNMS_ROLE=ADMIN_ROLE can<br />
modify visible maps<br />
RWRO only in mapsadapter. No way in <strong>the</strong> Map<br />
Gui
Map Contents<br />
- Map.svg (start file, how can customize this file)<br />
- ECMAScripts (contain SVG classes from ECMAS<br />
used by <strong>the</strong> maps)<br />
-js/helpers.js<br />
-images/elements/<br />
-images/background/<br />
-response/ (jsp fro ping and traceroute)<br />
-index.jsp (entry page, just load Map.svg)
-svgjavascript<br />
– ApplicationHelpers.js<br />
– ApplicationMap.js<br />
– ApplicationMenu.js<br />
– ApplicationVariables.js<br />
– ApplicationWin.js<br />
– ContextMenu.js<br />
– ElemMap.js<br />
– Label.js<br />
– Link.js<br />
– Map.js<br />
– MapElement.js<br />
– Menu.js<br />
– MoveableSVGElement.js<br />
– Node.js<br />
– Semaphore.js<br />
Map Contents
Map Personalization<br />
How to add a new icon<br />
How to add a new Background<br />
How to personalize Context Menu<br />
How to add a new status<br />
How to add a new link
Enhance maps example<br />
I want to visualiza an alarm with severity critical<br />
when <strong>the</strong> number of errors exceed a fixed<br />
threshold in a specified time<br />
1) create event/alarm<br />
uei.opennms.org/automation/eventCounts<br />
2) create automation that trigger this<br />
3) Define a new status in map.properties
Map OverLoad<br />
what is this?<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
what is this?<br />
Map OverLoad<br />
<br />
<br />
Map Issues<br />
Do not query <strong>the</strong> database, use a service very<br />
similar to rtc<br />
Use rtc to get availability (ie automatically<br />
create avail categories using <strong>the</strong> map)<br />
Use Rest interface or Json for client/server<br />
communication<br />
OnMouseMove on Safari is broken<br />
Questions?