Docs

Troubleshooting

What a message means and what to do about it, for installation, the panel, agents, emails, monitors, traffic, vulnerabilities, the AI, passkeys and updates.

Look for the exact message you see on this page (Ctrl + F, or ⌘ + F on a Mac): most entries start from what the panel, an email, the installer or a log says. The FAQ answers general questions. If nothing here helps, see Getting help.

First checks

These commands answer most questions. Run them on the server concerned:

3rmonitor status                       # installation mode and service status
3rmonitor version                      # installed version
journalctl -u 3rmonitor-master -n 50   # last lines of the master log (on the master)
journalctl -u 3rmonitor-agent -n 50    # last lines of the agent log (on an agent server)
journalctl -u 3rmonitor-helper -n 50   # last lines of the agent's root helper
sudo 3rmonitor agent --test            # an agent reports once and shows the result

Where messages appear:

WhereWhat you find there
A short message in the bottom-right corner of the panelThe result of what you just did: a setting that wasn't accepted, a test that failed
The server's page, and the status of its card on the Overview (hover it)Its active alerts, and how its agent runs (System tab → Agent)
SystemThe master's own state: agent packages, IP-to-country database, software updates, and Recent emails with their errors
AI → On-callThe servers where the AI can do less, and why
The agent and helper logsWhy an agent can't report, update or apply the blocklist

Many problems are already fixed in a newer version: check System → Software updates first.

Installing

The install command fails

"Download failed: make sure the master is reachable, the token or enrollment key is correct, and the master was installed from the full release package" means one of those three:

  • the server can't reach the panel address (test with curl -I), or the Panel public URL in Settings → General is an address the server can't reach (for example a LAN IP from another network);
  • the token or enrollment key is no longer valid: copy the command again from Servers;
  • the master has no agent packages. The Servers page then warns that "the dist directory on the master has no agent packages". Reinstall the master from the complete release package: sudo bash install.sh upgrade in the extracted package.

To see why, test the download yourself: curl -v "MASTER_URL/dl/SHA256SUMS?t=TOKEN". An answer of 401 means the token or key is wrong; 404, that the master has no agent packages.

Other messages from the installer (✗ stops or failed, ! is a warning; both are repeated in the summary at the end):

