Troy Lea's presentation on creating custom addons for Nagios XI.
The presentation was given during the Nagios World Conference North America held Sept 25-28th, 2012 in Saint Paul, MN. For more information on the conference (including photos and videos), visit: http://go.nagios.com/nwcna
Presentation on how to chat with PDF using ChatGPT code interpreter
Nagios Conference 2012 - Troy Lea - Custom Wizards, Components and Dashlets in Nagios XI
1. Custom Wizards,
Components and Dashlets
in Nagios XI
Troy Lea
troy@box293.com
Twitter: @Box293
http://exchange.nagios.org/directory/Owner/Box293/1
2. About Me
IT Consultant
Strategic Group
http://www.strategicgroup.net.au/
Cloud Computing Specialist
VAULT
http://www.my-vault.com.au/
One of Australia's most mature
cloud computing solutions
2012 2
3. Why
Why Nagios XI?
It’s a virtual appliance - ready to go
Why customize?
Improve functionality
To help others / share the knowledge
2012 3
5. Configuration Wizards - My Documentation
Existing Documentation Created By Me
Tips For Customising Configuration Wizards
http://exchange.nagios.org/directory/Documentation/Nagios-XI-Documentation/Tips
NOTE: Outdated
Nagios XI Service Relationship Map
http://exchange.nagios.org/directory/Documentation/Nagios-XI-
Documentation/Nagios-XI-Service-Relationship-Map/details
Box293 Demonstration Wizard
http://exchange.nagios.org/directory/Addons/Configuration/Configuration-
Wizards/Box293-Demonstration-Wizard/details
This is the wizard I will focus on in this presentation
2012 5
7. Configuration Wizards - Official Documentation
Official Documentation
Writing Custom Wizards For Nagios XI
http://library.nagios.com/library/products/nagiosxi/documentation/480-writing-
custom-wizards-for-nagios-xi
Box293 Demonstration Wizard was derived from this documentation
Nagios XI Component Development
http://library.nagios.com/library/products/nagiosxi/documentation/551-nagios-
xi-component-development
2012 7
8. Configuration Wizards - Customizing
Key Concepts
Provide help / documentation at the start
This can be in collapsible / expandable DIVs
The more help you provide, the less road blocks there are
Preserve existing data user has entered
No-one likes re-populating multiple fields
Automate the data collection process
Where possible
Good Example: Network Switch / Router wizard
Bad Example: VMware ESX / vSphere / vCenter Monitoring
Wizard (revamp planned)
2012 8
10. Configuration Wizards - Stages
Step 1
The information that is presented here is taken from the $args
array defined at the beginning of the configuration wizard
Information also used on the Manage Config Wizards page
$args=array(
CONFIGWIZARD_NAME => $name,
CONFIGWIZARD_TYPE => CONFIGWIZARD_TYPE_MONITORING,
CONFIGWIZARD_DESCRIPTION => 'This wizard is an example of how to code ...',
CONFIGWIZARD_DISPLAYTITLE => 'Box293 Demonstration Wizard',
CONFIGWIZARD_FUNCTION => 'box293demo_configwizard_func',
CONFIGWIZARD_PREVIEWIMAGE => 'screen2.png',
CONFIGWIZARD_VERSION => '2012-08-05',
CONFIGWIZARD_DATE => '2012-08-05',
CONFIGWIZARD_AUTHOR => 'Troy Lea aka Box293',
);
2012 10
11. Configuration Wizards - Stages
Before Step 2
Fresh Wizard Run?
Define variables
User is returning from Step 3?
Check for existing Step 2 data and re-populate
Step 2 ← Step 3
User provided data on Step 2 failed error checking?
Check for Step 2 data and re-populate
Step 2 ← Step 2 Validation
2012 11
13. Configuration Wizards - Stages
Step 2
CONFIGWIZARD_MODE_GETSTAGE1HTML
This is the first step you can customise
Completely customisable except for the Back and Next
buttons
Put all of your overview, help and configuration steps here
This will educate the end user about how the wizard works
and also informs them of the requirements / pre-requisites
You'll need to get the IP Address or FQDN of the host you
want to monitor along with anything else you require
2012 13
14. Configuration Wizards - Stages
Between Step 2 and Step 3
CONFIGWIZARD_MODE_VALIDATESTAGE1DATA
Is the user returning from Step 3?
If so, no data validation required on Step 2 data
Reality checks on Step 2 data
If supplied data is not correct the wizard will go back to Step 2
Refer to the code in the Box293 Demonstration Wizard to see how
the error checking is performed
2012 14
17. Configuration Wizards - Stages
Step 3
CONFIGWIZARD_MODE_GETSTAGE2HTML
Completely customisable except for the Back and Next
buttons
You can use data gathered in Step 2 to query the device,
manipulate the results and present them to the user
Example: Network Switch/Router wizard
Alternatively you may have pre-defined options
Example: Dell OpenManage Wizard
2012 17
18. Configuration Wizards - Stages
User coming from Step 2?
Check for Step 2 data and populate/manipulate
Step 2 → Step 3
User is returning from Step 4?
Check for existing Step 3 data and re-populate
Step 3 ← Step 4
User provided data on Step 3 failed error checking?
Check for Step 3 user data and re-populate
Step 3 ← Step 3 Validation
2012 18
19. Configuration Wizards - Stages
Between Step 3 and Step 4
CONFIGWIZARD_MODE_VALIDATESTAGE2DATA
Is the user returning from Step 4?
If so, no data validation required on Step 3 data
Reality checks on Step 3 data
If supplied data is not correct the wizard will go back to Step 3
Things like:
Allowed characters
Specific options selected but their sub-options are not defined
Empty fields
Refer to the code in the Box293 Demonstration Wizard to see how
the error checking is performed
2012 19
21. Configuration Wizards - Stages
Between Step 3 and Step 4
CONFIGWIZARD_MODE_GETSTAGE3OPTS
Optional, does not need to exist
Allows you to hide the Monitoring Settings in Step 4
This was ideal for the Plugin Tool
2012 21
22. Configuration Wizards - Stages
Step 4
CONFIGWIZARD_MODE_GETSTAGE3HTML
Any additional html here will appear on the "Monitoring Settings"
step, "Notification Settings" step, "Host Groups/Service
Groups/Parent Host" step and the "Final" step
Options for how often you want to monitor the device
As per the previous slide these can be hidden
This step will always be titled "Monitoring Settings"
2012 22
23. Configuration Wizards - Stages
Between Step 4 and Step 5
CONFIGWIZARD_MODE_VALIDATESTAGE3DATA
Nothing you really need to put here unless you
gathered more data in Step 4
If so don't forget to do reality checks on Step 4
data
2012 23
25. Configuration Wizards - Stages
Between Step 4 and Step 5
CONFIGWIZARD_MODE_GETSTAGE4OPTS
Optional, does not need to exist
Allows you to hide the Notification Settings in Step 5
This was ideal for the Plugin Tool
2012 25
26. Configuration Wizards - Stages
Step 5
Options for Notification Settings
As per the previous slide these can be hidden
You CANNOT add additional code to this screen
It will always be titled "Notification Settings"
2012 26
27. Configuration Wizards - Stages
Step 6
Options for Groups
and Parents
This Step CANNOT
be modified
This Step CANNOT
be hidden
2012 27
28. Configuration Wizards - Stages
Final Step
CONFIGWIZARD_MODE_GETFINALSTAGEHTML
You can add additional code to this screen however it will
always be titled "Final Settings"
2012 28
29. Configuration Wizards - Stages
Creating the Host and Service Objects
CONFIGWIZARD_MODE_GETOBJECTS
Using all the data you have gathered you "create" all the
host and service objects and add them to an $objs array
If you didn't do reality checks on the data then it's possible
that an invalid configuration will be applied and fail
2012 29
30. Configuration Wizards - Templates
Adding a Command Definition
You've supplied a plugin with your wizard
Defining the command is done in a .cfg file referenced in
the config.xml
Other objects like Groups can also be defined
Refer to official documentation about the config.xml file
# 'check_dell_ups' command definition
define command{
command_name check_dell_ups
command_line $USER1$/check_dell_ups.pl -H $HOSTADDRESS$ -C $ARG1$ -T $ARG2$
$ARG3$ $ARG4$ $ARG5$ $ARG6$ $ARG7$ $ARG8$
}
2012 30
32. Components
Official Documentation
Nagios XI Component Development
http://library.nagios.com/library/products/nagiosxi/documentation/551-nagios-xi-
component-development
2012 32
33. Dashlets and Dashboards - Overview
Extract from the user guide:
Dashboards are designed to provide individual users
with customized information they find useful
Dashboards are often used to display important,
relevant information where it is needed most
Dashboards are specific to individual Nagios XI
users. Each user can create their own unique set of
dashboards to customize Nagios XI to fit their needs
Dashboards can be deployed to multiple users and
can be kept synced with the original
Dashlets are added to Dashboards
2012 33
35. Dashlets - Current Portfolio
Dashlet Downloads
Text Dashlet 24,000+
Status Info Dashlet 4,000+
2012 35
36. Dashlets - Modes
There are four parts to creating a Dashlet
DASHLET_MODE_PREVIEW
DASHLET_MODE_GETCONFIGHTML
DASHLET_MODE_INBOARD
DASHLET_MODE_OUTBOARD
2012 36
37. Dashlets - Modes
DASHLET_MODE_PREVIEW
This is for when you click the Available Dashlets link
2012 37
38. Dashlets - Modes
DASHLET_MODE_GETCONFIGHTML
When you click on the "Add This To A Dashboard"
icon, DASHLET_MODE_GETCONFIGHTML is used
2012 38
39. Dashlets - Modes
DASHLET_MODE_GETCONFIGHTML
Here you can specify the options you
require for your dashlet
There is no error checking when you click
the Add It button
2012 39
40. Dashlets - Modes
DASHLET_MODE_GETCONFIGHTML
In the Status Info Dashlet I
implement my own error
checking by providing a
preview function
Play around with the Status
Info Dashlet to see how this
can be achieved
2012 40
41. Dashlets - Modes
DASHLET_MODE_INBOARD
This is the section that makes the dashlet appear on any
dashboard you add it to
2012 41
42. Dashlets - Modes
DASHLET_MODE_OUTBOARD
This is for some dashlets that are built into the pages of Nagios XI
2012 42
43. Discount Offer
But wait, there's more ...
Get a 10% discount on your Nagios XI Unlimited
Nodes license when purchased through this link:
http://www.nagios.com/nagiosxi10?ref=box293
Don't miss out as stocks are limited*
*Stocks are not limited
2012 43
Good morning all and thank you for coming to my session. My name is Troy Lea and I'm here to talk to you about custom configuration wizards, components and dashlets in Nagios XI.
Before I take you through my presentation I wanted to spend a few moments telling you about who I am and how I've come to speak to you at this conference. Who am I? I am just like you, I am passionate about IT and everyday I get to work for an organisation where I can make a difference in the value that my company delivers to our clients. The company I work for is called Strategic Group, and as you can tell by my accent we are Australian. I have spent the last seven years of my life with Strategic Group. My journey with Strategic Group started with helping clients by supporting their onsite infrastructure and creating solutions around that. The last few years have been quite different, in 2005, as a company we made a decision to jump into the cloud with both feet. We designed and created a complete server replacement platform that we call VAULT. I think the irony with this is, that while we called it VAULT, the world would soon catch up and call this cloud. Nagios XI is the monitoring solution we use for VAULT. The value it has brought to VAULT has been in the historical data that we can observe to understand the baseline performance of our environment. Additionally receiving a text message on my cell phone when the comms room temperature is increasing is somewhat handy. Although the VAULT journey has been exciting in itself, VAULT has grown and matured by taking our clients feedback and utilising our expertise to make VAULT a complete solution. It's this approach that sets us apart from the rest, some of us at the company like to think that it was good planning, some of us will admit that it was good luck when we came across the idea for VAULT, but it's how we've approached everyday after that that has defined who we are as an organisation. And it's this approach that I'm excited to contribute to, it's helped defined who I am as a technician and how I approach my work. At the beginning of this year I was awarded one of eight Nagios MVP awards for my contributions to the Nagios worldwide community for 2011 and it's one of the key reasons how I've come to be in front of you today.
Why Nagios XI? My journey started ... actually I tend to use the word journey a lot because I see life as a series of journeys, now where was I? Thats right, when I played with Nagios a couple of months before Nagios XI was released, I liked it and I could see it was a very powerful monitoring solution however I knew very little about Linux and that became a barrier for me. But it got to me, a few months later Nagios was still lingering in my head, something was telling me to have another look at it. So I did what anyone of us would do, I jumped on google cause google knows everything ... and I did a search for Nagios. Google and it's infinite wisdom told me that Nagios XI had just been released. I love Nagios XI, why do i love it? Because it took away that barrier of the Linux component. I love how I can just download Nagios XI and instantly you have a fully . functional . monitoring . product . I believe this is a perfect example of what a virtual appliance should be. Out of all the things you can do with Nagios XI, why did I choose to focus on customising and creating configuration wizards? To an administrator that is new to Nagios XI it can get a bit confusing trying to learn how to configure Nagios. So lets say you have an xyz device you want to monitor, I guess that sounds like something everyone in this room would want to do. You would search the Nagios Exchange and find a plugin for xyz device and download it. Then you would have to learn how to test the plugin at the CLI. Then you would have to learn how to add a command to Nagios XI. Then you would have to learn how to add a service to Nagios XI using the command you just defined. That sounds like a lot of things for a beginner to learn with a new product. So what's the point of all of this? When I work out how to monitor xyz device in my environment, I am then able to turn around and write a Configuration Wizard for that xyz device. For you, that Configuration Wizard will automate the whole process and ONLY after a few mouse clicks you are monitoring the same xyz device in your environment.
Here is a summary of the Configuration Wizards I have created so far. The host creation tool is one that I am particularly proud of, because not only does it have a few downloads, it was the inspiration for the Bulk Host Import wizard that Nagios Enterprises developed. In 2010 the the VMware Monitoring wizard I created helped me win the Nagios Seedcamp competition. These are all available for download at the Nagios Exchange, and if you can’t find them I'm sure google will be more than happy to tell you where to go.
When I first started out there was no available documentation on how to create Configuration Wizards. So after playing around a bit and creating a couple of Wizards I made some notes about how I did it and published this on the Nagios Exchange. They are now out-dated, as the official documentation is more current however the service relationship map is a very handy diagram, I'll show you this on the next slide. I do plan on updating these documents. The Box293 Demonstration Wizard is what I will focus on in this presentation. I kind of call this documentation as when you look through the code you'll find it is heavily commented, this makes it very easy for anyone to understand how it all works.
This is the Nagios XI Service Relationship Map. I can remember the day when all of this started to fall into place. The reason why I created this was so I wouldn't forget how it all fitted together but also this is a handy reference for any new administrator to Nagios XI. It shows how a plugin / command relationship works. You can see how monitoring a windows performance counter object translates against a command, service and also inside of the configuration wizard. Even if you aren't creating custom configuration wizards this map is still very helpful. I also think it would be helpful to a Nagios admin that is migrating to Nagios XI. This will get updated to reflect the new core configuration manager interface that is being released soon as part of Nagios XI 2012.
Since then Nagios Enterprises has released official documentation which is a must read. Also the Component Development document has handy information about querying the backend databases.
Lets talk about configuration wizards. Firstly I will say that a lot of what I am going to talk about might seem like programming common sense. I'm the first to admit that I'm not a real programmer, so some of the stuff I will go over are things that I have learnt through my journey. One of the key concepts I aim for with a configuration wizard is putting all of the help on the first page of the wizard. This means the end user doesn't have to go off and find a separate manual. Things like how to configure SNMP on a Windows server. Its these little extra configuration steps that remove the barriers for a new admin to Nagios XI. It's all in hidden DIVs that are expandable/collapsible; so it's not like this information "gets in the way" every time you run the wizard. I strive to provide all the steps required to make the wizard work in your environment. There are multiple stages that you are stepped through to collect information about the object that you want to monitor. It is important that you program your configuration wizard to preserve the data the end user has already entered. If a user clicks the Back button then they won't need to choose all their options again. Where possible you should automate the data collection process. The Network Switch/Router configuration wizard is a great example of this between step 2 and 3. It talks to the Switch or Router and finds out what ports are active, gets information about them and then presents this in a nice table in step 3, with check boxes to select the desired monitoring options. This just makes things easier for the end user. An example where I did not do this and should have was with my VMware Monitoring Wizard. Instead I ask the user to type some information in and there is no validation to ensure that information exists in vCenter, a big revamp is planned for this wizard. Some of my configurations wizards need to be updated to reflect the current best practices, as outlined in official documentation and clearly demonstrated in my Box293 Demonstration Wizard.
Now I am going to delve into how configuration wizards work and how they can be customized. From the Configure tab in Nagios XI you can run the monitoring wizard. Step 1 presents you with the list of all the available wizards on your Nagios XI host. As we go through the different Steps in the configuration wizard, you will see that these do not directly correlate with the stage numbers in the php code, I will show you this. Why? I’m not entirely sure to be honest but it’s important that you know about this to avoid confusion.
Step 1 Inside each configuration wizard php file is the $args array. The information here is used in Step 1 and also on the Manage Config Wizards page Once you click on a wizard you want to run, you are taken to Step 2.
Before I can talk about Step 2 there is the following to consider. Is this the first time the wizard has been run? If so we define the variables that have default values. Or was the user on step 3 and they clicked the back button? If so we need to repopulate the data originally provided when on Step 2. Or did the user provided data on step 2 fail the required error checking? If so we need to repopulate the data provided when on Step 2, so they can correct it. For example they may have used invalid characters or left fields empty.
Here is step 2. Firstly you will see what I was talking about earlier where the step and stage numbers are not aligned. The Overview, Discount Offer, License and Project Hours are examples of the hidden DIVs that are expandable/collapsible. Here you can see we are asking for an IP Address or FQDN of the host we want to monitor. Also there is a select option for demonstration purposes. You will notice throughout the Box293 Configuration Wizard there is a lot of text that explains what each step is all about.
Step 2 This is the first step you can customise, it is completely customisable except for the Back and Next buttons. As I talked about earlier, you should put all of your overview, help and configuration steps here. I made the mistake in one of my earlier wizards by putting all this stuff at step 3 and it wasn't a logical place to put it.
Before Step 3 we have a validation stage. Firstly there should be a check performed to see if the user pressed the back button to go from Step 3 to Step 2. If they did this then there is no need for data validation on the Step 2 data as this would have already been done when they proceeded from Step 2 to Step 3. Otherwise the user is proceeding to Step 3 so there needs to be reality checks on the information provided in Step 2. For example the IP Address / FQDN field may not be populated. Some configuration wizards like the Network Switch/Router will use the address to contact the device and gather information, if it's not provided or its incorrect then the wizard is not going to work. If supplied data is not correct the wizard will go back to Step 2 informing them of the problem.
Here is Step 3. This is the Box293 Demonstration Wizard. You can see that the IP address from Step 2 is populated, also a DNS lookup was done and this information has been populated in the Host Name field.
The picture on the left is the Network Switch/Router wizard. This is an example of how the data collection process has been automated like I talked about before. The picture on the right is taken from the Dell OpenManage Monitoring Wizard. With this wizard it's just a simple list of check boxes the user can select.
Step 3 This step is completely customisable except for the Back and Next buttons. This should be the section that you get the user to select what options they want to monitor. If I refer back to the last slide, these may all be populated based on what the device you queried returned or predefined.
Additionally there is the following to consider. Is the user coming from on step 2? Check for Step 2 data and manipulate or populate. Or was the user on step 4 and they clicked the back button? If so we need to repopulate the data originally provided when on Step 3. Or did the user provided data on step 3 fail the required error checking? If so we need to repopulate the data provided when on Step 3, so they can correct it. For example they may have used invalid characters or left fields empty.
Before Step 4 we have a validation stage. Firstly there should be a check performed to see if the user pressed the back button to go from Step 4 to Step 3. If they did this then there is no need for data validation on the Step 3 data as this would have already been done when they proceeded from Step 3 to Step 4. Otherwise the user is proceeding to Step 4 so there needs to be reality checks on the information provided in Step 3. Things like allowed characters or specific options selected but their sub options were not defined. If supplied data is not correct the wizard will go back to Step 3 informing them of the problem.
Step 4 You can see the standard monitoring settings on the top image. The bottom image shows how these can be hidden.
In step 4 you are asked for Monitor Settings. Sometimes you don't want to ask the user this and actually program that in yourself. Refer to the code in the Box293 Demonstration Wizard on how to do this.
Step 4 In this step you are asked how often you want to monitor the device. As per the previous slide these can be hidden. Any additional html here will appear on the "Monitoring Settings" step, "Notification Settings" step, "Host Groups/Service Groups/Parent Host" step and the "Final" step. This step will always be titled "Monitoring Settings"
Before Step 5 we have a validation stage. There is nothing you need to put here unless you asked the user to provide more settings in step 4. If you did do this then there should also be reality checks on the Step 4 data as shown on previous slides.
Step 5 You can see the standard notification settings on the left image. The right image shows how these can be hidden.
In step 5 you are asked for Notification Settings. Sometimes you don't want to ask the user this and actually program that in yourself. Several components can be hidden. Refer to the code in the Box293 Demonstration Wizard on how to do this.
Step 5 You CANNOT add additional code to this step and it will always be titled "Notification Settings"
In Step 6 you are asked about group memberships. You CANNOT modify or hide this step.
This is the final summary screen. You can add additional code to this screen if you want however it will always be titled "Final Settings" If you wanted you could provide a summary of what is being monitored.
Using all the data you have gathered you "create" all the host and service objects and add them to an array. I won't go into details here because I don't have the time today, however refer to the Box293 Demonstration Wizard for detailed information or talk to me here at the conference. But be careful, if you didn't do reality checks on the data then it's possible that an invalid configuration will be applied and fail. There's a simple rule to this, test, test and test again! Then do some more testing.
If you supply a plugin with your wizard then you'll need to also define the command. Defining the command is done in a .cfg file referenced in the config.xml file. Something that I need you to take note of here, make sure you define your commands with all of the $ARG?$ values. This allow others to manipulate the command they way they see fit. Other objects like Groups can also be defined Refer to official documentation for more information about the config.xml file, this is all covered in the Wizard File Structure Overview section.
This takes us to components. I understand some of you may have questions about configuration wizards and I'll be happy to answer all of these at the end. The only component I have created so far is the History tab. Although I'm not going to spend a lot of time speaking about this, it's one of those components that I can't do without, as it makes it really easy to see the comment and acknowledgement history for the host or service I am currently looking at.
I won't delve into component development as it's quite complex and is a whole topic in itself, but like anything I'll be happy to talk to people about it offline. Here is the link for the official documentation for Nagios XI Component Development.
Moving onto Dashlets and Dashboards Dashboards are designed to provide individual users with customized information they find useful, they do this by adding dashlets to them. Each user can create their own unique set of dashboards to customize Nagios XI to fit their needs They can be deployed to multiple users and can be kept synced with the original
Here is the Dashboards tab. By default when you click on the Dashboards tab the Home Page dashboard is displayed
I have created two dashlets so far. The Text Dashlet simply allows you to create some HTML formatted text to be displayed on a Dashboard. I created the text dashlet as an exercise in understanding how I can create my own Dashlets. I already had the concept of the Status Info Dashlet in my head but I was a little overwhelmed with how I would actually make it work. As you can see, the Status Info Dashlet allows you to take a service and display it's current status information as a Dashlet, formatted they way you want. You can even remove part of the status information, in the example above you can see I removed "OK - " from the beginning. I love the Status Info Dashlet, it's right up there as one of my favorite projects I've created so far! I will explain the basics of how Dashlets can be created using the Text Dashlet, as this is a very simple Dashlet.
There are four parts to a Dashlet, in the next slides I will explain each one.
DASHLET_MODE_PREVIEW When you click the Available Dashlets link, the PREVIEW mode contains all the code that explains the purpose of your dashlet along with a screenshot.
DASHLET_MODE_GETCONFIGHTML When you click on the "Add This To A Dashboard" icon, DASHLET_MODE_GETCONFIGHTML is used
DASHLET_MODE_GETCONFIGHTML This is what is displayed. Here you can specify the options you require for your dashlet. There is no error checking when you click the Add It button. So if you had a field that the user needed to type into, and they left it blank, then that part of the dashlet is not going to work when it is on a dashboard. This can lead to lots of errors in the log every time that dashlet is refreshed.
DASHLET_MODE_GETCONFIGHTML One way of working around this is to provide a preview function in this section. For example in my Status Info Dashlet, the user can see exactly what the Dashlet will look like when they click the preview tab. If they haven't selected a required option then a message will appear telling them this.
DASHLET_MODE_INBOARD This is the section that makes the dashlet appear on any dashboard you add it to. For example with the text dashlet, it gets the options the user chose such as the font size, weight, style, variant and color. It then applies these to the text that the user typed in and presents this in the dashlet. The Status Info Dashlet uses the same basic concept except it is much more complicated due to the amount of options available that allows the user to manipulate the output.
DASHLET_MODE_OUTBOARD This is for some dashlets that are built into the pages of XI. When you see the Service Status Summary table on the Service Details page, that's a dashlet that's in OUTBOARD mode, but if you add it to one of your dashboards, it would then be using the INBOARD mode.
This about wraps up my presentation, thank you all for coming. If you are interested in buying Nagios XI then you can get a 10% discount off the price by purchasing it through this link.