New perfSonar Dashboard Andy Lake, Tom Wlodek. Outline Why we need a dashboard? Current dashboard – overview New dashboard – proposed architecture New.

Slides:



Advertisements
Similar presentations
Building Portals to access Grid Middleware National Technical University of Athens Konstantinos Dolkas, On behalf of Andreas Menychtas.
Advertisements

Database System Concepts and Architecture
Lectures on File Management
Apache Struts Technology
1 CHEP 2000, Roberto Barbera Roberto Barbera (*) Grid monitoring with NAGIOS WP3-INFN Meeting, Naples, (*) Work in collaboration with.
Computer Monitoring System for EE Faculty By Yaroslav Ross And Denis Zakrevsky Supervisor: Viktor Kulikov.
Copyright 2004 Monash University IMS5401 Web-based Systems Development Topic 2: Elements of the Web (g) Interactivity.
Technical Architectures
Fast Track to ColdFusion 9. Getting Started with ColdFusion Understanding Dynamic Web Pages ColdFusion Benchmark Introducing the ColdFusion Language Introducing.
Web Servers How do our requests for resources on the Internet get handled? Can they be located anywhere? Global?
Component-Based Software Engineering Introducing the Bank Example Paul Krause.
Online Magazine Bryan Ng. Goal of the Project Product Dynamic Content Easy Administration Development Layered Architecture Object Oriented Adaptive to.
LYU9901-Travel Net LYU9901-Travel Net Supervisor: Prof. Michael R. Lyu Students: Ho Chi Ho Malcolm Lau Chi Ho Arthur (Presentation on )
Computer Science 101 Web Access to Databases Overview of Web Access to Databases.
Chapter 6: Hostile Code Guide to Computer Network Security.
G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
UNIT-V The MVC architecture and Struts Framework.
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
Selecting and Implementing An Embedded Database System Presented by Jeff Webb March 2005 Article written by Michael Olson IEEE Software, 2000.
CSCI 6962: Server-side Design and Programming Course Introduction and Overview.
Web Based Applications
Module 3: Table Selection
Glink: GCOS e-business in an application server architecture Summit 2000, Jim Gallagher.
JAS3 + AIDA LC Simulations Workshop SLAC 19 th May 2003.
Independent Study. Visual LookVisual Look IntroductionIntroduction SRSSRS SDDSDD ImplementationImplementation TestsTests Conclusion and Future PlansConclusion.
Microsoft SharePoint Server 2010 for the Microsoft ASP.NET Developer Yaroslav Pentsarskyy
The Network Performance Advisor J. W. Ferguson NLANR/DAST & NCSA.
NMED 3850 A Advanced Online Design January 12, 2010 V. Mahadevan.
Putting it all together Dynamic Data Base Access Norman White Stern School of Business.
Nagios Demonstration Tom Wlodek SLAC Tier2 workshop
Jan Hatje, DESY CSS ITER March 2009: Technology and Interfaces XFEL The European X-Ray Laser Project X-Ray Free-Electron Laser 1 CSS – Control.
New perfSonar Dashboard Andy Lake, Tom Wlodek. What is the dashboard? I assume that everybody is familiar with the “old dashboard”:
Hibernate 3.0. What is Hibernate Hibernate is a free, open source Java package that makes it easy to work with relational databases. Hibernate makes it.
Views Lesson 7.
Lesson Overview 3.1 Components of the DBMS 3.1 Components of the DBMS 3.2 Components of The Database Application 3.2 Components of The Database Application.
240-Current Research Easily Extensible Systems, Octave, Input Formats, SOA.
Distributed Information Systems. Motivation ● To understand the problems that Web services try to solve it is helpful to understand how distributed information.
Apache JMeter By Lamiya Qasim. Apache JMeter Tool for load test functional behavior and measure performance. Questions: Does JMeter offers support for.
GOAL User Interactive Web Interface Update Pages by Club Officers Two Level of Authentication.
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, written in Java code, that.
INFSO-RI Enabling Grids for E-sciencE ARDA Experiment Dashboard Ricardo Rocha (ARDA – CERN) on behalf of the Dashboard Team.
Visual Basic for Application - Microsoft Access 2003 Finishing the application.
PerfSONAR Update Shawn McKee/University of Michigan LHCONE/LHCOPN Meeting Cambridge, UK February 9 th, 2015.
Matthias Clausen, Jan Hatje, DESY CSS Overview – Alarm System and Management CSS Overview - GSI, 11 Februrary CSS Overview Alarm System and CSS.
1 Object-Oriented Analysis and Design with the Unified Process Figure 13-1 Implementation discipline activities.
Project Retrospective Team FancyPants. What is CyteSee? Idea.
IBM Global Services © 2005 IBM Corporation SAP Legacy System Migration Workbench| March-2005 ALE (Application Link Enabling)
IPS Infrastructure Technological Overview of Work Done.
Bayu Priyambadha, S.Kom. Static content  Web Server delivers contents of a file (html) 1. Browser sends request to Web Server 3. Web Server sends HTML.
July 19, 2004Joint Techs – Columbus, OH Network Performance Advisor Tanya M. Brethour NLANR/DAST.
1 Configuration Database David Forrest University of Glasgow RAL :: 31 May 2009.
Google Code Libraries Dima Ionut Daniel. Contents What is Google Code? LDAPBeans Object-ldap-mapping Ldap-ODM Bug4j jOOR Rapa jongo Conclusion Bibliography.
“COLLEGE MANAGEMENT SYSTEM” Presented by: BCA VI SEMESTER.
ADO .NET from. ADO .NET from “ADO .Net” Evolution/History of ADO.NET MICROSOFT .NET “ADO .Net” Evolution/History of ADO.NET History: Most applications.
/16 Final Project Report By Facializer Team Final Project Report Eagle, Leo, Bessie, Five, Evan Dan, Kyle, Ben, Caleb.
Cofax Scalability Document Version Scaling Cofax in General The scalability of Cofax is directly related to the system software, hardware and network.
OpenPegasus Documentation Discussion What should we change, what should we keep? KS OpenPegasus Developers Conference 27 September 2012.
ISC321 Database Systems I Chapter 2: Overview of Database Languages and Architectures Fall 2015 Dr. Abdullah Almutairi.
“This improved a lot since I started using Tango (three years ago) from scratch so I'm happy to see the efforts from the developers. Still there is room.
Progress Apama Fundamentals
Working in the Forms Developer Environment
Web Development Web Servers.
GOCDB New Requirements
Section 13 - Integrating with Third Party Tools
Open Source distributed document DB for an enterprise
Introduction to J2EE Architecture
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
A Web-Based Data Grid Chip Watson, Ian Bird, Jie Chen,
Serpil TOK, Zeki BAYRAM. Eastern MediterraneanUniversity Famagusta
REST APIs Maxwell Furman Department of MIS Fox School of Business
Presentation transcript:

New perfSonar Dashboard Andy Lake, Tom Wlodek

Outline Why we need a dashboard? Current dashboard – overview New dashboard – proposed architecture New dashboard – proposed components New dashboard – interaction between components New dashboard – work flow

Why we need a dashboard Why not use a well established monitoring tool like nagios ? Nagios: good for monitoring large homogenous computing farms. Not good for distributed heterogeneous systems. Lacks configurable display and convenient configuration management.

Problem 1: PerfSonar Data model is not represented in existing monitoring packages PS has three types of probes: 1 host probe (primitive service): owamp, bwctl probes ….. The service they correspond to runs on a single host 2 host probes: traceroute probes. Check traceroute from host1 to host2 3 host probes (throughput, latency): Check throughput from host1 to host2 monitored from host3 Neither Nagios nor other monitoring systems account for multi host services. Gratia data model can be modified to take multi host services into account, but this requires work.

Problem 2: Monitoring systems are designed to gather and display time dependent data time Some variable time Variable 1 Variable 2 Variable n …. Time cut. What is the status NOW()? What we really need is this:

Our data use model implies a completely different database structure! Most monitoring systems have “time flow” tables: records correspond to points in time We need to access current status of several hundred or thousand independent channels – and it has to be done FAST! The number of channels in a cloud increases like number of hosts squared Obtaining USATLAS cloud status requires 471 queries. Indexing database tables helps, but is not enough.