What you seeWhat to do
Please run as root: sudo bash install.shRun it with sudo. With curl: curl … | sudo bash -s -- agent ….
systemd is requiredThe server has no systemd, for example a container without systemd or a system with OpenRC. Use a server or VM with systemd.
Unsupported CPU architectureOnly x86_64, arm64, armv7 and 386 are supported.
Please specify a mode: install.sh agent|master|both|upgrade|uninstallThere is no terminal to show the menu (cloud-init, a script, curl | bash). Give the mode: bash -s -- agent ….
Missing --master · Missing --token or --enrollWithout a terminal nothing can be asked: give them on the command line.
curl: (60) SSL certificate problemThe master uses a self-signed certificate. Add -k to curl and --insecure to the command: see A master with a self-signed certificate.
curl or wget is requiredInstall curl: apt install curl or dnf install curl.
Checksum verification of … failed · Checksum verification of the downloaded program failedThe file is incomplete or damaged (an interrupted copy, a proxy, files of two versions mixed). Download and extract the package again; for an agent, run the command again.
Failed to download the checksum fileThe master's dist has no SHA256SUMS: upgrade the master from the full release package.
3rmonitor-linux-… not found: run this script from the release package directorymaster, both and upgrade on the master need the whole package, not install.sh alone. Extract 3rmonitor-X.Y.Z.tar.gz and run it in that directory.
… cannot run on this machine (architecture …)The program doesn't start: a damaged file, or /tmp doesn't allow running programs (noexec). Try sudo env TMPDIR=/var/tmp bash install.sh ….
Master initialization failedThe reason is printed just above, for example "The password must be at least 8 characters".
3rmonitor-master did not start correctlyjournalctl -u 3rmonitor-master -n 50 says why. Most often "address already in use": another program uses the port; choose another with --port.
Failed to write the agent configurationYou chose 1) Agent in the menu of the release package, which doesn't ask for the master and the token. Run sudo bash install.sh agent --master URL --token TOKEN in the package directory instead.
Test report failed: … and The service will keep retrying…The agent is installed but couldn't report yet. The reason follows "failed:": see An agent does not report.
Could not run the agent as an unprivileged user: …; running it as root for nowThe agent works, but the AI runs nothing on this server. Fix the reason shown (for example no useradd, or the helper didn't start: journalctl -u 3rmonitor-helper) and run sudo 3rmonitor agent secure.
Keys not pinned: …The fingerprints in the command don't match the master any more: a passkey was added or revoked after you copied it, or the master was reinstalled. Run sudo 3rmonitor approvers trust on the server and compare the fingerprints.
Nginx configuration test failed · Apache configuration test failedThe web server's configuration already had an error. Run nginx -t or apachectl -t, fix it, and run the installer again with --domain.
Nginx or Apache not found; skipping the reverse proxy--domain needs Nginx or Apache on this server. Install one, or open the panel at http://IP:8899/.
Could not install certbotOn AlmaLinux, Rocky and RHEL, certbot comes from EPEL: dnf install epel-release, then run the certbot command shown.
Could not get a certificateThe domain must point to this server, and port 80 must be reachable from the internet. Behind Cloudflare, set the record to "DNS only" while the certificate is issued.
Could not enable 3rmonitor-update.pathOne-click updates won't work. Look at systemctl status 3rmonitor-update.path and run sudo bash install.sh upgrade again.
This machine does not support the extra isolation for the master…Only information: the installer removed the master's systemd sandbox, and the master runs as before.

sudo says "command not found"

On AlmaLinux, Rocky, RHEL and CentOS, sudo only searches /usr/sbin and /usr/bin. Before 1.1.1 the 3rmonitor command was only in /usr/local/bin, so sudo 3rmonitor … answered "sudo: 3rmonitor: command not found". Since 1.1.1 the command is also linked in /usr/bin: upgrade, and servers get the link by themselves. Until then, either:

  • open a root shell with sudo -i and run the commands there without sudo, or
  • write the full path: sudo /usr/local/bin/3rmonitor status.

The command line

A command says "Error"

Most 3rmonitor commands need root. Without sudo some fail, and some give a misleading answer:

What you seeWhat to do
Failed to read the configuration …, permission denied, Run this as rootRun it with sudo. Master commands (user, server, mail-test, init) only work on the master.
approvers list says no keys are trusted, firewall status says there are no rulesWithout sudo they can't read them. Run them with sudo.
The password must be at least 8 characters · The username must not be empty, contain spaces or special characters… · The username already existsChoose a longer password, a simpler name, or sudo 3rmonitor user passwd NAME for an existing account.
Enter a recipientmail-test needs --to you@example.com, or Alert recipients in Settings.
Sending failed: …See Alert emails don't arrive.
Reporting too often (from agent --test)The running service had just reported. Run it again a second later. If it happens every time, another machine reports with the same token: see Two servers show the same data.

3rmonitor status doesn't list the helper: check it with systemctl status 3rmonitor-helper.

"approvers trust" doesn't trust the keys

What you seeWhat to do
No administrator passkey yet (add one in the panel…)Only the master's key was trusted. After you add the first passkey in Settings → Passkeys, run sudo 3rmonitor approvers trust again, on every server (also the master + agent).
The master's signing key does not match the fingerprint in the install command: nothing was trustedThe master was reinstalled, or the command comes from another master. Run sudo 3rmonitor approvers trust without fingerprints and compare them with Settings → Passkeys → Fingerprints to compare.
The administrator passkeys do not match the fingerprints in the install command: nothing was trustedA passkey was added or revoked after the command was copied. Copy it again, or run approvers trust without fingerprints.
Nothing was trustedThe answer wasn't exactly yes. Without a terminal, use --yes or the fingerprints.
This server is not enrolled yet · Cannot get the keys from the master: …The agent must be enrolled and reach the master first: see An agent does not report.

The panel

The panel doesn't open

  1. Is the master running? sudo systemctl status 3rmonitor-master. If it isn't, the log (journalctl -u 3rmonitor-master -n 50) says why, for example a port already in use or a certificate file it can't read.
  2. Is the port open? The installer opens it in ufw or firewalld, but cloud providers often have their own firewall (security groups) in front of the server. Open port 8899 (or your port) there too.
  3. Is it listening only on 127.0.0.1? If listen in /etc/3rmonitor/master.conf is 127.0.0.1:8899, the panel is only reachable through the reverse proxy (your domain), not by IP.
  4. Through a domain: check that Nginx or Apache is running, and that the domain's DNS points to the master.

A page says "This page could not be loaded"

The browser couldn't get the page's data from the master: the connection dropped, the master restarted (for example during an update), or a reverse proxy in between failed. The short message in the corner shows the error. Click Try again. If it keeps happening, check that the master is running and look at its log; behind Nginx or Apache, also look at the proxy's error log.

I forgot the password

On the master: sudo 3rmonitor user passwd USERNAME, then enter the new password. sudo 3rmonitor user list shows the usernames.

After more than 5 failed attempts for one user, or 10 from one IP, in 15 minutes, sign-in is locked: "Too many failed sign-in attempts. Try again in 15 minutes." Even the right password is refused meanwhile. Wait, or restart the master (sudo systemctl restart 3rmonitor-master), which clears the counter.

Behind a reverse proxy that isn't on the same machine, the local network or Cloudflare, every visitor seems to come from the proxy's IP, so a few failures lock everyone out. If the panel can only be reached through that proxy, set trust_proxy = true in master.conf (see Configuration files).

Other messages in the panel

What you seeWhat to do
Incorrect username or passwordReset it on the master: sudo 3rmonitor user passwd NAME
Please sign in firstThe session ended: after 7 days without use, after 30 days in any case, or after a password change. Sign in again.
The page has expired. Refresh it and try again.The page was opened before you signed in again. Reload it.
Cannot reach the master (network error)The browser lost the connection to the master. See The panel doesn't open.
The first account can only be created on the server itself…A master initialized without an administrator. Create one on the server: sudo 3rmonitor user add admin.
… must be a number, The panel address must start with http:// or https://, Invalid time zone…, Invalid email address: …A setting wasn't accepted, and the old value is kept. Correct the field the message names.
This share link is invalid, disabled or expiredCreate a new share link, or turn the old one on again.

Signing in sends me back to the sign-in page

This happened in versions before 1.0.4 when the panel URL was https:// but the page was opened over http:// (for example by IP). Upgrade to the latest version. Also check that the browser accepts cookies for the panel's address.

The browser says "Not secure"

The panel is served over http://. Set up HTTPS.

Agents and servers

An agent does not report

Run on the agent server:

sudo 3rmonitor agent --test

It reports once and shows the result. Then:

What you seeWhat to do
Invalid token, or this server has been deletedThe token was regenerated or the server was deleted in the panel. Copy the command from Servers → ⋯ → Install command → Agent already installed? Just re-enroll it as this server, or register the server again. In the agent log: "The master rejected the token (HTTP 401)…".
Timeout, connection refused, DNS errorThe server can't reach the master. Test with curl -I MASTER_URL. Check master_url in /etc/3rmonitor/agent.conf, the master's firewall (and the provider's), and that the master isn't listening only on 127.0.0.1.
Certificate error (x509: certificate signed by unknown authority)The master uses a self-signed or Cloudflare Origin certificate. Use a trusted certificate, the address that goes through Cloudflare, or set insecure = true in agent.conf and restart the agent.
Unrecognized response from the master (HTTP …)The address answers, but it isn't the master: a wrong URL or port, an error page of the reverse proxy (502, 504), or a firewall / Cloudflare challenge. HTTP 405 usually means master_url is http:// and the site redirects to https://: write the https:// address. Let /api/agent/ through your WAF.
"The master rejected the token (HTTP 403)" with a web page as the reasonA WAF or Cloudflare blocked the agent before it reached the master. Allow the agents' IPs, or /api/agent/.
Reporting too oftenTwo reports with the same token less than a second apart. Run agent --test again; if it keeps happening, see Two servers show the same data.
master_url (the master's address) is missing in the config · Invalid master_urlEnroll it again: sudo 3rmonitor bind --master 'https://monitor.example.com' --token 'TOKEN'
The master refused the enrollment: Invalid enrollment key…The enrollment key was changed or disabled. Copy the current command from Servers → Enroll many servers with one command.
The test works, but the panel still shows the server offlineCheck that the service is running: sudo systemctl status 3rmonitor-agent, and restart it with sudo systemctl restart 3rmonitor-agent.

In the agent log (journalctl -u 3rmonitor-agent), "Report failed (attempt N): …" gives the reason; it is written on the 1st failure and then every 20th. "connection refused" means nothing listens at that address and port, or a firewall rejects it; "i/o timeout" or "Client.Timeout exceeded", that a firewall silently drops the connection. "Connection to the master restored" shows it works again.

To see what the agent collects without sending anything: sudo 3rmonitor agent --print.

All servers show as offline at once

If 3 or more servers stop reporting at the same moment, you get one alert, "All N servers stopped reporting at the same time". The servers are almost certainly fine: the master isn't receiving reports. Check the master's network, its firewall (and the provider's), its reverse proxy and its certificate, and whether the panel address or DNS record changed.

Two servers show the same data

The panel shows one server whose data jumps between two machines, or "Reporting too often" in the log: two machines use the same token. That happens when a server is cloned (a VM template or snapshot) with /etc/3rmonitor/agent.conf. Register the copy as a server of its own (Servers → + Add server), and on the copy run the bind command it gives you:

sudo 3rmonitor bind --master 'https://monitor.example.com' --token 'NEW_TOKEN'

To make templates, uninstall the agent first, or install it with the enrollment key when each machine starts (for example with cloud-init).

The server page says "The 3R Monitor helper is not running"

The agent runs as an unprivileged user and does what needs root through 3rmonitor-helper. Without it, the agent keeps monitoring, but the AI, the blocklist and some data (processes behind ports, MySQL status) don't work there.

sudo systemctl restart 3rmonitor-helper
journalctl -u 3rmonitor-helper -n 50

If it doesn't start, or the page says "The agent still runs as root…" or "Could not switch the agent to an unprivileged user: …", run sudo 3rmonitor agent secure and read what it answers: for example "neither useradd nor adduser is available" (install the passwd or shadow-utils package), or "the helper did not start (…)". It needs systemd.

An agent stays on an old version

Agents update themselves to the master's version. If one doesn't:

  • it can't reach the master (see An agent does not report);
  • auto_update = false is set in its agent.conf;
  • since 1.1.1, agents only install programs signed by 3R Soft. If System → Agent packages shows Not signed, the master wasn't installed or upgraded from the official release package: run sudo bash install.sh upgrade from the official package. The agent log then says "Automatic update failed: the master has no signature for the agent packages…" or "…are not signed for …".

You can also upgrade an agent by hand with the release package: sudo bash install.sh upgrade in its directory.

The traffic usage looks wrong

  • It starts on a recent day: counting began when the master was upgraded to 1.1.1 ("Counted since …").
  • "The agent does not report … separately": you chose one interface in Servers → Settings → Traffic usage, but the agent is older than 1.1.1, or that interface no longer exists, so all interfaces are counted. Wait for the agent to update, or choose another interface.
  • It differs from your provider's figure: see Traffic usage. Count only the interface your provider bills, choose how the quota counts (download, upload, both or the larger), and remember that 1 GB here is 1024³ bytes.
  • A day is missing: the agent didn't report that day (the server or the agent was stopped). The traffic of that time is counted on the day it reports again, unless the server was restarted in between.

A server is in the wrong place on the map

Set its position in Servers → Settings → Map location. The master's own position is in Settings → Map. See Server positions.

MySQL / MariaDB shows "Cannot log in to the database"

The agent can't sign in to read the database status. See MySQL credentials for the agent. Also:

  • "mysql client not found; cannot read the server status": install the mysql or mariadb client on that server.
  • On Debian and Ubuntu, /etc/mysql/debian.cnf is only used while the helper is running: see the helper is not running.
  • "Redis requires a password; its status was not read": only information, Redis itself is still monitored as a service.

A service alert I don't understand

What you seeWhat to do
Enabled at boot, but the current state is …A systemd service is set to start at boot but isn't running. Start it (sudo systemctl start NAME), turn it off at boot if you don't need it (sudo systemctl disable NAME), or add it to Ignored services in the server's settings.
Service not found on the systemA service in Required services doesn't exist on that server. Check the name (systemctl list-units --type=service), or remove it.
The agent does not report this service…A required service you just added: wait a few reports. If it stays, check the name.

Alerts and emails

Alert emails don't arrive

  1. Open System → Recent emails: each email shows whether it was sent, is being retried or was given up, and the error.
  2. Send a test: Settings → Outgoing mail (SMTP) → Send a test email, or sudo 3rmonitor mail-test --to you@example.com on the master.
  3. Common causes:
    • Gmail needs an app password, not the normal password.
    • Many cloud providers block outbound port 25. Use 465 (SSL) or 587 (STARTTLS).
    • The Encryption doesn't match the port: SSL with 465, STARTTLS with 587.
    • The server has Enable alerts turned off in its settings, or that kind of alert is turned off in Settings → Alert notifications → Send emails about.
    • The email went to the spam folder. Set a From address on a domain the SMTP server is allowed to send for.
    • System shows Alert recipients: Not set: without recipients nothing is sent, and only the master log says so.

The error of a failed email, in the test or in System → Recent emails:

What you seeWhat to do
SMTP server not configured · Sender address not configuredFill in Settings → Outgoing mail (SMTP): the server, and a Username or From address.
Failed to connect to …: … i/o timeoutThe provider blocks that port, or the server name or port is wrong. Try 587 or 465; many cloud providers block 25.
tls: first record does not look like a TLS handshakeSSL (465) is chosen on a STARTTLS port. Use STARTTLS (587).
SMTP handshake failed: … (after a long wait)STARTTLS or None on port 465. Use SSL (465).
x509: certificate is valid for …, not …Write the SMTP server's name exactly as in its certificate, for example smtp.gmail.com, not an IP or an alias.
The server does not support STARTTLS · The server does not support AUTH authenticationChoose the encryption the provider says. Many servers only accept a password after encryption: use SSL or STARTTLS, not None.
SMTP authentication failed: 535 …Wrong username or password. Gmail and Microsoft 365 need an app password or SMTP authentication turned on for the mailbox.
Sender rejected: …The account may not send as that From address. Use the account's own address.
Recipient … rejected: …The SMTP server refuses that recipient: check the address, or the provider's sending limits.

Failed emails are retried up to 12 times, waiting longer each time (about 6 hours in all), then marked Gave up.

Alert emails arrive late

That is usually on purpose:

  • Alerts are combined: the first one is sent after 1 minute, then at most one email every 5 minutes. Set Settings → Alert notifications → Combine alert emails (minutes) to 0 to send each alert right away.
  • With AI analysis, an email about a new outage waits up to about two more minutes for the likely cause.
  • Above At most this many emails per hour (10 by default), emails wait in the outbox. System shows how many are queued.

The AI found something but didn't email me

The AI only emails what needs you, and at most AI → Settings → AI emails → Emails per day (5 by default). Each investigation shows on its timeline whether it emailed, and why not:

ShownMeaning
"No e-mail: the AI judged that the administrator does not need to be told now"It recovered, was a false alarm, or nobody can act on it yet. The result is in the panel.
"Not e-mailed: today's N AI e-mails are used up"Raise Emails per day, or check AI → On-call more often
"Not e-mailed: AI e-mails are turned off"Emails per day is 0

Tasks you give the AI are never emailed. System alerts (servers, services, monitors, certificates, disks, traffic quotas) don't depend on this. See Emails from the AI.

Monitors

A monitor says "down" but the site works

The check runs from the master, so what matters is what the master sees. Try from the master itself:

curl -sv -o /dev/null https://example.com/health
  • HTTP 403, possibly blocked by a Cloudflare challenge: allow the master's IP in Cloudflare or in your WAF.
  • HTTP 301/302 when you expected 200: redirects are followed by default; if you ticked Do not follow redirects, add the code to Expected status code (for example 200,301).
  • "… was not found on the page": the keyword is case-sensitive, and only the first 2 MB of the response are read.
  • Timed out: raise Timeout (s) if the endpoint is slow, or check that the master can reach it (firewall, IPv6, DNS).
  • Certificate error: the certificate is expired or incomplete. For a self-signed certificate, tick Do not verify the certificate.

Click Test in the monitor's form to see the exact message. What the messages mean:

What you seeWhat it means
HTTP 503 (expected 200-399)The site answered with another status code. Change Expected status code if that code is normal for this URL.
Timed out (no response within N s)No answer within the timeout (10 s by default)
DNS lookup failed: …The master can't resolve the name. Check the domain, and the master's DNS (resolvectl status or /etc/resolv.conf).
Connection refused (port not listening or blocked by a firewall)Nothing listens on that port, or a firewall rejects the master
Network unreachableThe master has no route there; often an IPv6 address on a master without IPv6
Certificate error: …The certificate is expired, for another name, or its chain is incomplete
Too many redirectsMore than 10 redirects, often an http ↔ https loop
HTTP 200, but the response is not valid JSON · … not found in the JSON · … = … (expected …)The JSON check failed: check the field path and the expected value
Slow response: N ms (threshold N ms)Only a warning: slower than the slow-response threshold
Failed 1/3, confirmingOne check failed; it is retried before the monitor counts as down

A Ping monitor is always down

Ping uses ICMP, which many networks and cloud providers block. If ICMP is blocked between the master and the host, use a TCP port monitor instead (for example host:22 or host:443). The master also needs the ping command; it reports "The ping command is not available on this system" if it's missing.

Each check sends one packet, and any failure of ping is shown as "No response (packet loss)", also when the master isn't allowed to send ICMP. Test from the master with ping -c 1 HOST.

Traffic and the blocklist

There are no traffic statistics

  • The agent reads Apache and Nginx access logs in the usual locations. If yours are elsewhere, set access_logs in /etc/3rmonitor/agent.conf (for example access_logs = /data/logs/*.access.log) and restart the agent.
  • Since 1.1.0 the agent runs as the unprivileged user 3rmonitor-agent, and the installer gives it read access to the logs with setfacl. If the acl package was missing, the agent log says "The agent (user 3rmonitor-agent) cannot read the access logs in …": install acl and run sudo 3rmonitor agent secure again. Do the same after setting access_logs to a new location.
  • access_logs replaces the usual locations, it doesn't add to them: list every location you need.
  • Rotated and compressed logs (access.log.1, access_log-20261020, .gz) and error logs are skipped on purpose.
  • access_logs = off turns the statistics off.
  • Countries need the IP-to-country database. The System page shows whether it is loaded and when it was last updated.
  • Behind Cloudflare, all requests come from Cloudflare until the origin restores the real IP. See Cloudflare tips.

The blocklist doesn't block

What you seeWhat to do
"No server has “Firewall blocking” turned on yet: rules are saved but not enforced"Turn blocking on for each server: Servers → Settings → Enforce the blocklist / allowlist with the firewall on this server.
Neither nftables (nft) nor ipset + iptables was found…Install one, for example apt install nftables or dnf install nftables.
Disabled on this server with 3rmonitor firewall offTurn it back on with sudo 3rmonitor firewall on.
The helper isn't runningSee the helper is not running.
exit status 1: … from nftnftables doesn't work on this server, for example in some containers (LXC) whose kernel doesn't allow it. Block at your provider's firewall, or at Cloudflare, for that server.
The site is behind CloudflareThe server only sees Cloudflare's IPs: block at Cloudflare. See Cloudflare tips.

When you add a rule, the panel refuses what would do harm:

What you seeWhy
Private, local and multicast addresses cannot be blockedThey are your own networks
The range is too large (at least /8 for IPv4, /16 for IPv6)…Use a country rule to block a whole country
This is a Cloudflare range…Blocking it would block every visitor that comes through Cloudflare
This would block your own current IP (…) · Your current IP is in this country…So you don't lock yourself out
… must never be blocked: …The address is allowlisted, protected in the settings, one of your servers, the master, or an administrator signed in from it

I locked myself out with the blocklist

From the server's console (your provider's web console, if SSH is blocked):

sudo 3rmonitor firewall off

The blocking rules are removed immediately. Fix the rules in Traffic → Blocklist / allowlist, then run sudo 3rmonitor firewall on. To avoid it in the future, set Blocklist only blocks these ports to 80,443.

Since 1.1.1, country rules and ranges larger than /24 never block the SSH port, so only a rule for your own IP or a small range around it can still lock you out of SSH.

A blocked country can still connect with SSH

That is on purpose since 1.1.1: country rules and large ranges block every port except SSH, so that you can always get back in. To block SSH for an attacker, block the single IP or a small range (/24 or smaller). See So you don't lock yourself out.

Vulnerabilities

A server shows no vulnerabilities, or isn't checked

The Security page says why at the top:

What you seeWhat to do
Vulnerability checks are turned offTurn them on in Settings → Vulnerability checks
"No software inventory received yet: …"The agent uploads its software list a few minutes after it comes online. Wait, or click Scan now.
"These servers run an agent version that is too old to upload a software inventory…"Upgrade the master; agents update themselves
"Checking system packages against distribution security advisories is not supported yet for the OS of these servers…"System packages are only checked on Debian, Ubuntu, AlmaLinux, Rocky Linux and Alpine (not RHEL, CentOS, Oracle Linux, Amazon Linux, Fedora, SUSE or Debian testing). The main services and the project dependencies are still checked.
"No agent is installed on the master itself, so the master server is not checked"Install the agent on the master too (master + agent)
"No composer.lock / package-lock.json / yarn.lock found"Add the project's directory in Servers → Settings → Project directories. The agent reads them as the unprivileged user 3rmonitor-agent, so the files must be readable for it.

Data sources and how matching works shows when each source was last updated. "Failed: …" there means the master can't reach it: it needs outbound HTTPS to api.osv.dev, services.nvd.nist.gov, www.cisa.gov, endoflife.date, cveawg.mitre.org, raw.githubusercontent.com and github.com. "NVD: HTTP 403" or "429" means NVD is limiting requests: add a free NVD API key in Settings → Vulnerability checks.

A vulnerability I fixed is still listed

  • The agent uploads a new software list when software changes, and everything is checked again every 6 hours. Click Scan now on the Security page to check right away.
  • Upgrade the packages under "installed as …", not the source package name in the title: for example perl-base, not perl.
  • "Nothing was upgraded: no newer version is available from the configured package sources…": the distribution hasn't published the fix yet, or the server's package sources are out of date. Tick Hide those with no fixed version yet to hide such vulnerabilities, or Ignore this one with a reason.
  • If the service must be restarted to use the new version, the old one may still be running: restart it.

The AI

The AI doesn't run anything on a server

AI → On-call → Servers where the AI can do less, and the Agent row in the server's System tab, say why. In order:

CauseWhat to do
What the AI may do on servers is Off (for example after Stop all AI operations)Choose another level in AI → Settings
The server is excluded: Never let the AI run anything on this serverUntick it in Servers → Settings
Root turned it off on the serversudo 3rmonitor ai status; sudo 3rmonitor ai on turns it back on
The agent still runs as root, or its helper isn't runningRun sudo 3rmonitor agent secure on the server, and check journalctl -u 3rmonitor-helper -n 50. It needs systemd.
The agent is older than 1.1.0Upgrade the master; agents update themselves
Only diagnostics run, never repairsThe server doesn't trust the keys yet: run sudo 3rmonitor approvers trust on it. See Passkeys.
"No sandbox on this server"The sandbox needs systemd 236 or newer and D-Bus. Only the fixed checks run there.

The model test fails, or reports fail

The error appears in the Test message, on the report ("The report failed: …"), or in an investigation ("The model failed: …"):

What you seeWhat to do
The model API returned HTTP 401: … or 403The API key is wrong, expired or blocked, or your account can't use that model. Paste the key again, and check it at the provider.
The model API returned HTTP 404: …The API address or the Model name is wrong. For OpenAI-compatible APIs the address usually ends in /v1 (for example https://api.openai.com/v1): choose the Provider again to fill it in, and use Get the list for the model name.
The model API returned HTTP 429: …Too many requests, or the account has no credit left. Check the balance at the provider; requests are retried twice by themselves.
The model API returned HTTP 400: … with "context" or "length"Too much text for this model. Use a model with a larger context, or a shorter task.
The model API returned something that is not JSON: …The address leads to a web page or a proxy, not to the API
Cannot reach the model API: …The master can't connect: DNS, firewall, or a timeout. Test with curl -I API_ADDRESS on the master. For Ollama, it must run on the master itself, at http://127.0.0.1:11434/v1.
The model returned an empty answerTry again, or another model. Reasoning models sometimes need a higher Longest answer (tokens).
Today's AI token limit (N) has been reached; AI analysis resumes tomorrowRaise Daily token limit in AI → Settings, or wait until midnight (panel time zone).
Turn on AI analysis and add a model firstAdd a model in AI → Settings → + Add model

An investigation stopped, or the AI only suggests repairs

What you seeMeaning
AI operations are limited to read-only diagnosticsWhat the AI may do on servers is Diagnostics only (the default): repairs are only suggested. Choose Repairs need my approval or Low-risk repairs run automatically in AI → Settings.
The reviewer could not be reached, so a person has to decideThe safety reviewer's model failed or the token limit was reached. The operation waits for you.
Already done 3 times in the last hour · The daily limit of automatic repairs (N) has been reachedThe panel's limits on automatic repairs: the operation waits for your approval instead.
Stopped before finishing (time limit reached or stopped from the panel). · Stopped: the step or token limit for one run was reached before finishing.The investigation used all its time, steps or tokens. Give it a narrower task.
Stopped: too many operations were refused in this run.The reviewer or the rules refused 3 operations, or you rejected 6. Look at what the AI tried.
The model failed (…); switched to …The model failed once, and the default model took over
"The agent did not answer in time"The server didn't run the operation within 10 minutes: it isn't reporting, or its helper isn't running

When the server itself refuses an operation, the operation shows why:

What you seeMeaning
AI operations are turned off on this server (3rmonitor ai off) · Only read-only diagnostics are allowed on this server (3rmonitor ai read)Root limited it on the server. sudo 3rmonitor ai on allows repairs again.
The operation is not signed by the master this server trusts…The master was reinstalled or moved without its backup (a new signing key). Run sudo 3rmonitor approvers trust on the server.
This server has not pinned the master key and the administrators' passkeys yet…Run sudo 3rmonitor approvers trust on the server
The approval was signed with a passkey this server does not trustThe server hasn't trusted that passkey yet: run sudo 3rmonitor approvers trust on it
The approval has expired · This approval was already used…An approval works once, within an hour. Approve it again if it is still needed.
High risk: only the administrator can run this (…) · Refused by the agent: …The server's own rules don't allow it. Run it yourself if you agree.
Nothing was upgraded: no newer version is available…See A vulnerability I fixed is still listed

A repair was refused with "Limit on this server"

Since 1.1.1 each server limits the repairs approved only by the reviewer AI, by itself:

  • "Limit on this server: this repair already ran 3 times in the last hour": the same repair keeps coming back, so the cause is elsewhere. Look at the investigation, and fix the cause yourself.
  • "Limit on this server: N automatic repairs in the last 24 hours (ai_auto_per_day in agent.conf)": raise ai_auto_per_day in that server's agent.conf if you really want more, or approve the repair yourself: repairs you approve aren't limited this way.

"This conversation is closed"

A task's conversation can be continued for 24 hours after the AI's last answer. The message says why it closed (it was stopped, a limit was reached, the model failed…): give the AI a new task instead. See Continue a task.

Passkeys

I can't add a passkey, or an approval fails

  • Passkeys need the panel on HTTPS (or localhost): the + Add passkey button is disabled on an http:// panel. Open the panel at its https:// address. See HTTPS.
  • "This browser does not support passkeys" or "cannot register passkeys": use a current Chrome, Edge, Safari or Firefox.
  • "The passkey request was cancelled or timed out": try again and confirm within two minutes.
  • A passkey only works at the host name it was created on. Open the panel at the same address.
  • A new passkey stays Waiting for a signature until an administrator with a trusted passkey confirms it.
  • "The approval was signed with a passkey this server does not trust": run sudo 3rmonitor approvers trust on that server.
  • An approval is valid for one hour. After that the operation is marked Expired.
  • "Approvals are signed with a passkey. Add one in Settings → Passkeys first": you have no passkey yet.
  • "Sign the approval with your passkey (the request expired or the operation changed); try again": the request is valid for 5 minutes.
  • "Sign with one of your own trusted passkeys": the passkey you used is still Waiting for a signature, or belongs to someone else.
  • "The browser's answer does not match the request": the panel was opened at another address than its own. Use the panel's public address.
  • "This passkey is already registered": that device already has a passkey for this panel.
  • Settings → Passkeys shows "Not trusted yet: on the server run sudo 3rmonitor approvers trust…" after your first passkey: every server must trust it once, also servers installed before you had a passkey.
  • If every passkey is lost, see Passkeys.

A server stays on "getting the newest record…"

Since 1.1.1 servers pick up a new passkey record within seconds, and Settings → Passkeys refreshes by itself meanwhile. If a server stays there, its agent can't reach the master, or its helper isn't running: check systemctl status 3rmonitor-helper and journalctl -u 3rmonitor-helper -n 50 on that server.

Updates

The update was downloaded but not installed

Since 1.1.1, nothing is installed until you confirm. System → Software updates says "x.y.z is downloaded and its signature checked. It is installed only after you confirm.": click Install now… or Install. "This version has not been downloaded yet; download it first" means the download is missing or a newer version was published: click Update now again.

An update from the panel failed

The System → Software updates card shows the error and the installer output. You can always upgrade by hand with sudo bash install.sh upgrade from the new package.

What you seeWhat to do
Could not reach the update server: … · The update server answered HTTP …The master can't reach 3rsoft.com.pa over HTTPS. Check its outbound connection, or upgrade by hand.
One-click updates need the updater service…Installations older than 1.0.4, or installed by hand without 3rmonitor-update.path: upgrade by hand once.
The updater did not start. Check: systemctl status 3rmonitor-update.pathStart it: sudo systemctl enable --now 3rmonitor-update.path, then try the update again.
Download failed: … · The downloaded package does not match its signed checksumThe download was interrupted or changed on the way. Click Update now again.
An update is already in progressWait for it to finish; the card shows its progress
install.sh upgrade failed: …Installer output shows the reason. Fix it and upgrade by hand.
… is not newer than the installed version …That version is already installed
One-click updates are only available on Linux.Upgrade by hand

The master doesn't start after an upgrade

Since 1.1.1, install.sh runs the master in a stricter systemd sandbox. On the few systems that don't support it (some LXC containers), the installer removes it by itself and says "This machine does not support the extra isolation for the master…". If the master still doesn't start, look at journalctl -u 3rmonitor-master -n 50, and remove the sandbox by hand:

sudo rm -r /etc/systemd/system/3rmonitor-master.service.d
sudo systemctl daemon-reload && sudo systemctl restart 3rmonitor-master

Getting help

If this page and the FAQ don't solve it:

  1. Upgrade to the latest version (System → Software updates): the problem may already be fixed.
  2. Email info@3rsoft.com.pa. In the panel, System → Help and support → Problems or bugs opens an email with your version in the subject.

To get an answer on the first email, include:

  • what you did, what you expected, and what happened instead, with the exact message or a screenshot;

  • the output of these commands on the server concerned (the master, or the agent server):

    3rmonitor version
    3rmonitor status
    cat /etc/os-release
    journalctl -u 3rmonitor-master -n 100 --no-pager   # on the master
    journalctl -u 3rmonitor-agent -n 100 --no-pager    # on an agent server
    journalctl -u 3rmonitor-helper -n 100 --no-pager   # on an agent server
    sudo 3rmonitor agent --test                        # on an agent server
  • for an installation problem, the complete output of the installer.

Don't send agent.conf, master.conf, tokens, enrollment keys, passwords or API keys: nobody at 3R Soft needs them. Replace them with … if they appear in what you copy.

Report security problems privately to security@3rsoft.com.pa, not by the normal address. See Reporting a security problem.

On this page

First checksInstallingThe install command failssudo says "command not found"The command lineA command says "Error""approvers trust" doesn't trust the keysThe panelThe panel doesn't openA page says "This page could not be loaded"I forgot the passwordOther messages in the panelSigning in sends me back to the sign-in pageThe browser says "Not secure"Agents and serversAn agent does not reportAll servers show as offline at onceTwo servers show the same dataThe server page says "The 3R Monitor helper is not running"An agent stays on an old versionThe traffic usage looks wrongA server is in the wrong place on the mapMySQL / MariaDB shows "Cannot log in to the database"A service alert I don't understandAlerts and emailsAlert emails don't arriveAlert emails arrive lateThe AI found something but didn't email meMonitorsA monitor says "down" but the site worksA Ping monitor is always downTraffic and the blocklistThere are no traffic statisticsThe blocklist doesn't blockI locked myself out with the blocklistA blocked country can still connect with SSHVulnerabilitiesA server shows no vulnerabilities, or isn't checkedA vulnerability I fixed is still listedThe AIThe AI doesn't run anything on a serverThe model test fails, or reports failAn investigation stopped, or the AI only suggests repairsA repair was refused with "Limit on this server""This conversation is closed"PasskeysI can't add a passkey, or an approval failsA server stays on "getting the newest record…"UpdatesThe update was downloaded but not installedAn update from the panel failedThe master doesn't start after an upgradeGetting help