Upgrading to Meerkat 3


Change Summary

Meerkat now uses event streams, with http2 support, for both dashboard to Meerkat communication and Icinga2 to Meerkat Service communication. This change reduces the number of API calls to Icinga2 and improves the responsiveness of dashboards to changes in check state.

Security has been improved by scrubbing the incoming data to only include required information.

Backgrounds and Sounds upload and management are now independent of dashboards and accessed via a Assets menu.

Dashboards being viewed anywhere will update automatically when the dashboard is edited and saved. This update functionality also triggers when Icinga2 configuration changes or the Meerkat Service or Icinga Server connections fail.

Readability and usability improvements:

  • More inline tips and placeholders scattered throughout the interface for guidance
  • Replace <div> HTML elements with more meaningful <section>, <fieldset> etc. HTML elements.
  • Standard HTML forms and pages replace custom interface elements like Javascript modals.

Logging and debug options have been added to Meerkat.

Meerkat 3 includes the latest release of Bootstrap 5 (v5.2). For information on browser support, see the Bootstrap browsers and devices page. Notably Internet Explorer is no longer officially supported.

Bootstrap is used throughout the entire GUI.

Meerkat is no longer a “Single Page Application”, and serves more conventional URL paths present in other web apps.

Paths of a dashboard’s URL have changed from previous releases. Old https://meerkat2.example.com/view/test https://meerkat2.example.com/edit/test

New https://meerkat3.example.com/test/view https://meerkat3.example.com/test/edit https://meerkat3.example.com/test/delete

URLs in the previous format continue to work via a permanent redirect. Nonetheless, where possible, it is encouraged to update URLs to the new format.

A new About page shows the installed version of Meerkat and build time.

Installation is easier. With install scripts in the contrib directory to assist with installation and configuration.

The GUI is now served directly from the binary, rather than from a directory on the filesystem.

Prepare

There are changes to the dashboard’s on-disk format. Back up existing dashboards:

cd <meerkat directory>
tar -cvf dashboards.tar dashboards dashboards-data

Restore command if you need to restore the old data

 tar -xvf dashboards.tar

Install

Don’t install Meerkat over the top of itself, if you want Meerkat to be installed in the same location rename the existing installation directory.

Follow the install instructions.

Post-install steps

These instructions assume Meerkat is installed in the default installation directory /usr/local/meerkat.

Dashboard Migration

The migrator is written in Python and requires python3 to run

Run the migrator from the root directory. The migrator

  • takes a single dashabord
  • backs it up
  • backs up the destination if the destination exists
  • then rewrites the dashboard to the new version
Dry run
python3 ./migrations/meerkat_v3.py --dashboard /usr/local/meerkat/dashboards/yourdashboard.json
Live Run
python3 ./migrations/meerkat_v3.py --dashboard /usr/local/meerkat/dashboards/yourdashboard.json --live
Live Run with Folder allocation

Folders are a way of grouping like dashboards together.

python3 ./migrations/meerkat_v3.py --dashboard /usr/local/meerkat/dashboards/yourdashboard.json --folder stuff --live 
Live Run for multiple dashboards

Folders are a way of grouping like dashboards together.

for d in /usr/local/meerkat/dashboards/stuff*.json ; do python3 ./migrations/meerkat_v3.py --dashboard $d --folder stuff --live ; done
Move sounds from dashboards-data to dashboards-sound

Dashboard sounds have been given their own directory dashboards-sound.

mv /old/meerkat/dashboards-data/*.mp3 /usr/local/meerkat/dashboards-sound/
mv /old/meerkat/dashboards-data/*.wav /usr/local/meerkat/dashboards-sound/

Repeat for any other formats you have

Move backgrounds from dashboards-data to dashboards-background

Dashboard backgrounds have been given their own directory dashboards-background.

mv /old/meerkat/dashboards-data/*.png /usr/local/meerkat/dashboards-background/
mv /old/meerkat/dashboards-data/*.jpg /usr/local/meerkat/dashboards-background/

Repeat for any other formats you have

or if you did the sounds first just move the remaining data to backgrounds

mv /old/meerkat/dashboards-data/*.* /usr/local/meerkat/dashboards-background/