← Back to blog
Changelog 4 min read 炬鲸团队

Torchwhale OBSERVE v2.4.0: Trace Sampling Policies, Alert Silencing, and New Xinchuang Support

v2.4.0 release notes: programmable trace sampling, alert silencing and inhibition, Kylin SP3 and Dameng DM8 support, plus log search and agent improvements and upgrade notes.

Torchwhale OBSERVE v2.4.0 Release Notes

v2.4.0 addresses the three most-requested improvements: trace volume is too large, alerts cannot be silenced on demand, and some Xinchuang environments fail to install. Here is what changed.

Tracing: programmable sampling policies

New sampling configuration supports per-service and error-rate-based dynamic sampling. Normal traffic samples at 5%, while failed requests sample at 100%, controlling cost without losing the critical context. Rules support wildcard service matching and can add extra sampling based on a duration threshold.

sampling:
  default: 0.05
  rules:
    - match: "status == 'error'"
      rate: 1.0

Sampling is evaluated at the Collector, so you can change the policy without touching application code or redeploying services. The error-based rule is the one most teams enable first: it costs almost nothing in storage because failed requests are a small fraction of traffic, but it guarantees every failure has a full trace attached.

Alerting: silencing and inhibition

New alert silence windows (one-click mute during maintenance, with optional recurring time windows), alert inhibition (a single aggregated notification per fault), and label-based aggregation. Silence windows can be scheduled in advance, which is useful for planned maintenance: set a window for the change, and the platform suppresses the expected noise without you having to disable the rules themselves. On-call engineers are no longer buried under dozens of alerts for the same failure, and the alert list is much easier to read. Inhibition is the key change here: when a single database outage triggers fifty service alerts, you get one notification that names the database, not fifty that each name a different symptom.

Xinchuang: Kylin SP3 and Dameng DM8 support

Full adaptation for Kylin Server V10 SP3 and Dameng DM8 is complete, with aarch64 one-click deployment scripts and smooth migration of metadata storage from MySQL to Dameng. See the Xinchuang adaptation guide for deployment and tuning details.

Other improvements

  • Log search: live debugging for Grok field extraction, so you can watch the parse result as you write the pattern
  • Collection agent: hot-reload for multi-line merge rules, no restart needed
  • Dashboards: new histogram chart type for latency percentiles
  • API: added pagination to the alert history endpoint
  • Notifications: WeCom and DingTalk webhooks now retry with exponential backoff on delivery failure
  • Fix: timezone offset that scrambled alert timestamps
  • Fix: occasional timeout when exporting large result sets

Deprecations and behavior changes

Two smaller changes matter if you maintain integrations. The alert history endpoint now requires pagination beyond the default page size, so clients that assumed a single unpaginated response should be updated. The legacy boolean sampling flag in the Collector config is deprecated and will be removed in v2.5; migrate to the new sampling block, which is backward-compatible and imported automatically.

On the storage side, the trace index now stores span attributes as typed fields instead of a single JSON blob. This is what makes the new duration-threshold sampling and faster span-level filtering possible, but it is also the reason the index needs a rebuild after upgrading.

Upgrade notes

Before upgrading from an older version, back up the metadata database. This release includes index schema changes, so rebuild part of the indexes after upgrading — this affects only the trace and log search indexes; metric storage is unchanged. Sampling configuration from v2.3 is imported automatically: a previous global sampling rate becomes the default value, and custom rules are preserved. Single-node deployments just run the upgrade script; cluster deployments should roll nodes one at a time. See the changelog page for the full list.