# A revamped way to create and manage alerts across all your telemetry

> Alerting, rebuilt: set your conditions on a live chart, see where a rule triggers and recovers, and test a channel before it goes live.

Source: https://last9.io/changelog/revamped-alerting-create-and-manage-across-telemetry/

Alerting has been rebuilt from the ground up, with an editor that matches how you already explore data elsewhere in the product. You pick a query, see it rendered on a chart, and set your conditions against what you're actually looking at — and the chart shows you exactly where the alert would trigger and where it would recover, so you're not guessing what a rule will do before it fires.

Metrics and log alert rules are now created from the same place — build it with the no-code Builder, or write your query directly in PromQL for metrics or LogQL for logs.

The revamp touches the whole alerting surface:

- **One editor for metrics and logs** — compose a rule against a live chart preview, with trigger and recovery points marked directly on it, whether the source is metrics or logs
- **Redesigned Rules page** — find, group, and manage every alert rule from one place
- **Alert Monitor** — track active and recently fired alerts at a glance
- **Alert group settings** — configure data source, notification channels, and label filters together in a single flow
- **Test before you ship** — send a test alert while wiring up a notification channel to confirm it's connected, instead of waiting for a real incident to find out

It's also a step toward a more consistent experience across the app — defining an alert now feels like the rest of Last9, not a separate world with its own rules. See the [Alerting docs](https://last9.io/docs/alerting/) for the full walkthrough.

Note: as part of this, Scheduled Search is being folded into log alert rules — a log alert rule and a scheduled search map to each other, and Scheduled Search as a standalone surface will be deprecated in favor of log alert rules.

### Improvements

- **Dashboards**
  - Chart data straight from a CSV file — upload a spreadsheet, pick your columns, and visualize it in a panel without ingesting it as metrics first, built for quick ad-hoc analysis
  - A static markdown panel type for section headers, runbook notes, and context blocks, authored right in the panel editor
  - A per-widget "Show exact value" toggle on stat widgets renders the full number instead of a rounded or abbreviated value
  - Manage custom dashboards as code with the new `last9_dashboard` resource in the [Last9 Terraform provider](https://github.com/last9/terraform-provider-last9)
- **Control Plane**: The usage page now shows ingestion volume — the actual size of your ingested data — alongside event counts
- **Discover**
  - The Applications (RUM) Errors and Mobile Vitals views can now break down by network connection type, so you can separate cellular from wifi performance
  - Stable, versioned releases are now available for the mobile SDKs
- **Alerting**: Email notification channels now accept addresses outside the org's allowed domains, so you can route alerts to addresses like a Slack email-to-channel destination

### Fixes

- **Alerting**
  - After an alert was resolved, subsequent fires of the same alert kept landing in the already-resolved Slack thread instead of starting a new message, making new incidents easy to miss
  - Sending a test alert to an email channel failed with a `501 Invalid RCPT TO` error when the channel name was two or more characters
- **Dashboards**
  - Table visualizations with multiple group-by fields and no timeslice collapsed every dimension into a single row instead of giving each group-by its own column
  - Saving a dashboard with an invalid panel failed without a clear error message explaining which panel was at fault
- **Logs**
  - The log attribute view was truncated and cut off longer values
  - The range logs chart could crash when zooming right after hovering
  - Log charts drew a connecting line across gaps in the data instead of breaking the line where data was missing
  - Live tail failed when routed through the Last9 API path
- **Metrics**
  - The chart tooltip displayed sub-decimal values (for example `0.000234`) as `0`
- **Discover**
  - Clicking a process on the service catalog page crashed the page
  - Pod-level and container-level filters in Discover Kubernetes returned no data when applied
  - The mobile SDK used the service name as its client ID, so multiple devices shared one ID and exhausted the rate limit; it now uses a unique device identifier
