02.03.2013 Views

OpenNMS Maps - the OpenNMS User Conference Website!

OpenNMS Maps - the OpenNMS User Conference Website!

OpenNMS Maps - the OpenNMS User Conference Website!

SHOW MORE
SHOW LESS

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?

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!