March 11, 2022
Application Discovery with DX Unified Infrastructure Management
Written by: Steve D'Arcy
Having any form of application discovery can be of great benefit. With these capabilities, you can determine what is deployed within your infrastructure and better understand what monitoring to apply to each device. When you know which applications are running within your environment, you can group devices by their associated applications. Once you’ve established these interrelationships, you can start to create monitoring policies for each application and apply those policies at the group level. These capabilities even set the stage for a zero-touch monitoring model in which, when new devices are deployed, they can automatically be added to existing application groups, along with all monitoring policies associated with those groups.
DX Unified Infrastructure Management (DX UIM) offers an open approach to automated application infrastructure discovery, which means you can add your own scripts for discovering additional information. This even extends beyond applications; you can discover virtually anything about a device. With these insights, you can more intelligently group devices and define monitoring profiles.
To do application discovery, DX Unified Infrastructure Management (DX UIM), release 7.90 and later, requires a robot, so the various scripts can be deployed and executed by the spooler (internally known as the “spooler plugins”). Each script should run a single command or series of commands to gather the information required. The script will output a set of key-value pairs to “stdout.” The spooler reads in the key-value pairs and creates an entry in the “niscache” directory. These entries are picked up by the discovery server and a new device attribute is created for this device. These device attributes can be used as the filter criteria for operator console groups, employing the advanced option or a SQL statement. Application discovery leverages existing functionality in niscache, plus spooler plugins.
Each script is contained in its own DX UIM package and can be found in the archive. Let’s look at one of the out-of-the-box scripts to show how easy it would be to write your own. For example, here is the “app_disco_iis_server” package:
Figure 1: Notice the paths of both files point to the plugins/attr_publisher directory. The plugins directory is found in the robot’s base Nimsoft directory.
The “attr_publisher.cfx” file defines the script that the spooler will execute:
<variables>
custom_scripts_dir=plugins/attr_publisher/custom_scripts
<scripts>
<app_disco_iis_server>
filename=app_disco_iis_server
</app_disco_iis_server>
</scripts>
</variables>
The app_disco_iis_server.bat file is the script itself, which is in the plugins/attr_publisher/custom_scripts directory. If we look at the contents of the script, it is a set of commands that will output to stdout:
@echo off
set process_image_name=w3wp.exe
TASKLIST /FI "IMAGENAME eq %process_image_name%" 2>NUL | find /I "%process_image_name%" > NUL
if not errorlevel 1 @echo Roles=iis_server
SC QUERY W3SVC 2>NUL | find /I "RUNNING" > NUL
if not errorlevel 1 @echo Roles=iis_server
@echo Finished=true
If the IIS Server application is found, the script will output “Roles=iis_server,” followed by “Finished=true”:
If not found, the script will only output “Finished=true,” which tells the spooler that the script has completed:
Figure 2: Command line examples of running the script where IIS is installed and ISS is not found.
Note: You can run this on the command line to see these results without affecting anything. This will only be counted when the spooler runs.
*** The requirement for the Finished=true has been removed, so you can just return nothing. I have left them in there for backward compatibility. ***
When the spooler runs this script, it will create a new computer system attribute in the “CM_COMPUTER_SYSTEM_ATTR” table. This attribute is padded out, incorporating the script name prefixed by “UserPropMV” to be “UserPropMV.app_disco_iis_server.Roles” with a value of “iss_server”. Devices can have more than one attribute depending on what is installed.
Once the attributes are created, you can create an operator console group based on all the devices that have a specific value. In this case, you can group based on any devices with the value “iis_server.” You can see that the MS IIS Server group has a filter of SQL and a query:
select distinct cs_id from CM_COMPUTER_SYSTEM_ATTR where cs_attr_key like 'UserProp%.Roles' and cs_attr_value='iis_server'
Your query must only return unique cs_id(s) of the devices that have an attribute with a certain value. All these devices can be grouped together for you to apply the specific monitoring profiles.
You can use the same procedure to employ a custom script, even one that has nothing to do with application discovery. In this way, you can gather specific data that’s meaningful to your environment and business. For example, let’s say we want to identify the type of Linux that is running and create a new LinuxType attribute. To do so, you could group by Linux type and set up the monitoring for each type:
#!/bin/sh
if [ -f /etc/issue ]; then
if set `cat /etc/issue` > /dev/null 2>&1
then
echo LinuxType=$1
fi
else
if set `uname -a` > /dev/null 2>&1
then
echo LinuxType=$1
fi
echo Finished=true
Note: This is just an example script and has not been tested on every Linux version.
You can package this script and distribute it via the monitoring configuration service (MCS). This can occur as part of application discovery, and you can specify the frequency and interval to run this script. For this example, it would only make sense to run the script once to get the Linux type, as this will never change.
I hope this gives you a better understanding of the application discovery capabilities of DX UIM and inspires you to write your own scripts. If you have any questions, feel free to reach out if to me in the DX UIM Community.
Steve D'Arcy
Steve D’Arcy is one of Broadcom’s trusted advisors, learning about the challenges customers face and helping overcome them to ensure customers’ business goals are met. He has worked with unified infrastructure management since 2010, and during this time has collaborated closely with engineering and field operations to...
Other posts you might be interested in
Explore the Catalog
Blog
November 4, 2024
Unlocking the Power of UIMAPI: Automating Probe Configuration
Read More
Blog
October 4, 2024
Capturing a Complete Topology for AIOps
Read More
Blog
October 4, 2024
Fantastic Universes and How to Use Them
Read More
Blog
September 26, 2024
DX App Synthetic Monitor (ASM): Introducing Synthetic Operator for Kubernetes
Read More
Blog
September 16, 2024
Streamline Your Maintenance Modes: Automate DX UIM with UIMAPI
Read More
Blog
September 16, 2024
Introducing The eBPF Agent: A New, No-Code Approach for Cloud-Native Observability
Read More
Blog
September 6, 2024
CrowdStrike: Are Regulations Failing to Ensure Continuity of Essential Services?
Read More
Blog
August 28, 2024
Monitoring the Monitor: Achieving High Availability in DX Unified Infrastructure Management
Read More
Blog
August 27, 2024