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

Feature Improvements Fixes

TL;DR

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

A revamped way to create and manage alerts across all your 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 alert rule editor with adaptive configuration

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 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
  • 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