The company Mersive manufacturers a product called the Solstice Pod that allows for users to wirelessly share/cast the screens of their phones and computers to displays. They are popular devices for conference rooms where HDMI ports can be worn out or damaged. They also benefit from not needing any special hardware dongles/adapters/hubs and also reduce driver conflicts that can sometimes exist.

Solstice Pods are easy to monitor with Zabbix since Mersive uses HTTP GET commands which are easy to integrate with Zabbix. From the commands there are a lot of options that provide useful insight into Solstice Pod usage and status.

Let’s take a look at what information a Solstice Pod tells us via the API:
https://{IP-ADDRESS}:8443/api/stats?password={PASSWORD}

This information can be brought into Zabbix items so that the Solstice Pod can be monitored.

Template

Start by creating a Template for the Solstice Pods. I named mine “Mersive Solstice Pod”. I also created a group called “Solstice Pod”:

Some Macros are also necessary so navigate there and create the following:

{$APIPASSWORD}Put your password here
{$DEVICENOTUSED1}Specify a number of days to alert on when a Pod has not been connected to. I use 90d (days)
{$DEVICENOTUSED2}Specify a number of days to alert on when a Pod has not been connected to. I use 60d (days)
{$DEVICENOTUSED3}Specify a number of days to alert on when a Pod has not been connected to. I use 15d (days)
{$HTTP_TIMEOUT}3s
{$MIN_SOFTWARE_VERSION}If you have a minimum firmware level put it here. 4.4 is a very stable release I like to use

Update as of June 2020: Zabbix 5.0 now supports secret MACROs so it is much safer to store passwords in MACROs.

Also add a Linked Template so we can get some stats on ICMP (Ping). Within the Mersive Solstice Pod template, click “Linked Templates”:

Click “Add” and find “Template Module ICMP Ping”:

Now click “Add” and “Update”. This will add ICMP checks to the devices associated with the Mersive Solstice Pod template.

Items

Now navigate to Items so we can specify what will be monitored:

The first thing that needs to be created is the Solstice device stats JSON item which will tell Zabbix how to access all of the information from the Solstice Pod. All information will be retrieved at the same time, then the items with specific stats will grab the specific information they need.

The parameters I have set are:

NameSolstice device stats JSON
TypeHTTP Agent
Keysolstice_stats_json
URLhttps://{HOST.CONN}:8443/api/stats?password={$APIPASSWORD}
Request TypeGET
Timeout{$HTTP_TIMEOUT}
Update interval{$NORMAL_UPDATE_INTERVAL}

Click “Update” and now the initial item is created and Zabbix can poll the API off the Solstice Pod. Now items can be created to grab information to monitor and alert on.
Let’s start with the device name. Create a new item:

NameStats m_displayid
TypeDependent item
Keystats.m_displayid
Master itemMersive Solstice Pod: Solstice device stats JSON
Type of informationCharacter

Don’t forget Preprocessing, which will actually define that is being looked for to associate with the item:

JSON Path$.m_displayId

Click “Update” and there should be two items created now. Continue adding all of the possible items, which can be found by visiting https://{IP-ADDRESS}:8443/api/stats?password={PASSWORD} or a table is available below:

NameKeyType of InformationPreprocessing
Stats m_displayidstats.m_displayidCharacterJSON path : $.m_displayId
Stats m_displayInformation m_displayNamestats.m_displayinformation.m_displaynameCharacterJSON path : $.m_displayInformation.m_displayName
Stats m_serverVersion numericstats.m_serverversion.numNumeric (float)JSON path : $.m_serverVersion
Regular expression: Pattern: ^(\d+.\d+)..+
Output: \1
Stats m_statistics m_connectedUsersstats.m_statistics.m_connectedusersNumeric (unsigned)JSON path : $.m_statistics.m_connectedUsers
Stats m_statistics m_timeSinceLastConnectionInitializestats.m_statistics.m_timesincelastconnectioninitializeNumeric (unsigned)JSON path : $.m_statistics.m_timeSinceLastConnectionInitialize
Custom multiplier: 0.001

All of these items are a “Dependent item”

You should also be associating each item with an application so that it is easier to build dashboards later. Application names can be completely up to you and different host templates can share the same application names to show a variety of data together.

Here is what the current template should roughly look like:

If you go to Latest Data on a host you should see all of your items populating. This may take a few minutes though.

You can view graphs from here to see connected users or see the time since last connection slowly increase.

Triggers

Triggers are based on items, so we can create a trigger based on any item that we just made. There should be 3 triggers already made that are from the ICMP Ping template. Let’s create triggers specific to the Solstice Pod.

Firmware is out-of-date is a good start. Navigate to Triggers and click “Create Trigger” in the top right corner. Name the trigger “Device firmware is out-of-date” or something similar.

Set the severity for whatever you would like, I will set mine for Information level. Click “Add” next to Expression. This will allow you to easily create an expression that determines how the trigger will engage. Set the Item for “Stats m_serverVersion numeric”, leave Function as last(), leave Last of (T) and Time shift blank, and set the Result to = {$MIN_SOFTWARE_VERSION}

Stats m_serverVersion numeric is the serverVersion from the Solstice Pods API, this is the latest software version running on the device.

Function last() is that the last result of stat

Last of (T) is how many times the stat was checked. If you leave this blank it uses the server default.

Time Shift sets how much time passes between each stat check to determine if its triggered. If you leave this blank it uses the server default.

{$MIN_SOFTWARE_VERSION} is a MACRO that we set earlier. This allows you to apply the same value to every device to check by only setting one field.

Now just click Add and your trigger should be set:

Let’s test it by setting the {$MIN_SOFTWARE_VERSION} MACRO to “5”. Since the device being tested is running 4.4 we should see a trigger. Click on “Monitoring”, “Problems”, and set the Host to the name of the Solstice Pod:

It looks like it is working now. Triggers are easy to setup and can be very custom.

Leave a Reply

Your email address will not be published.