Server Monitoring
One package that watches your server from the inside.
Install a single package on your server: CPU, memory, disk, services, database and Socket.io status flow into the panel, error logs land in Radio, and if the "backup done" signal never arrives an alarm goes off. The agent changes nothing on your server and its source is public.
Why it exists
The site is up while the server is dying
An external check says "200 OK" and cannot see that the disk is 97% full, that MySQL connections have hit the ceiling, or that the nightly backup has not run for three days. By the time anyone notices, the outage has already happened, although all three were visible hours earlier.
What it does
7 capabilities, one screen.
One package, one command
npm i -g signalbird-cli and signalbird agent install. No Docker, no repositories to add: the agent installs as a systemd service and starts on its own when the server boots.
Read-only, and we can prove it
The agent starts no services, deletes no files, changes no configuration. Signalbird cannot send it commands: what travels from the panel is configuration, not commands (which metrics are on, which file is read). The source is public on GitHub and the complete list of commands it runs is in its protocol document.
The server from the inside
Load, CPU, memory, swap, disk and inode usage, systemd service states, listening ports, top processes by CPU. Every minute, on one card.
Database and Socket.io
Connection count, response time, slow queries and size for MySQL, PostgreSQL and SQL Server; connected clients, rooms and event rate for Socket.io. Database credentials stay in the local config file and are never sent to Signalbird.
Error logs flow into Radio
New lines in your nginx, application or system log that match your filter land in Radio and hook into its notification rules. Which files may be read is limited ON THE SERVER: a path chosen in the panel cannot escape the allowed roots.
Expected signals (backup alarm)
Add one line to your backup script: signalbird agent signal db-backup ok. In the panel you say "expected every hour, 5 minutes of tolerance"; if nothing arrives by 14:05 the alarm fires. If the script fails it sends a fail signal and the alarm fires immediately.
Version news arrives on its own
The agent never updates itself, a self-updating agent is remote code execution with good manners. When a new version is published, the owner of every server running an older one gets a notification. The decision to update is yours.
How it works
In 4 steps.
Add a server
Name it in the panel, take the install command and key.
Let metrics flow
The agent reports resources, services and database every minute.
Connect the logs
Pick the file and the filter; matching lines land in Radio.
Expect the signal
Have your backup signal hourly; if it does not, the alarm fires.
Connect it in code
A few lines are enough.
This call really exists in the package. Every language and surface is on the developers page.
For developers# 1) Install on the server (Ubuntu)
sudo npm i -g signalbird-cli
sudo signalbird agent install --token=sba_live_xxxxxxxx
# 2) Add one line at the end of your backup script
if mysqldump --all-databases | gzip > /var/backups/db.sql.gz; then
sudo signalbird agent signal db-backup ok "$(du -h /var/backups/db.sql.gz | cut -f1)"
else
sudo signalbird agent signal db-backup fail "mysqldump failed"
fiSpecifications
Does it really do that?
- Supported systems
- Ubuntu, Debian, Rocky, AlmaLinux and other systemd distributions
- Requirements
- Node.js 20+ and root; installed from npm (signalbird-cli)
- Source code
- github.com/Pariette-Inc/signalbird.cli · MIT
- Interval
- 30 seconds to 1 hour, set from the panel
- Databases
- MySQL · MariaDB · PostgreSQL
- Billing
- Per server, monthly. Metric volume is never billed
Questions
Things you might wonder.
What can the agent do on my server?
Read, and nothing else. It cannot start services, delete files, change configuration or install packages, and Signalbird cannot send it commands. The complete list of commands it runs is in section 7 of its protocol document, and the source is public.
Does my database password reach Signalbird?
No. Connection details live only in /etc/signalbird/agent.conf on your server; they are not shown in the panel, cannot be managed from it and are never sent. We recommend giving the agent a read-only database user.
Could someone make it read /etc/passwd from the panel?
No. The readable roots are set ON THE SERVER during installation (default /var/log). A path chosen in the panel that is not under them is skipped. Even a compromised Signalbird account cannot open a new file.
My server has no inbound access. Does it work?
The agent always opens the connection; Signalbird never connects to your server. Outbound 443 is enough, you open no inbound port.
How is this different from Uptime Monitoring?
Uptime Monitoring looks from the outside: "does the address respond, how fast". Server Monitoring looks from the inside: "is the disk filling up, did MySQL connections spike, did last night's backup run". They do not replace each other; most teams take both.
How many servers can I connect?
As many as your package allows. Pricing is per server and metric volume is never billed, a price that pushes you to widen the interval would make the product worse.
Which quota do the logs consume?
The Radio (Logs) module quota. Storage cost lives there, so we do not count it twice; the agent is only the courier.
Works well with