The old dashboard database structure Dashboard History Table (disk resident) Current Status Table (memory resident) Configuration Table (disk resident) UPDATE INSERT

The database structure Keeping most recent data in memory table improves system performance. However it still has its limitations: database introduces its own overhead Not a significant problem for small clouds For big clouds it can become an issue LHCONE cloud requires approx 1300 queries to have the status displayed – and that is without traceroute tests. The time delay is noticeable.

Old dashboard - overview dashboard Collector API Collector PS Host database user

Old dashboard

Problems: The code started as a php add-on to Nagios and relied heavily on Nagios structure When we started this did look like a perfectly reasonable approach. It turned out that this was completely wrong approach – but we were not aware of this when we started. Once it became clear that we should not copy Nagios it was already to late to back off.

Problems: The code was converted from nagios-php-apache to java- tomcat technology, but the nagios legacy had to be carried on. Initially we had no clear idea what we intend to do with the code – new features were added when we realized we needed them without any formal plan nor design. Result: the code contains features which were demanded by users (and therefore are useful) but it is increasingly hard to maintain it.

Current status of the dashboard code

Problems: Storing data in database (even in memory table) slows down the application The system is entirely self contained: GUI, data store, alarm system, authentication – all is in one application, often embedded in pieces of the same piece of code It is hard to establish cooperative effort I suggest to break the project into several independent sub projects

New dashboard Minimum objective: New dashboard should keep all the functionalities of the old one, but have code that is better organized, documented, extensible and scalable. Beyond minimim objective: Dashboard should interact with the centralized configuration management. Other ideas, suggestions as what should be included in „beyond minimal objective”?

Proposed structure of new dashboard framework Data Store Data Access API Data Persistence Layer Database Display GUIObject config GUIAlarmsAuthenticationCollectorOther?User mgmt

Data objects The data is stored in data objects representing: hosts, services, sites, matrices, clouds etc. The object definitions can be found in Andy’s design document. Each object has an internal (java) external (JSON) representation. Utility classes translate between representations External modules talk to data store by exchanging JSON objects.

Data Store and Access API It is implemented in java servlets executed within tomcat server Data access API is a servlet, responding to GET and POST requests from clients Data Store is a java singleton object holding data descriptionobjects, it is called by data access API. Details follow

New dashboard – design. The central store will store objects representing hosts, services, sites, matrices and clouds. We wrote a formal description of the data objects, Andy Lake maintains a design document, available on request.

Central data store The central store maintains list of known hosts and services: Vector hosts; Vector services; It also maintains lists of sites, matrices and clouds. Sites, matrices and cloud objects contain references to each other. (Clouds contain sites and matrices, sites contain hosts, hosts contain services etc).

Operations on objects Dedicated java classes are used to perform operations on objects: ObjectCreator – create new sites, clouds hosts or services, ObjectManipulator – add/remove services to hosts, hosts to sites, hosts to matrices, sites and matrices to clouds ObjectShredder – deletes hosts, services, sites, matrices, clouds.

Interaction between modules Modules talk to the data store by exchanging JSON objects using POST and GET methods Data access API is a servlet, responding to GET and POST requests from clients returns JSON objects Client programs obtain data from JSON objects. Details follow

