Description
This is a request for creating a Monitors section under Observability which allows to monitor status and health for services, certificates, http endpoints, hosts (via tcp / ping) and anything else that'd fall into the defined schema of "Up" and "Down" statuses.
It should also be possible to define Monitors not only on boolean up / down statuses but also on an avg latency.
Synthetics are the source of most (if not all) of data that Monitors would monitor.
For this feature to be developed efficiently, I propose that we focus on ingestion and display of existing synthetics monitoring agents (such as heartbeat) instead of developing one from scratch. Synthetics ingestion should be created in such a way to allow for this flexibility, mapping any synthetic to a up / down status, and an optional numeric value that a monitor can attach to and create a threshold.
There needs to be Alerting integration as well, but it's likely out of scope for this feature request.
So the steps required for this feature -
- Define a list of initial synthetics monitoring agents to support.
heartbeat
would be the first. - Given the above list, settle on a schema that would serve opensearch-synthetics.
- Define an ingestion architecture. I propose a dedicated ingestion pipeline for synthetics which can take an indexing input with a source hint, and translate to the defined schema which essentially should always have
up
/down
(orfail
/success
),@timestamp
and a metric (to represent "time took" for example in http sampling, "time since", "time to" for example in cert expiration test, etc) - Monitors UI where monitors would be defined and displayed. Monitor definitions would be saved in an
.observability-monitors
index. - Follow up with spec'ing Alerting ingegration.