Architecture
Agent architecture
The MyARM agent architecture is designed to be flexible, efficient and robust. Figure "MyARM overall architecture" gives an overview:
- The ARM instrumented applications (C/C++ and Java) uses the ARM 4.0 interfaces to measure ARM transactions
- The MyARM agent implements the ARM 4.0 interfaces and is linked
(dll or jar) against the instrumented application
- The MyARM agent implementation uses a datasink
(backend) concept to store the measured ARM data. The following
different kinds of datasinks can be used.
- file datasink
- The file datasink writes the measured ARM data to a file which will be collected by a myarmdaemon
- tcp datasink
- The tcp datasink writes the measured ARM data over a TCP/IP connection to a myarmdaemon
- The runtime configuration is used to change the behaviour of a running instrumented application. The runtime configuration is distributed to the instrumented application through a myarmdaemon process which receives runtime configuration data through a TCP/IP connection from the myarmadmin web application
- A handler uses runtime configurations to adopt the behaviour of the MyARM agent
- Filestorage component to write/read ARM data to/from a temporary file if the datasink is currently not able to store the data (TCP/IP connection down)
- The MyARM agent implementation uses a datasink
(backend) concept to store the measured ARM data. The following
different kinds of datasinks can be used.
- The myarmdaemon is configured
- to read in any ARM data files which were written by the file datasink of an instrumented application
- It will forward the ARM data to a connected myarmdaemon configured as a TCP server
- reading runtime configurations from disk when new configuration were stored by the TCP datasink
- The myarmdaemon collects and aggregates
ARM data received and provides interfaces for MyARM web
applications
- receives runtime configuration data from the myarmadmin web application using a TCP/IP connection, stores the data into a local file and distributes the runtime configuration to connected myarmdaemon processes
- aggregates the received ARM data into so-called real time statistics (rts handler)
- stores any received ARM data depending on configuration
- into a database
- or in the filesystem based MyARM archive
- Database support is provided for SQLite3, MySQL and MariaDB
- Multiple database connections can be opened to the MySQL or MariaDB database for high transaction loads
- MyARM archive SQLite3 database used to store ARM metadata (such as application and transaction names)
- filesystem based MyARM archive to store ARM transaction measurements efficiently and a scalable search using by the myarmbrowser web application
- CSV export TCP/IP interface to export ARM transaction measurements exactly once
- MyARM HTTP server started by the myarmdaemon
- myarmbrowser for individual case analysis
- myarmrtsbrowser and myarmrtsmonitor for statistical analysis and 24 hours monitoring
- myarmadmin to configure the MyARM system globally
- A standard web browser can be used to access all MyARM web applications
- MyARM applications
- myarmmanager provides a simple graphical user interface to access all MyARM web applications
- Command line tools (such as myarmquery) are able to connect to the database directly (besides SQLite3 database)