Healthstone is an open source, lightweight, self-hosted and agent based system monitoring solution able to run many customizable health checks. It is composed of a dashboard which runs on a Windows or Linux server, along with agents for Windows and Linux hosts that you wish to monitor. The Windows agent is a binary which runs as a system service and connects to this dashboard, while the Linux agent is a Python script doing the same thing. The dashboard can be customized to send you notifications through email, Pushbullet or NodePoint tickets when a client stops checking in, or if any of the configured checks fails. Configuration is retrieved in the form of templates from the dashboard by all agents. Templates are stored in the templates folder and can be customized for your needs.
The server component runs the dashboard against which Healthstone clients can register. It must be run on a Linux server with Python 3.x and Apache installed, or a Windows server with IIS (with the CGI and ISAP features) and Python 3.x installed. The dashboard also has the ability to use probes for hosts that you want to monitor without agents. Probes are checked on a schedule every 1 minute.
The server component runs the dashboard against which agents connect. It requires Python 3.x and runs on IIS or Apache with CGI and ISAPI support enabled.
healthstone.ziponto your server and unzip it where you want the files to live, for example
C:\healthstoneon Windows, or to a temporary location on Linux.
setup.batas a local administrator on Windows, or
setup.shas root on Linux.
The Windows agent can run on any recent Windows host and requires Microsoft .NET Framework 4.5 to be installed.
healthstone-agent-win64.zipfrom your dashboard onto each host you want to monitor, or to a central accessible network location.
install.batas a local administrator on each host to copy the files and install the service.
The Linux agent can run on any Linux host and requires Python 3.x to be installed.
healthstone-agent-linux.tarfrom your dashboard onto each host you want to monitor, or to a central accessible network location.
sudo ./install.shto install the script on the local system.
|2.1.2||Added custom script notification, notify on IP change.|
|2.1.1||Added admin access code and search options.|
|2.1.0||Converted settings to be web based.|
|2.0.6||Added JSON API, SNS notification support.|
|2.0.5||Added onlysystemdisk option, added agent-less probes.|
|2.0.4||Added mobile skin to dashboard, dark theme.|
|2.0.3||Improved Linux setup, added update and firewall checks to Linux agent.|
|2.0.2||Added network and firewall checks, 32/64bit support.|
|2.0.1||Fixed Windows Updates reporting on Win10, improved Linux agent error handling.|
|2.0.0||Complete rewrite of agents, they now fetch their configuration from the dashboard.|
|1.2.2||Added some Linux agent checks.|
|1.2.1||Added missing local user check.|
|1.2.0||Added proxy support, TLS 1.1/1.2 support to Windows client.|
|1.1.0||Consolidated README files into a new manual.|
|1.0.9||Added system log to dashboard, various checks to Linux client.|
|1.0.8||Added email and NodePoint notifications to dashboard, setup script.|
|1.0.7||Added access code and Pushbullet support to dashboard.|
|1.0.6||Basic Linux client created.|
|1.0.5||Added refresh, chart to dashboard.|
|1.0.4||Added server component, added support for dashboard.|
|1.0.3||Added NTP check, simplified installation process.|
|1.0.2||Added SNS notification, automated build process.|
|1.0.1||Added various checks, added Pushbullet support, documentation.|
Supported platforms: Linux agent, Windows agent, Dashboard
Make sure Python 3.x is installed correctly. Try to run
dashboard.py manually from the command line and see the resulting HTML code. Make sure it has write access to the
../db folder. Make sure CGI support is enabled on your web server.
Each template lists a number of modules that you wish the agents to process. Only the
[General] section is mandatory, but each section kept must have all its keys listed. Do not use quotes or multiple lines for key values. Templates are not saved on hosts, each agent will fetch its specific template on every poll. Template filenames must contain only alphanumeric characters and end with
.template. The same template can be used for Windows and Linux agents, although you may want to create multiple templates and divide them according to your network needs, such as a template for Windows servers, one for workstations, one for Linux, etc.
On Linux, the proper
https_proxy environment variables must be set prior to Healthstone agent starting. On Windows, add the Registry key
HKLM/Software/Healthstone in the format:
On Windows, edit the Registry entries in
HKLM/Software/Healthstone with the new values then restart the service. On Linux, edit
/etc/rc.local, kill the currently running agent and restart it.
Some versions of Windows will not be able to connect to a dashboard running on a web server only offering TLS 1.1 or above. Add the Registry setting
HKLM/Software/Healthstone then restart the service.
For the Linux agent, make sure the script is running with
ps aux | grep healthstone. If it isn't, try to start it manually and see if any error occurs:
/usr/bin/healthstone.py <dashboard url> <template name>. For the Windows agent, check the Event Viewer under the Application log, all errors should be logged there.
Some Windows systems seem to have their performance cache get corrupted from time to time. Try the following in an Administrator command window:
Check the log at
/var/log/healthstone.log for hints as to why it stopped. Try to run the agent manually. The agent is set to run automatically on boot from
Make sure your template is not corrupted or misformed. Agents are set to revert to the default configuration of 30 seconds interval with no module being run if they cannot parse the template successfully. There is also a limit to the amount of data passed by the agents, try turning verbose to false.
Check the Apache log to see if the notify function failed for some reason. This should be under /var/log/httpd/site_name.error_log.
Probes rely on the dashboard component to run every minute on schedule. The setup process attempts to add a crontab entry (for Linux) or a scheduled task (on Windows) to run the script. Check your system logs to see if the task runs properly, and fix any error that may prevent it from running.