System architecture

Description of components interaction

The general scheme of the SAYMON architecture is provided below.

image

SAYMON Server is the system backend. It consists of a set of microservices that process and analyze received data. In particular, it controls the logic of state transitions of objects and links. The back end also includes NGINX and REST Server.

Kafka is a data bus that provides data exchange between microservices, sends tasks to Agents and receives execution results.

Kafka interacts with Agents version 3.0 and later. Older versions of Agents use Redis.

MongoDB is a NoSQL DBMS, which is the main storage of data about users, objects and links, their properties, states, and events.

Redis is the in-memory data store that provides quick access to frequently used data.

OpenTSDB is a specialized time series storage that keeps numerical metrics used in charts.

NGINX is the HTTP server that manages client requests, returns static elements of the web interface (HTML, JavaScript, CSS), and proxies requests from clients to the REST server.

REST server is a microservice that processes REST requests from clients.

Agent is a program that is installed on a virtual or physical server or other network node that performs checks, collects and transmits data to the server through the Kafka data bus. See Active and passive monitoring - agentful vs. agentless for possible ways to collect data.

It is possible to create a custom agent that will collect metrics from the local host, send requests to third-party services, and send data to the server via the REST API.

Web Client and Mobile Application are clients that allow users to interact with the server via the REST API. Clients can be represented by web applications and clients for mobile operating systems Android and iOS.

To deal with specific tasks, it is possible to create a custom client that will work with the server through the REST API.

External systems are third party software, information systems or software modules that can interact with the server using the REST API.

Authorization Services - apart form built-in mechanisms, the SAMON server also supports third-party authorization services. The server supports integration with AD server and Keycloak (see LDAP and Keycloak Integration).

Notifications - the server can notify Users about events and send data to External Systems using various channels described in Actions on State Changes.

List of used and supported software versions

  • Keycloak 1.0 and later

  • MongoDB 4.4 and later

  • NGINX 1.4 and later

  • Node.js 16.0 and later

  • OpenTSDB 2.3 and later

  • Redis 3.0 and later

  • Socket.IO 4.0 and later

  • TypeScript 4.7.4 and later