What should Prometheus alerts about a disk filling up include for an AI SRE?
Tares works best when a Prometheus disk alert carries a service label, a severity label and a summary. Tares turns each alert into one event with the alert name as its type, the summary as its text and the labels as Tares labels, plus a state of firing, pending or resolved. That puts the alert on the service’s timeline next to its metrics and logs, so the agent can tie it to evidence.
How it works
The prometheus_alerts connector polls the alerts endpoint of your Prometheus server every 30 seconds by default. Prometheus decides what counts as an alert. Tares ingests what the rule fired, correlates it and can dispatch it to an agent. Alertmanager is not required.
Each active alert becomes one event:
event_typeis the alert name, so a clear rule name tells the agent what kind of problem it is looking at.textis the alert summary, so a short summary that names the disk or mount gives the agent a readable line.- The alert labels become Tares labels, plus a synthetic
state.
Tares tracks state across polls. A disk alert fires once, re-emits only when its state changes, and produces a resolved event when it clears. The agent sees when the problem appeared and when it ended, not a copy of the alert on every tick.
The label that matters most is service. When your sources share a service label, Tares builds one timeline per service. A disk alert that carries the service name lands on the same timeline as that service’s metrics and logs. The AI SRE guide builds this setup end to end.
Set it up
- In the Prometheus alerting rule for the disk, set a
severitylabel, aservicelabel with the name of the service that owns the disk, and a summary annotation that says what is filling up. Keep the alert name specific. - Install and start Tares if you have not yet. The install is
uv tool install taresorbrew install glassflow/tap/tares, then:
tares up- In the console, open Sources → Add source → Prometheus alerts. Enter the Prometheus
urland any auth, then click Discover. It lists your alerting rules and the severities present. - Optionally filter by severity, for example
critical,warning, or leave it blank for all. Turn on include pending if you want alerts that are still waiting out theirfor:duration. The source looks like this:
- name: alerts
connector: prometheus_alerts
poll: 30s
config:
url: http://localhost:9090
severities: critical,warning # blank = all
labels:
- { name: severity, field: labels.severity, primary: true }
- { name: state, field: state }- Discover proposes only the labels that are always present,
severityandstate. An alert’s own labels, such asserviceandnamespace, exist only while it is firing. Once the disk alert has fired and been ingested, open the Fields tab of the source and addserviceas a label. - Check the result. Recent events shows one event per active alert and a
resolvedevent as each clears. Fields shows the labels your alerts carry.
You can also ask a connected agent: use Tares to ingest the firing alerts from the Prometheus at localhost:9090. The agent runs discovery and creates the source for you.
What you get
- A disk alert that sits on the right service’s timeline, merged with its metrics and logs on one clock.
- An event whose type is the alert name and whose text is your summary, so the agent reads a plain description of the problem.
- A severity label you can filter on, both at the source and in triggers.
- A
stateon every event, so the agent can tell a firing disk alert from a resolved one. - One event when the alert first fires and one when it resolves, instead of a repeat on every poll.
The alert can then wake an agent through a trigger, and the agent starts from the correlated timeline instead of from the bare alert. The full connector reference is on the Prometheus alerts page.
When something else fits
- If your alerts already route through Alertmanager and you prefer to keep that path, the
alertmanagerconnector receives them at a Tares ingest URL instead. - If you want the raw disk usage numbers on the timeline, not only the alert, add the
prometheusconnector for those metrics alongside this source.