Architecture
Understanding the components​
All components of DBmarlin can run on a single DBmarlin server running Linux or Windows 64-bit OS.
Optionally, you may wish to have additional DBmarlin remote agents so that the agents can be located closer to the target databases but still report to a single DBmarlin server. These can run on either Linux or Kubernetes as containers.
DBmarlin Server​
DBmarlin is made up of a DBmarlin server which runs the Agent, UI Server, Archiver and Repository
Agent (built-in)​
The Agent is the software installed with the DBmarlin server to collect data. The Agent is made up of a number of different types of sensor which gather different types of data such as activity, statistics or changes. A scheduler within the agent automatically starts the different Sensors as required.
Sensor​
Sensors are the data collectors which run within an agent. There are 2 groups of sensor, (Database and Host) and within those groups there are different types of sensor for each technology type (E.g. MySQL, Oracle, Linux, Windows etc.). Each sensor makes a remote connection to a target database instance or host in order to measure its performance.
UI Server​
This is a web server (Nginx web server) which serves the user interface resources to the end-user's browser. The User Interface itself is is rendered in a browser as a Single Page App (SPA) built using the React framework. By default this UI server will run on TCP port 9090
but can be changed by running configure.sh
.
Archiver​
The Archiver manages all reads and writes to the DBMarlin Repository. It provides a REST API to both the Agents and UI. The Archiver is a Java application server (Tomcat). By default the API runs on TCP port 9080
but can be changed by running configure.sh
. Connections to the archiver such as API requests are reverse proxied though the Nginx server on TCP port 9090
and so this port doesn't see to be opened externally.
Repository​
This is where DBmarlin keeps all its data. This includes metadata about the databases which are monitored as well as the performance data and metrics gathered from the monitored databases. It is a PostgreSQL database which is bundled with DBmarlin and by default will listen on TCP port 9070
.
DBmarlin Remote Agents (optional)​
A built-in agent is included with the DBmarlin Server installation. For many customers the built-in agent will be sufficient. You can however extend your DBmarlin platform by adding further remote agents which send their monitoring data back to a DBmarlin Server on another machine.
Typical uses for a remote agent would be:
- Scalability. If you are monitoring hundreds or thousands of databases and hosts, you can horizontally scale your DBmarlin platform by adding remote agents to offload some of the work from the DBmarlin server.
- Geographically distributed databases. If you have databases in different data centres or regions, it might not be practical to monitor them all from a the single built-in agent in one region. Therefore remote agents can be deployed so that they are closer to the monitored databases.
- Kubernetes. If you are running databases inside Kubernetes, you may require that the agent is located inside the same cluster.
Remote agents can run on either Linux or Kubernetes as containers.
DBmarlin UI​
User Interface (Browser)​
The UI can be accessed through any modern browser such as Chrome, Edge, Firefox or Safari. See full list of supported browsers.
In your browser enter the address of the DBmarlin server into the address bar. For example http://dbmarlin server:9090/
Firewall Requirements​
Agent to target database instance​
The Agent makes a connection to the target database instance using the host and port number specified when you added the target database on the Add Database screen. For example if the target is a MySQL instance running on 192.168.1.44
and TCP port 3306
then that port would need to be open between the DBmarlin server and the target database host in order for a connection to be made.
Browser to UI server & Archiver API​
Your Browser makes a connection on port on TCP port 9090
to access both the UI Server and the Archiver API. That port needs to be open between all end users browsers and the DBmarlin server.