FAQ
Short answers to common questions, each with a link to the page that has the detail. Every answer describes what the code does today.
Is it ready to use?
Section titled “Is it ready to use?”All four milestones of the design are built and covered by automated tests. Nothing has been released: there is no version to install, no published image and no binary download. No connector has been sent to the live service it talks to, and no source adapter has received from the live tool; their formats are written from each service’s documentation and pinned by tests. Verified claims lists what was checked and how. Decide with that in mind.
How is it different from Alertmanager?
Section titled “How is it different from Alertmanager?”This describes ramzes’s side only.
- ramzes takes any event from any service: a failed order, a finished build, a new sign-up, as well as alerts. A sender posts JSON with a topic and a title; it does not need to be a monitoring system.
- It can sit behind Alertmanager. Alertmanager’s webhook is one of the built-in source kinds, so alerts can arrive in ramzes next to everything else. See Alertmanager.
- It stores every event it accepts and shows what happened to each one: the routes it matched, what noise control did, each delivery attempt and the service’s answer.
- Routes, templates and connections are edited in a web UI or through an API, with a history of changes and rollback. Routing is not kept in a configuration file.
- It has acknowledgement and escalation chains built in.
- It runs as one instance and does not cluster.
Does it need a database server?
Section titled “Does it need a database server?”No. By default ramzes keeps everything in a SQLite file in its data directory, and SQLite is
compiled into the binary. You can point it at a Postgres database instead with
RAMZES_DATABASE_URL. See the Configuration reference.
Can I run several instances?
Section titled “Can I run several instances?”No. ramzes runs as one instance and does not coordinate several. Dedup, grouping, holds and acknowledgements are decided under a lock inside one process, so two instances on the same database would each decide on their own. The Helm chart fixes the replica count at 1. See Helm and Kubernetes.
What happens when ramzes is down?
Section titled “What happens when ramzes is down?”- Senders get connection errors. ramzes cannot accept events while it is not running, and
nothing queues them on its behalf. A sender that must not lose events has to retry. Sending an
Idempotency-Keyheader makes a retry safe: the same key from the same source stores nothing twice. - Accepted events are safe. ramzes answers
202only after the events are written to the database. Events accepted before it stopped are routed and delivered after it starts. - Deliveries resume. Deliveries that were waiting or being retried continue. One that was in flight when ramzes stopped may be sent again, so a message can arrive twice.
- Timers fire late. A group that was collecting, a held digest or an escalation step that became due during the outage is handled after the start.
- Long outages end waiting deliveries. A delivery is given up on 24 hours after it was queued.
See Upgrading.
Does it guarantee delivery?
Section titled “Does it guarantee delivery?”It guarantees an attempt and a record. A delivery is tried up to 8 times over at most 24 hours.
If the service keeps failing or rejects the message, the delivery ends as failed, appears under
Failures with the reason, raises an event on the topic ramzes.delivery.failed, and can be
sent again by hand. Delivery is at-least-once, not exactly-once. See
Delivery and retries.
What happens to an event no route matches?
Section titled “What happens to an event no route matches?”It is stored and shown in the feed with the outcome “no route”. Nothing is sent. After you add or widen a route, you can run the event through the routes again from its page.
Can I send events from the browser?
Section titled “Can I send events from the browser?”Not directly, and you should not. ramzes sends no CORS headers, so a page on another origin cannot
call /v1/events with an Authorization header. More importantly, a source key embedded in a web
page is readable by everyone who loads the page, and anyone holding it can send events as that
source. Send from your backend.
Is there a hosted version?
Section titled “Is there a hosted version?”No. ramzes is self-hosted only, and today that means building it from a checkout. See the Quickstart.
Which channels can it send to?
Section titled “Which channels can it send to?”Slack (an incoming webhook, or your own Slack app), Microsoft Teams, Discord, email over SMTP, ntfy, Telegram, Pushover, PagerDuty, Opsgenie, and a webhook to any URL. A channel that is one HTTP request can be added as a YAML definition in the UI. None of them has been run against the live service. See Channels.
What can send to it?
Section titled “What can send to it?”Anything that can make an HTTP request. Your own services post events in ramzes’s format. Webhooks from Alertmanager, Grafana, GitHub, GitLab and Sentry are understood as they are. For any other tool that posts JSON, you write a mapping from its payload to an event. See The events API and Any JSON webhook.
Can users have different permissions?
Section titled “Can users have different permissions?”No. Every user who can sign in, and every API token, can read and change everything. There are no roles, no single sign-on and no audit log. See Security.
Where are my Slack and SMTP credentials kept?
Section titled “Where are my Slack and SMTP credentials kept?”In the database, encrypted with the instance’s secret key. The API never returns them, and an export does not contain them. If the secret key is lost, they cannot be recovered and have to be entered again. See Security.
Can I keep the configuration in version control?
Section titled “Can I keep the configuration in version control?”Yes. ramzes export writes routes, templates, connector definitions, connections without
credentials, source names and mappings, and settings as one YAML file. ramzes import applies such
a file. An import replaces the configuration; it does not merge. See
Backup, export and import.
How much traffic can it handle?
Section titled “How much traffic can it handle?”There are no benchmarks, so there is no number to give. The fixed limits are known: a source may send 6000 events per minute, a request may carry 1000 events in 1 MiB, and ramzes sends at most 16 deliveries at the same time, 4 per connection. See Limits.
How long are events kept?
Section titled “How long are events kept?”30 days by default. You can change that, set a different period for single topics, or keep events forever, under Settings. See Retention.
Does it terminate TLS?
Section titled “Does it terminate TLS?”No. It serves plain HTTP. Put a reverse proxy in front of it; see Docker Compose.
Does it contact anything on its own?
Section titled “Does it contact anything on its own?”The only outbound connections ramzes makes are to the channels you configure, and to Postgres if you use it.
What is the license?
Section titled “What is the license?”The core is AGPL-3.0-only. A commercial edition is planned. See License.