Skip to main content

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.

https://d33wubrfki0l68.cloudfront.net/862311a4ea061162fd2044d9cc152f4cf9ae628f/809d1/img/dbmarlin-architecture.svg

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:

  1. 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.
  2. 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.
  3. 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.