GSoC 2020 : Expose System Metrics For Monitoring

Background

As OpenMRS implementations mature and especially when they grow to using multiple, potentially geographically separate, servers, real-time system monitoring becomes increasingly important to ensure optimal system uptime and performance.  Tools like Nagios, OpenNMS, Munin, Cacti, etc. are commonly used for infrastructure monitoring.  While these tools can be manually configured to monitor many aspects of an OpenMRS server, the goal of this project is to create a module to facilitate server monitoring by exposing many of the key server metrics through a monitor-friendly web page or pages (i.e., plain text, JSON, or – even better – any standardized monitoring spec that can be easily consumed by monitoring tools).

Abstract

Either enhance the Usage Statistics Module or create a new a module (whichever is most appropriate) to expose key server metrics useful for system monitoring by tools like Nagios in a monitor-friendly (i.e., simple text) format.

Project Champions

Objectives

  • Create a new module which can collect the necessary real-time data for the metrics in OpenMRS deployed servers.
  • Present a monitor-friendly page of server metrics, including
    -server uptime,
    -number of active sessions,
    -database connections,
    -system usage counts,
  • Constrain access to the page in a manner that doesn't rely on authentication (e.g., by limiting access to a set and/or range of IP addresses).

Design

  • Enhance the Usage Statistics Module or create a new module to collect key server stats (like server uptime) and expose them in a plain text page.
  • Use IP filtering or something similar to make it easy for system admins to limit access to the page from their monitor tool(s).
  • Start with a few easy-to-get stats in order to get a functional solution quickly, allowing additional metrics to be added with future iterations.
  • Extra credit: create an "OpenMRS Nagios Addon" so system admins running Nagios can simply install the addon and point it to their server(s) running this module.

Documentation

TBD

Resources


Related Projects / Possible Existing solutions to review