Docs · Log signals

Log signals

A security control that fails loudly gets fixed the same day. The ones worth watching are the controls that keep reporting themselves as running while doing nothing — a brute-force blocker whose log format changed underneath it, a signature updater that stopped reaching its mirrors, a scanner whose cron entry went missing during a migration. All of it is already written down, in logs on the host that nobody opens. Log signals is the agent reading those logs on every fire and shipping counts and control facts — never the lines themselves — so the platform can tell you when something that should be moving has stopped.

Where this came from

Assembling evidence for an audit

We built this while producing auditor evidence for a customer. Every gap we had to explain turned out to be the same kind of thing: a control that had silently stopped, visible only in a log nobody read. A brute-force blocker that had blocked nothing for 47 days. Malware signatures months out of date. A malware monitor in a failed state. Log rotation that had stopped running. Alerts delivering, on schedule, into root's unread mailbox. None of it was a missing tool; all of it was a tool that had quietly stopped.

What it reads

The Linux agent you already have installed does this work on its normal 30-second fire — there is nothing new to install. On each fire it reads, read-only and as root:

Alongside the counters it collects a small set of control facts: systemd unit states for each watched security control, the ClamAV database date, the maldet signature date, the size and rotation age of each tailed file, and when the agent last completed a full scan.

What never leaves the host

Log lines. What the agent uploads is hourly counters — how many SSH failures, how many blocks, how many bans, how many drops, in each hour — and the control facts above. The platform evaluates ten rules against those counters every 15 minutes and opens findings in the existing category, so they arrive in the same inbox, with the same severities, routed to the same per-server alert recipients as everything else. A finding auto-resolves when the condition that opened it clears.

This is deliberately not log management. We do not ship your logs, we do not index them, and you cannot search them here. If you need to read the line, you read it on the host — Astrari's job is to tell you which host and which hour.

The nine checks

Where you see it, and how to tune it

The dashboard is the primary surface. Each server has a Signals tab showing its hourly counters, the state of each watched control, and any findings the rules have opened.

Every threshold quoted above is a default, not a constant. From Settings → Log signals you can set them for the whole organisation:

Log signals is included on every plan, at no extra cost.

If you already run Grafana

The counters are also exposed in Prometheus text format, so you can put them on a board you already look at. Authenticate with an organisation API key (Professional and Agency plans) as a bearer token:

curl -s https://api.astrari.io/metrics \
  -H "Authorization: Bearer iw_live_…"

The endpoint returns, per server, the hourly line and event counts, the state of each watched systemd unit, ClamAV and maldet signature ages, and root's mailbox size. Scrape it like any other target. The dashboard remains the primary surface — the findings, the severities and the alert routing all live there, and /metrics is for the numbers underneath them.

Privacy and retention

See the privacy policy for how this sits within the rest of the data we process.