Data Store multithreading issues The objects in Data Store have to be thread safe, as they will be updated/accessed by different threads In practice this is no big problem: collector will update the objects once per several minutes and users will not change the configuration more often than once/day In addition humans and collector will modify different fields in the objects Risk of collision is slim

Collector Collector is a program which runs on remote site Periodically it connects to data store and asks „do you have jobs to run?” Data store returns list of JSON objects representing the jobs. Collector executes the jobs and Uploads results back to data store.

Data Store and Collector status Collector code has been written by Andy Lake The data store exists, but not all features are implemented We are able to build clouds and sites with primitive services only. No matrices yet. Collector can connect to datastore, get jobs, execute them and upload results. (This has been tested).

What next? GUI Persistence/Db History Matrix Users Config Gui Alarms and filters Authentication Interface to centralized config management?

Matrix Matrix services are not implemented in the data store yet Will come in week or two.

Data Persistence The service data will stay in memory Once tomcat is restarted, the application reloaded or the computer rebooted – it will be gone. We need persistence mechanism. Also we need a way to store historical data. For short time periods we may store the data in memory, but if we want to go very far back in time we need a back end database.

Data Persistence and Database Plan A: use Hibernate. Map objects in Vector services list to database objects. Plan B (If A fails): execute a timer thread in tomcat which will wake up periodically, read services in the list of services and dump them into back end database using plain JDBC calls. Neither method requires database access to display overview of current status of a cloud – it should be faster than current dashboard.

History (requires: persistence) We still have no design how to represent historical data We need to sit down with Andy and write it down.

Display GUI We need a client to display service information Connect to datastore, ask for service {url}/services?id={id} Obtain string of JSON, parse into JSON Unpack JSON Display Lucy is interested in doing this, but there is room for more people here.

Config GUI (needs: back end database and persistence) Get service info {url}/services?id={id} Unpack into JSON object Fill a web form with JSON fields and display it Once the form is modified pack it content into JSON Upload the JSON into data store STATUS: developer needed.

Display and Config GUI The actual technology to be used does not really matter We can have many different GUIs Unless you have a very good idea on how to do it I think it would be prudent to follow the layout of the old dashboard, as users know it and they seem to like it.

User Management Define object (bean) user with attributes:name, dn, etc. Store users in a singleton Define mapping onto back end database Provide set of JSP pages to view and modify users. Nice, self contained project good for a summer student or undergrad intern. Must know basic java and preferably have internet programming class.

Authentication OperationURLServletFilter Get services{url}servicesGet services servlet Update Service{url}/updateServiceUpdate service servlet DN filter Build latency host{url}/addLatencySer vicesToHost?id={id} Add latency servletDN filter Upload probe results{url}/resultsUpload results servlet Host filter... Etc, etc,...

We need two types of filters: DN and host DN filter: javax.security.cert.X509Certificate Compare to list of DN’s of known users Host filter: Client host IP is obtained from request context. Compared to list of known hosts

Alarms (requires: config GUI, Users) Define what criteria have to be met to raise an alarm and who should be alerted Current dashboard has alarms for primitive services. It is hard to define them for matrix services Project is moderately hard for primitive services and hard for matrix services.

Status Filters (not to be confused with servlet filters, discussed earlier!) Users should be able to define (via GUI) which lower level inputs (like service statusses) should be combined to obtain higher level status (like: site status). Filter definition should be configurable via GUI (requires skill in UI design) Filters should be then assigned to objects (sites or clouds) Not easy, but probably rather interesting project.

Interface to centralized configuration Aaron Brown is about to release the centralized config for testing We will have to interface the data store to it. As of today we know next to nothing about how the interface should look like Very likely it will be a rather big and interesting project, with lots of design work.

Documentation Andy’s design document – ask Andy for access DataStore API and work progress document – ask me for access DataStore code - will be in BNL public subversion soon, you will need doe cert to access it DataStore javadocs is available Mailing list SNAPSHOT/dump

That’s All Questions, comments, suggestions?