Considering it's usefulness it is odd that so few people know about (or use) the Smarts perl dashboard. I recently discovered that one keen Smarts developer had himself taken some time to write a script that extracted detailed class documentation from a running Smarts domain - a fine but unnecessary task, since the perl Dashboard already has that feature. What is strange is that this gem of a utility is so little known.
Let me try to put this right.
The birth of the Dashboard (and the API)
Maybe a little history is called for... When I was working for Intercai, we hit a dead-spot for a month or two where work was hard to come by and I was [to be frank] bored.
A number of us had been working as PS contractors for Smarts at the time, after doing a similar task for RiverSoft for a few months. In order to get the RiverSoft job we had to teach ourselves the perl language since it was the scripting language of choice for their product suite. I for one thoroughly enjoy this task. Having worked with unix systems for a while, and developed a lot of scripts with shell, awk and m4 etc over the years, I was loving what I was finding in "perl". The language was slick, well designed, powerful and had a massive library of free-to-use features. RiverSoft's choice of perl as it's scripting language had clearly been a good one - or so it seemed to me.
Then when the RiverSoft contract ended, we moved over to working with Smarts. The Smarts products were a dream to work with. Their approach to monitoring and analysis was pure genius by comparison. The "model" infrastructure, the codebook, and common foundation across all products and even (dare I say it?) their extra-ordinary light-weight and focussed scripting language were so much more mature than anything I had seen before in any field. But .. I missed the ability to script in perl. So many of RiverSoft and Smarts customers had perl experience in their OSS teams that the omission of a perl API was a hole that was crying out to be filled. And like I said: I was bored.
So I set about designing and writing the first version of the Perl API for Smarts, and a few little sample test scripts.
The next challenge was to sell the API to Smarts themselves, and Nick (my manager at the time) suggested that what was needed was something to show off it's power. An API is not very easy to demonstrate in its own right, but a good quality tool with some interesting capabilities build on top of the API makes it much easier to sell. With this challenge in mind, two developments were born. One was the perl DashBoard which is still part of the product to this day, and the other was an "enrichment shim" which in the end wasnt ever released (but I still think was a pretty neat idea - maybe more on that in another blog). I guess what I am saying is that the Dashboard was an attempt to show off - and I think it worked. Beyond that rather self-promoting reason for developing it, it has become very useful tool that every Smarts developer should be using as part of his/her day to day toolkit.
Introduction to the Dashboard
The Dashboard is a perl script that uses the Smarts perl API. When it is started it looks about as dull as a program can be - it simply prints a couple of copyright-type of messages and then apparently stops doing anything interesting. But appearances can be deceptive .. The key thing isnt so much what it's doing (which at this point is: nothing) as what it's being - which is: a web server. Part of the information it printed when it started included a port number. If you use a web browser to browse to that port, then it begins to make sense. For example..
The first page you will see is where you indicate the IP address and port number of the Smarts broker. Once this info has been entered you can select any of the domains registered there. Clicking on a domain name presents you with a menu that has two parts. The upper part is shown for all domain types, but the lower part contains options that are specific to the domain (for example: Listing OID-to-Type mappings for IP domains). The link you will use most is the one that lists the classes in the domain. This gives you a page showing the class names, the numbers of elements of those classes, and the class description.
From there, click on a class name and another page of options appears. From here you can.
- List the instances of the class.
- List the events the class exports.
- Browse the full class documentation - where all the attributes, relationships, operations and events are described in detail along with an indication of the class position in the ICIM hierarchy.
- Generate user-defined queries. This allows you to select a set of attributes or relationships to extract or "get...." operations to invoke for every object in the class - and builds a web page table that can be converted to CSV, Excel or Perl "Dumper" formats.
The class documentation is in itself a good reason for starting to get to know the Dashboard, but the queries screen is a substantial layer of icing on the top of the cake.
If you select to view the class instances, you get a list of instance names - all of which can be "clicked" on in order to view the object's attributes, relationships, events and containment.
One potentially useful feature is that each page (whether a user-defined query, an instances details, the class list, the active events, the IP group configuration) has a fixed and well-defined URL which means that you can readily bookmark a particular page of interest, and revisit easily later.
So in short: The Dashboard is rather like a web-browser version of the Smarts topology viewer, but includes some very interesting extended features. Even if you only ever use it as a source of documentation, you'll be glad you found that it exists. I hope you enjoy it.