Hi RonDB community,
I have a standalone two-node RonDB cluster and need to monitor its health programmatically.
What is the recommended way to monitor:
- Cluster health
- Data-node availability
- API-node connections
- Memory usage
- Node failures or restarts
- Critical events and errors
Does RonDB provide an admin API, JSON/REST endpoint, Prometheus exporter, or another supported monitoring interface?
Thanks!
Hi,
We have a management client that uses a management API.
This client can use the command: NODEID STATUS where NODEID is the node id
of the data node. One can also use the SHOW command, but this is more intended
for a human user rather than as a tool.
This will show whether the node is up, down or starting
We have also almost 60 ndbinfo tables in the latest releases.
One of those is the resources table, this shows the memory usage
of the various memory pools in a data node.
Node failures can be monitored through the node log and the cluster log.
One can also see the timing of node restarts in one of those ndbinfo tables.
Critical events are logged in node logs and cluster logs. In particular in the
case of a crash RonDB will generate an error log file, it will generate a stack
trace of the crash in the node log and it will generate a detailed trace file
that shows the last few thousand messages executed and similarly traces
for how those messages were executed. There will be one file per thread,
each message has a sender id and receiver id so you could trace messages
in the node and between nodes in case of a multi-node failure.
API node connections can be tracked through the SHOW command.
We have a Prometheus exporter that is found in GitHub - logicalclocks/mysqld_exporter: Exporter for MySQL server metrics · GitHub in the branch ndb. There is also corresponding Grafana displays of this, but I don’t recall exactly which
tree they are placed in. There are 11 different dashboards, all driven by output from ndbinfo
tables that are accessed as normal tables in MySQL using the database ndbinfo.
RonDB can be accessed from the following APIs:
- NDB API, a C++ API
- ClusterJ, a Java API on top of the NDB API
- MySQL APIs
- RonDB REST API
RonDB REST API supports batched key lookup endpoint for database and feature stores
The 26.04 version in development also supports batched insert, write and delete
- RonSQL
RonSQL is accessed from RonDB REST API and supports SELECT and EXPLAIN queries
Version 26.04 has significant extensions of this REST API endpoint
- An experimental Rondis (Redis interface to RonDB)
Documentation is available at rondb.com
Our management of RonDB is normally done through Helm using Kubernetes.
the Helm code is in GitHub - logicalclocks/rondb-helm: Helm chart for RonDB · GitHub.
Hope this helps.
One thing more, the RonDB REST API has a health endpoint and metrics endpoint.