perfino consists of two main parts: the server and the agent.
The agent is loaded in the monitored VM and records data. The agent connects to a perfino server.
The server periodically queries all connected agents and processes their data. Historical
information is written to a database. Users log in with their web browser to the perfino server to analyze
the recorded data.
Internally, the perfino server consists of three components:
The collector accepts TCP connections from perfino agents in monitored VMs. These connections can
be encrypted and authenticated, so they are viable for wide area networks. The collector also consolidates data
in the database, fires triggers and generates alerts.
The embedded H2 database stores all persistent data. Optionally, you can use an external
mysql database instead of the embedded H2 database. There are more tools available for the mysql database,
such as hot backup and replication, so it is recommended for production.
The UI server accepts HTTPS connections where users can log in, view and analyze the collected
data and configure the server. Optionally, the UI server can be deployed as a WAR file into a separate JEE
container like Apache Tomcat. It then uses RMI to talk to the collector. This is useful if the collector is
located in an internal network and the perfino UI in a DMZ.
By default, the perfino server is the only process you need to run. In particular, you don't have to worry about
installing and configuring an external database. This is ideal for evaluation and also appropriate for production
with less than 10 VMs.