How to Install the Pinguzo Agent
A lightweight agent that runs on your Linux server and ships system metrics to Pinguzo every minute.
Prerequisites
- Operating system: Any modern Linux distribution (Ubuntu, Debian, CentOS, RHEL, Rocky, Alma, Fedora, etc.)
- Privileges: Root access or a user with
sudorights - Utilities:
curlandbash(present on virtually all distributions) - Outbound HTTPS: Port 443 must be open outbound to the Pinguzo edge server (no inbound ports are required)
- Agent Key: A unique 64-character key generated when you add a server in Pinguzo
Quick Install (recommended)
Paste this command on your target server, replacing YOUR_64_CHARACTER_KEY with the key from your Pinguzo dashboard:
curl -fsSL https://api.pinguzo.com/files/install-agent.sh | \
sudo bash -s -- --agent-key=YOUR_64_CHARACTER_KEY
The installer will:
- Download the Pinguzo package and extract it to
/usr/local/pinguzo/ - Write the configuration file to
/usr/local/pinguzo/config/agent.conf - Add a cron job that runs the agent every minute
- Run the agent once immediately to verify connectivity
Installation Options
The installer supports additional flags passed after --:
| Flag | Required | Description |
|---|---|---|
--agent-key=KEY |
Yes | 64-character hexadecimal key from the Pinguzo dashboard. Authenticates the agent to the edge server. |
--edge=HOSTNAME |
No | Pin the agent to a specific edge server hostname (e.g., ca.pinguzo.com, uk.pinguzo.com, in.pinguzo.com). If omitted, Pinguzo auto-selects the lowest-latency edge. |
Example: Pin to a specific edge
curl -fsSL https://api.pinguzo.com/files/install-agent.sh | \
sudo bash -s -- --agent-key=YOUR_64_CHARACTER_KEY --edge=uk.pinguzo.com
File Locations
| Path | Purpose |
|---|---|
/usr/local/pinguzo/bin/pinguzo-agent.sh | Main agent script |
/usr/local/pinguzo/config/agent.conf | Configuration file (agent key, edge URL) |
/usr/local/pinguzo/queue/ | Temporary queue for offline buffering |
/var/log/pinguzo/agent.log | Agent log file |
How the Agent Works
The agent is a Bash script scheduled by cron to run every minute. Each run:
- Collects system metrics (see Metrics Collected below)
- Serializes the payload as JSON
- POSTs it over HTTPS to the assigned Pinguzo edge server
- If the POST fails (network issue), saves the payload to the local queue directory
- On the next run, retries any queued payloads after sending the current one
Metrics Collected
| Metric | Description |
|---|---|
| CPU Usage % | Overall CPU utilization across all cores |
| CPU Steal % | Percentage of time the hypervisor stole from your vCPU (cloud VMs only) |
| Memory Usage % | Used RAM as a percentage of total installed RAM |
| Disk Usage % | Highest disk usage percentage across all mounted partitions |
| Load Average | 1-minute, 5-minute, and 15-minute load averages |
| Uptime | System uptime in seconds (used to detect reboots) |
| Process List | Top 100 processes by CPU and memory (name, PID, CPU%, RAM%) |
| Network Interfaces | Bytes/packets sent and received per interface |
| Disk Partitions | Usage stats per mounted filesystem |
| SMART Health | Disk health status if smartctl is installed (Passed / Failed) |
| OS Info | Distribution, kernel version, architecture (sent on first check-in) |
| IP Address | Primary network interface IP (sent on first check-in) |
Verifying the Installation
Check agent logs
tail -f /var/log/pinguzo/agent.log
If there is an error in sending the metrics you will see the logs here
Verify the cron job was created
cat /etc/cron.d/pinguzo
Expected output:
* * * * * /usr/local/pinguzo/bin/pinguzo-agent.sh >> /var/log/pinguzo/agent.log 2>&1
Check the Pinguzo dashboard
Navigate to Servers in Pinguzo. Within 1–2 minutes the server should show Online with OS details populated.
Troubleshooting
Agent key rejected (HTTP 401)
Double-check that the key in /usr/local/pinguzo/config/agent.conf matches the key shown in your Pinguzo dashboard. Ensure there are no leading/trailing whitespace characters. If the server was deleted and re-added, update the key in the config file.
Cannot connect to edge server (network error)
Verify outbound HTTPS is allowed from the server:
curl -v https://ca.pinguzo.com/healthz.php
If this fails, check firewall rules, security groups (if on a cloud provider), or proxy settings.
Cron not running
Ensure the cron daemon is running:
# Debian / Ubuntu
systemctl status cron
# RHEL / CentOS / Rocky
systemctl status crond
Permission errors
The agent must run as root. Check that the cron entry is in root's cron (/etc/cron.d/pinguzo), not a user cron.
Updating the Agent
To update the agent to the latest version, run the built-in update command:
/usr/local/pinguzo/bin/pinguzo-agent.sh --updates
By default, Pinguzo checks for updates and auto updates once a day.
Uninstalling the Agent
To remove the agent from a machine, run the built-in uninstall command:
/usr/local/pinguzo/bin/pinguzo-agent.sh --uninstall
This removes the cron job, agent script, config, and log files. It does not delete the server record or historical data from your Pinguzo dashboard — delete the server from the dashboard separately if needed.
Security Considerations
- The agent communicates exclusively over HTTPS (TLS 1.2+)
- The Agent Key is a 64-character random hex string — keep it confidential; if compromised, rotate it by deleting and re-adding the server from the Pinguzo dashboard
- No inbound ports are opened on the monitored machine
- The agent does not execute remote commands — it only reads system data and sends it to Pinguzo
Next Steps
- View Server Metrics — explore CPU, memory, and disk charts
- Configure Alerts — set thresholds for CPU, memory, and disk usage
- View Incidents — see incidents triggered by server metrics