Subhra264 and Hengfei Yang
3d9369910d
fix: rbac for alerts trigger api ( #10834 )
...
Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com >
2026-03-11 10:34:05 +08:00
Loakesh Indiran
b82271f70b
feat: add anomaly detection ( #10538 )
2026-03-11 10:25:46 +08:00
Huaijin
8212ca6f8e
refactor: split the tantivy out of core ( #10825 )
...
perpare for tantivy benchmark
2026-03-10 17:16:45 +08:00
udev
876c6b2686
fix: tool calls for get schema and navigation button ( #10801 )
2026-03-10 13:23:43 +08:00
Subhra264
8680a1d91a
fix: destination json template should support array based row templates as well ( #10683 )
2026-03-09 20:23:31 +08:00
Subhra264
e5293ba348
fix: scheduled pipeline test run query should use ui search type and rbac fixes for alert history and generate_sql apis ( #10800 )
2026-03-09 20:22:23 +08:00
ByteBaker
5274c7368b
feat(incidents): RCA reanalysis — delta analysis, in-flight tracking, usage tracking ( #10788 )
2026-03-09 18:40:46 +08:00
Subhra264
13f7cbccae
fix: all organizations api axum fix on cloud ( #10783 )
2026-03-09 15:57:29 +08:00
Huaijin
4024d2aba2
perf: improve filter pushdown pruning ( #10793 )
2026-03-09 12:31:14 +08:00
Huaijin
0a0adf85a6
perf: optimizer file list query sql ( #10777 )
2026-03-06 20:31:30 +08:00
Huaijin
bdd5f7f7a3
fix: match_all with short term ( #10775 )
2026-03-06 16:41:48 +08:00
e9c39a4295
feat: cross linking support for dashboards and logs page ( #10652 )
...
Design at:
https://github.com/openobserve/designs/tree/main/cross-linking
---------
Co-authored-by: loaki07 <rustyloaki@gmail.com >
Co-authored-by: Loakesh Indiran <66478092+Loaki07@users.noreply.github.com >
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-05 16:17:31 +05:30
Hengfei Yang
020c41e913
fix: WAL runtime worker configuration ( #10753 )
2026-03-05 11:55:24 +08:00
Sai Nikhil and Yashodhan Joshi
a8b22a2da2
fix: show usage chart on license page ( #10692 )
...
Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com >
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com >
2026-03-05 08:05:26 +05:30
Huaijin
bcf0019bd2
chore: update new model and pricing ( #10745 )
2026-03-04 23:11:47 +08:00
Hengfei Yang
289d806598
feat: add support for dynamic tracing resource attributes ( #10731 )
2026-03-04 20:29:18 +08:00
418ccaa01e
fix: llm evaluations ( #10612 )
...
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com >
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-04 17:55:01 +05:30
Harsh Mahajan and Harsh Mahajan
ef369e595d
chore: upgrading packaages (only non-core packages) ( #10726 )
...
Co-authored-by: Harsh Mahajan <undefined@users.noreply.github.com >
2026-03-04 05:45:36 +05:30
Hengfei Yang
d961b34f00
refactor: standardize sort order handling in trace queries ( #10725 )
2026-03-03 12:11:50 +08:00
Hengfei Yang
de338650bb
chore: enhance search inspector API ( #10720 )
2026-03-03 09:35:38 +08:00
ByteBaker
877ffa3926
feat: add notification support for incidents ( #10715 )
2026-03-02 19:46:48 +08:00
Huaijin
9944f02031
chore: upgrade datafusion to 52.2.0 and vortex to 0.60.0 ( #10706 )
2026-03-02 16:06:21 +08:00
Subhra264
90a279134b
feat: introduce rbac for logs patterns, logs insights and cache refresh ( #10662 )
2026-03-01 16:20:10 +08:00
Hengfei Yang
74c2d914e3
fix: router with base_uri ( #10703 )
...
fixed #10524
2026-03-01 13:38:59 +08:00
Bhargav and hengfeiyang
1eacfd6121
fix: added datatype icon on logs page field list ( #10697 )
...
Co-authored-by: hengfeiyang <hengfei.yang@gmail.com >
2026-02-28 16:19:55 +05:30
udev
320003be9f
fix: change visibility for data retention usage ( #10691 )
2026-02-27 23:19:09 +05:30
Hengfei Yang
d8f219d85e
feat: add keyword field to values_stream API ( #10690 )
2026-02-27 20:57:48 +08:00
ByteBaker
710657a756
chore(incidents): UX improvements and alert grouping fix ( #10688 )
2026-02-27 20:36:58 +08:00
Omkar Kesarkhane
fe7d9f12a9
fix: Traces list UI improvements ( #10670 )
2026-02-27 19:32:34 +08:00
Bhargav
72b90a93e3
fix: Feat nlp mode ( #10638 )
2026-02-27 18:26:36 +08:00
Hengfei Yang
699d7b8c37
fix: avoid conflict error when locker bucket exists with different max_age ( #10687 )
2026-02-27 17:59:45 +08:00
Hengfei Yang
208ffdb11b
fix: account for existing cache size when computing ZO_DISK_CACHE_MAX_SIZE default ( #10679 )
2026-02-27 16:46:35 +08:00
Huaijin
b170136e4b
fix: profiling file path ( #10681 )
2026-02-27 15:02:35 +08:00
Hengfei Yang
a513d51eb4
feat: support order by duration for traces ( #10676 )
2026-02-27 15:02:00 +08:00
Subhra264
74ad511e83
fix: alert manager should use max worker num as mpsc capacity ( #10590 ) ( #10655 )
2026-02-26 22:35:08 +08:00
Hengfei Yang
75eeff04d9
feat: add BasicAuth security scheme to OpenAPI router ( #10673 )
2026-02-26 22:34:37 +08:00
Hengfei Yang
6dcbb343aa
perf: update NATS configuration for history and locking ( #10671 )
2026-02-26 19:48:32 +08:00
ByteBaker
57d8f58a41
feat(service-graph): prev-slot baseline latency for edge coloring
...
Backend:
- Add `baseline_p50/p95/p99_latency_ns: Option<u64>` to `ServiceEdge`; omitted when None
- `get_current_topology` queries the previous time slot (same duration, one slot older)
serially after the current-window query, aggregates per-edge weighted-average latency,
and attaches the result as baseline fields on each edge
- `aggregate_baselines` computes `SUM(pXX * requests) / SUM(requests)` per client→server pair
- `EdgeTrendResponse` drops `p50_avg/p95_avg/p99_avg`; history endpoint now returns raw data points only
- Update `build_topology` signature and all call sites (incidents.rs) to accept baselines map
- Reduce duplicate topology API calls on page load by adding a loading guard
Frontend:
- Populate `edgeBaselines` from topology response `baseline_p95_latency_ns` instead of from history endpoint
- Edge color in graph and tree modes uses baseline ratio (>2× = light red, >1.5× = orange, within = green),
falling back to absolute p95 thresholds when no baseline is available
- Edge color is now latency-only; error rate coloring is for nodes only
2026-02-26 17:07:34 +05:30
ByteBaker
75a56bf496
feat: service graph edge latency trend & interaction overhaul
...
Backend:
- New enterprise-only endpoint: GET /{org_id}/traces/service_graph/edge/history
- Returns time-series P50/P95/P99 latency with request-count-weighted baselines
- OSS returns 403; empty result returned gracefully if stream doesn't exist
Frontend — Interaction Model:
- Click-to-panel replaced with hover tooltip for edge interactions
- Tooltip shows compact stats (request count, error rate, latencies) on hover
- "Show trend" button fetches and renders a live P50/P95/P99 sparkline inline
- Tooltip stays open when moused-over; results cached per edge key
- Edge panel component retained, now includes its own latency trend chart section
Frontend — Edge Coloring:
- Edges now colored relative to 24h weighted-average P95 baseline when available
- Falls back to absolute threshold coloring when no baseline data exists
Frontend — Chart Rendering:
- Switched to SVG render mode for sharper output
- devicePixelRatio passed to chart init to fix blurry Retina display rendering
- View type switch no longer recreates chart (no chartKey increment); prevents replay of expand animation
- Tooltip handlers re-registered after every view switch for both tree and graph modes
Tests:
- Updated to reflect removed edge panel flow
- chartKey stability on view switch now asserted (was: increment expected)
2026-02-26 17:07:34 +05:30
Hengfei Yang
12020ed9a1
fix: enable local mode for enrichment table requests ( #10666 )
2026-02-26 14:22:27 +08:00
0ee7535da7
feat: dashboard time range available at panel level ( #10288 )
...
Design at:
https://github.com/openobserve/designs/blob/main/dashboards/panel-level-time-range/design.md
### **PR Type**
Enhancement, Documentation
___
### **Description**
- Add defaults for panel-level time settings in front-end
- Extend backend PanelConfig with time range fields
- Provide a comprehensive implementation guide document
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>useDashboardPanel.ts</strong><dd><code>Add default
panel time settings fields</code>
</dd></summary>
<hr>
web/src/composables/useDashboardPanel.ts
<ul><li>Added <code>allow_panel_time</code> default (false)<br> <li>
Introduced <code>panel_time_mode</code> default ("individual")<br> <li>
Initialized <code>panel_time_range</code> to null</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10288/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb ">+3/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Extend PanelConfig with time
fields</code>
</dd></summary>
<hr>
src/config/src/meta/dashboards/v8/mod.rs
<ul><li>Added <code>allow_panel_time: Option<bool></code> to
PanelConfig<br> <li> Added <code>panel_time_mode: Option<String></code>
field<br> <li> Added <code>panel_time_range:
Option<DateTimeOptions></code> field</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10288/files#diff-cbf3fe971525ba58892400391dfd7dac7e43d6049d6b4f5a9840ad104ebc5e08 ">+12/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>PANEL_TIME_RANGE_IMPLEMENTATION.md</strong><dd><code>Add
panel time range implementation guide</code>
</dd></summary>
<hr>
web/src/components/dashboards/PANEL_TIME_RANGE_IMPLEMENTATION.md
<ul><li>Added detailed implementation guide (v3.0)<br> <li> Outlined
requirements, UI, URL sync, testing<br> <li> Documented data flow, edge
cases, and timeline</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10288/files#diff-39b68cc51ce3089b41061b75e18c45448659cab57702dd39b01a9aad63598345 ">+2718/-0</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: ktx-akshay <akshay.patil@kiara.tech >
2026-02-26 00:58:02 +05:30
ktx-vaidehi and Yashodhan Joshi
ae6d73e815
feat: dashboard stream and field support from variables ( #10454 )
...
Design at:
https://github.com/openobserve/designs/blob/main/dashboards/variables-stream-field-support/design.md
### **PR Type**
Enhancement, Tests
___
### **Description**
- Add stream/field variable dependency parsing
- Deduplicate and validate dependency graph edges
- Resolve stream/field variables at runtime
- Update variable UI with autocomplete
___
### Diagram Walkthrough
```mermaid
flowchart LR
ui["AddSettingVariable.vue (configure stream/field)"]
runtime["VariablesValueSelector.vue (resolve & query)"]
deps["variablesDependencyUtils.ts (dependency graphs)"]
tests["variablesDependencyUtils.spec.ts (new coverage)"]
ui -- "allows $var in stream/field" --> runtime
ui -- "cycle detection messaging" --> deps
runtime -- "uses resolved stream/field" --> deps
tests -- "asserts stream/field deps & cycles" --> deps
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>variablesDependencyUtils.spec.ts</strong><dd><code>Add
tests for stream/field dependencies</code>
</dd></summary>
<hr>
web/src/utils/dashboard/variables/variablesDependencyUtils.spec.ts
<ul><li>Add cases for <code>query_data.stream</code> dependencies<br>
<li> Add cases for <code>query_data.field</code> dependencies<br> <li>
Validate deduping and embedded variables<br> <li> Add cycle detection
scenarios via stream/field</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10454/files#diff-1a8fd83eb7a8b0c906e668e7e4120a40f7b9853d5bfb485a7c569ff980e4a780 ">+313/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>variablesDependencyUtils.ts</strong><dd><code>Expand
dependency detection to stream/field</code>
</dd></summary>
<hr>
web/src/utils/dashboard/variables/variablesDependencyUtils.ts
<ul><li>Collect deps from stream, field, filters<br> <li> Use
<code>Set</code> to prevent duplicate parents<br> <li> Extend
<code>query_data</code> typing with
<code>stream</code>/<code>field</code><br> <li> Update scoped graph with
deduped edges</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10454/files#diff-58a77094b6971705fb63bde853a79e17b4e2e85240694c4017aada1d01cf1fb4 ">+78/-31</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>VariablesValueSelector.vue</strong><dd><code>Resolve
stream/field variables before querying</code>
</dd></summary>
<hr>
web/src/components/dashboards/VariablesValueSelector.vue
<ul><li>Add <code>resolveVariableValue()</code> for <code>$var</code>
substitution<br> <li> Resolve
<code>stream_name</code>/<code>fields</code> in request payload<br> <li>
Match response hits using resolved field name<br> <li> Add debug/error
console logging for resolution</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10454/files#diff-5c6e3bcb87cb64f25bf8157a541604b7a4904c1282acf662cab5d76a5be6bd56 ">+55/-3</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>AddSettingVariable.vue</strong><dd><code>Allow
variable-based stream and field selection</code>
</dd></summary>
<hr>
web/src/components/dashboards/settings/AddSettingVariable.vue
<ul><li>Replace stream/field <code>q-select</code> with
<code>CommonAutoComplete</code><br> <li> Merge variable options into
stream/field option lists<br> <li> Skip schema fetch when stream
contains <code>$</code><br> <li> Improve cycle error message and
styling</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10454/files#diff-e622f54c1f7629ee67d29ed2fc87008d07eb9246767a05435cc42c3c17ce459a ">+208/-52</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com >
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com >
2026-02-25 23:49:40 +05:30
Hengfei Yang
fb0ca4c0f3
fix: sync PostgreSQL sequences after bulk migration with explicit IDs ( #10656 )
2026-02-25 23:46:19 +08:00
Hengfei Yang
ec1896d456
fix: remove stream file retention ENVs, always use hourly ( #10654 )
2026-02-25 21:09:07 +08:00
Huaijin
9136398d3a
fix: do not move file when db not able to write ( #10651 )
2026-02-25 21:08:47 +08:00
Hengfei Yang
8ddc489a0f
refactor: update schema inference functions to include stream name ( #10629 )
2026-02-25 17:11:43 +08:00
Huaijin
fd347c8e63
fix: export tracing to _meta org when ZO_SEARCH_INSPECTOR_ENABLED enable ( #10650 )
2026-02-25 16:06:01 +08:00
ByteBaker
f196ac62e9
fix: clippy & fmt
2026-02-25 13:34:08 +05:30
ByteBaker
50117dc279
fix(incidents): race conditions, input validation, and TitleChanged event
...
- Wrap append() and record_alert() in DB transactions to fix
read-modify-write race conditions on concurrent alert correlation
- Add length/blank validation on comment endpoint (max 10,000 chars)
- Guard update_severity from emitting SeverityOverride on no-op changes
- Add TitleChanged event type with from/to/user_id fields, wire into
update_title, render in activity timeline
2026-02-25 13:34:08 +05:30
ByteBaker
fa402819a9
feat(incidents): add event timeline system with Activity tab
...
Incident Events:
- New `incident_events` table (JSONB array per incident, PK on `(org_id, incident_id)`)
- `IncidentEvent` struct with 12 typed variants: `Created`, `Alert`, `SeverityUpgrade`,
`SeverityOverride`, `Acknowledged`, `Resolved`, `Reopened`, `DimensionsUpgraded`,
`AssignmentChanged`, `Comment`, `AIAnalysisBegin`, `AIAnalysisComplete`
- Constructors on `IncidentEvent` (e.g. `::alert()`, `::resolved()`, `::comment()`)
- `increment_alert(&mut self)` for compaction: same alert only compacts if it's the
last event in the array, preserving interleaving (A x5, B x3, A x2)
- Severity fields use `IncidentSeverity` enum, not strings
Backend:
- Migration: `m20260214_000001_create_incident_events_table`
- DB ops: `init`, `get`, `append`, `record_alert` (with compaction), `delete`
- Emit events at all mutation points: incident creation, alert correlation,
dimensions upgrade, status change, severity change, auto-resolve
- `user_id` passed from HTTP auth headers through to all events
- `auto_resolve_stale()` now returns resolved IDs for event emission
- API: `GET /v2/{org_id}/alerts/incidents/{id}/events`
- API: `POST /v2/{org_id}/alerts/incidents/{id}/events/comment`
Frontend:
- `IncidentTimeline.vue`: vertical timeline with icon/color per event type,
alert compaction display, comment input, refresh button
- Activity tab added to `IncidentDetailDrawer.vue`
- `incidents.ts`: `getEvents()` and `postComment()` API methods
2026-02-25 13:34:08 +05:30