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. There are two separate databases in that directory, one called "perfino" that contains recorded data and one called "config" that only contains configuration data. If you delete the "perfino" database while the perfino server is shut down, all configuration options are preserved.
- 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.