Commit Graph
1030 Commits
Author SHA1 Message Date
Subhra264 f45da519f3 feat: introduce api for report folders (#11261)
Ref https://github.com/openobserve/openobserve/issues/11219

Design at: dashboards/REPORT_FOLDER_VIEW_UI.md
2026-04-17 12:00:09 +00:00
udevandBhargav 6f8ea1b772 fix: pagination support for values api (#11237)
Co-authored-by: Bhargav <BJP232004@GMAIL.COM>
2026-04-16 13:03:42 +05:30
Hengfei Yang b266560838 feat: support custom AI tools (#11270) 2026-04-15 20:11:35 +08:00
85d261b5d0 fix: vulnerability scan fixes (#11249)
| # | Severity | Category | File |
| :--- | :--- | :--- | :--- |
| 1 | **High** | SSRF bypass (IPv6) | `ssrf_guard.rs` |
| 2 | **High** | SSRF bypass (retry) | `enrichment_table/mod.rs` |
| 3 | **High** | SSRF defense-in-depth | `alert.rs` |
| 4 | **Critical** | CORS + credentials | `router/mod.rs` |
| 5 | **Critical** | SQL Injection | `postgres.rs`, `sqlite.rs` |
| 6 | **High** | Privilege escalation (token) | `users.rs` |
| 7 | **Medium** | Panic/DoS | `users.rs` |
| 8 | **Low** | Integer overflow | `alerts/mod.rs` |
| 9 | **Medium** | XSS | `alertSummaryGenerator.ts`, `colorizeQuery.ts`
|
| 10 | **Medium** | Credential exposure in logs | `validator.rs`,
`organization.rs`, `users.rs` |

---------

Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Shrinath Rao <shnath@openobserve.ai>
Co-authored-by: Prabhat Sharma <hi.prabhat@gmail.com>
2026-04-14 07:22:11 +00:00
Ashish Kolheandgithub-actions[bot] 2ee44808c0 fix: fga for eval templates (#11238)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-13 06:35:27 +00:00
ByteBaker 58a0297b96 fix: SRE SA auth for MCP (#11228)
- fix incidents not correlating for alert ID
- SRE SA no more visible in other screens than main SA list
- SreAgent role cannot be assigned to any other user now
- regular user now working for MCP
2026-04-10 14:41:25 +00:00
Subhra264 938347df85 fix: db email instead of token email, should be used for UserEmail and openfga check (#11226)
When validating access token, we should use the email returned from db
query to do `check_permissions` rbac function call. Reason is, in
openfga db, we store the same user email as stored in the openobserve
db. Hence, all the permission is supposed to be evaluated against the
same email stored in the db.

The email decoded from token can have any case (upper/lower) as per
user's sso config, so it is important to follow the case stored in the
db created when the user logged in for the first time.
2026-04-10 06:38:37 +00:00
Abhay Padamani 5b71a27729 fix: cross link issue with multi stream (#11200) (#11214)
fix #11200
2026-04-09 10:04:18 +00:00
Subhra264andHengfei Yang 1b09ad6a55 fix: return error if inline attachment type is selected for pdf report (#11188)
PDF report does not support inline attachment type, hence this pr.

---------

Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com>
2026-04-08 13:10:26 +00:00
a9a9a17d73 feat: MCP 2025-11-25 transport upgrades + pinned tools (#11181)
## Summary
Design at: https://github.com/openobserve/o2-enterprise/issues/1413
- **MCP 2025-11-25 Streamable HTTP transport**: validate
`MCP-Protocol-Version` header (400 on mismatch), return HTTP 202 for
JSON-RPC notifications, add `DELETE /api/{org_id}/mcp` for session
termination
- **Pinned tools**: mark `StreamList`, `StreamSchema`, `SearchSQL`,
`PrometheusRangeQuery`, `GetIncident` with `"pinned": true` in
`x-o2-mcp` extension so they appear directly in `tools/list`

## Test plan

- [x] POST with no `id` field (notification) → 202 Accepted, no body
- [x] POST with wrong `MCP-Protocol-Version` header → 400 Bad Request
- [x] DELETE `/api/{org_id}/mcp` → 204 No Content
- [x] `tools/list` response includes the 5 pinned tools directly
- [x] Pinned tools callable directly via `tools/call name=StreamList`
without `tool_search` first

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Huaijin <haohuaijin@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-08 10:25:30 +00:00
f4d148ea65 fix: evaluations as a tab in traces clean (#10988)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Ashish Kolhe <undefined@users.noreply.github.com>
2026-04-08 07:02:38 +00:00
7389c5b23e fix: service discovery, incidents, service graph (#11180)
Following fixes and enhancements have been made:

**Service Discovery**:
- default field tracker is now used to distinguish services as well in
absence of a user config, the system works out of box
- UI issues
- incorrect field was displayed when a card in recommendation was
clicked
  - scope/workload selectors were leftover
  - stream based service search

**Incidents**:
- AI Analysis failure now emits a failure event correctly, avoiding
false-positive and preventing UI from getting stuck when a prior
`AIAnalysisBegin` event remained in place
- correlate alerts by alert ID, this was a regression after correlation
revamp, useful for correlation in absence of alert ID
- fix sqlx issue wherein `u64` wasn't supported for sqlite, now turned
into `i64`

**Service graph**:
- now ingests using HTTP bulk API. Was failing since recently moved
service graph daemon to alertmanager, which used internal ingest call,
which was unsupported on alertmanager

- Also add Python 2.0 license support for JS

---------

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: ByteBaker <undefined@users.noreply.github.com>
Co-authored-by: Shrinath Rao <shnath@openobserve.ai>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08 11:28:52 +05:30
Hengfei Yang d1a5d8f65b fix: enhance URL validation to block private and loopback IP addresses (#11162) 2026-04-07 07:32:03 +00:00
Subhra264andHengfei Yang f344de6458 fix: do not strip base uri prefix in rum enpoints (#11153)
Fixes #11070 

When `ZO_BASE_URI` is set, the rum endpoints get broken. This is because
when we strip prefix in the `validator_rum` functiom, it checks for
`{base_uri}/v1` endpoint. But axum already strips the nesting path when
the `req_data.uri()` is called.

The routing tree for a sub-path deployment `(base_uri = "/openobserve")`
is:

```
nest("/openobserve", app)          ← outer: strips /openobserve
  └── merge(other_service_routes())
        └── nest("/rum", rum_routes)  ← inner: strips /rum
              └── layer(rum_auth_middleware)  ← middleware runs here
```

Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com>
2026-04-07 02:51:08 +00:00
ByteBakerandHengfei Yang b948361769 chore: update copyright year to 2026 (#11166)
Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com>
2026-04-07 09:57:53 +08:00
1d3618ad94 chore: system-managed SRE Agent service account provisioning (#11130)
## Summary

Implement automatic provisioning and lifecycle management of
per-organization system service accounts for the AI-powered SRE Agent.
These accounts serve as the identity for RCA (Root Cause Analysis) agent
API interactions and are created automatically for each organization.

## Key Features

### Service Account Provisioning
- Database migration creates SRE Agent accounts for all existing
organizations
- Deterministic email format:
`o2-sre-agent.org-<ORG_ID>@openobserve.internal`
- System accounts are automatically created on organization creation
- Idempotent operations ensure safe re-runs and self-healing

### System Account Protection
- API endpoints prevent modification/deletion of system service accounts
(403 Forbidden)
- User responses include `is_system` flag to identify system accounts
- Protection enforced at HTTP handler layer

### RCA Agent Client Refactoring
- Singleton pattern: global client initialized once at startup
- Per-request user credential forwarding for better audit trails and
scoping
- Lazy initialization: returns None if agent service not configured
- Updated all query methods to accept and forward auth credentials

### Incident Correlation Enhancement
- Query `ServiceIdentityConfig` to get configured semantic dimension
groups
- Extract only `distinguish_by` fields from matched identity sets
- Use parallel correlation execution (Service Discovery + semantic
extraction)
- Improved accuracy by using configured groups instead of fallback label
extraction

### Improved Token Redaction
- Consistent 12-character format: first 4 visible characters + 8
asterisks
- Better security for token display in UI
- Updated tests for new redaction format

## Technical Details

### Database Changes
- New migration:
`m20260331_000001_create_sys_rca_agent_service_accounts`
- Creates accounts with organization and RUM tokens
- Safe pagination (100 orgs at a time) with idempotency checks
- System accounts use role type 6 (SreAgent, distinct from
ServiceAccount)

### Authorization
- System accounts added to OpenFGA with standard org membership tuples
- SRE-specific read-only role for permission control
- Self-healing: runtime ensures OpenFGA state is consistent with
database state

### API Changes
- GET /users: Returns `is_system` and `description` fields
- PUT/DELETE /users: Reject modification/deletion of system accounts

## Test Coverage
- Token redaction tests updated for new format
- System service account protection verified
- User list pagination tested with system accounts

## Feature Flag
This is an enterprise feature gated behind `#[cfg(feature =
"enterprise")]`. System accounts are always created, but RCA integration
only works if the agent service is configured.

## Deployment
- Zero-downtime: migration is additive
- Opt-in for OSS deployments
- Automatic provisioning on upgrade and org creation

---------

Co-authored-by: Shrinath Rao <shnath@openobserve.ai>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com>
2026-04-06 14:30:20 +00:00
漂流 fbf7283ffc chore: use std instead of once_cell (#11081) 2026-04-06 16:27:16 +08:00
GobinathALandHengfei Yang b831f24885 fix(web): quote reserved fields in SQL query (#10905)
**Issue**
Logs query generation used raw field names in SELECT [FIELD_LIST] and
non-SQL WHERE filters. If a field name is a SQL reserved word (for
example user, role), the generated SQL could be invalid or fail to
parse.

**Fix**
Field names are now consistently wrapped in double quotes when building
SQL:
- Quick mode field list ([FIELD_LIST])
- Non-SQL filter tokens converted into WHERE clauses

Tests were updated to assert quoted-field behavior for both quick mode
and filter conversion.

---------

Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com>
2026-04-05 11:33:42 +00:00
416a6cce32 feat: work group v2 — slot-based admission (#10990)
## Summary

Design at:
https://github.com/openobserve/designs/blob/main/infrastructure/work-group/work_group_v2_impl.md

This PR adds slot-based distributed admission control for search queries
and fixes file dispatch consistency when a subset of querier nodes is
selected per query.

To enable this feature we need to set:

```
O2_WORK_GROUP_MAX_NODES_PER_QUERY > 0
O2_WORK_GROUP_NODE_SELECTION_STRATEGY = org | stream
```

### Slot-based admission

- Add `TryAcquire / StartQuery / ReleaseQuery` gRPC RPCs — Follow nodes
reserve slots before execution starts and self-release via
`FlightEncoderStream::drop`
- Wire slot admission in both Arrow Flight search and PromQL paths,
co-located with the existing org/user concurrency queue check
- Delegate DataFusion `target_partitions` / `memory_size` to enterprise
`get_resource_limit()`, which applies per-query slot fraction with
optional dynamic expansion
- TTL sweep interval derived from `slot_reserved_ttl_ms / 4` (min 100
ms) instead of a hardcoded 500 ms
- Move `QUERY_PENDING_NUMS` / `QUERY_RUNNING_NUMS` metric updates to
after slot admission completes (a blocked request is no longer counted
as "running")

### Consistent-hash file dispatch fix (`max_nodes_per_query > 0`)

- Add `get_node_from_consistent_hash_within(key, role, group, allowed)`
to `infra::cluster`: walks the global ring clockwise from `hash(key)`
but skips nodes outside `allowed`. Preserves all consistent-hash
properties (even distribution via vnodes, minimal remapping on
membership change) while confining dispatch to the selected subset
- `partition_file_by_hash` now passes only the selected querier nodes as
the `allowed` set, so every file maps to one of the N selected nodes —
no more fallback-to-index-0 imbalance when `strategy=org/stream`
- File-list broadcast (enterprise) pre-computes per-item target nodes
using the same filtered ring walk via `broadcast_item_targets()` in
`o2-enterprise`, so broadcast and dispatch always agree on which node
owns each file

### Proto fix

- Reserve field 10 in `QueryStatus` (was `WorkGroup` enum / varint wire
type) and move `work_group` string to field 13 — prevents wire-type
mismatch during rolling upgrades

### Other fixes from code review

- `get_first_stream_key()` now returns `"{stream_type}/"` sentinel
instead of `""` for multi-stream / cross-index queries, so
`select_nodes` always receives a non-empty deterministic key
- PromQL node selection uses `"metrics/"` stream key (consistent with
the sentinel format) instead of bare `"metrics"`
- Move `_orig_trace_id` binding inside `#[cfg(feature = "enterprise")]`
block in `FlightEncoderStream::drop`

## Key config (all default to safe/off values)

| Env var | Default | Description |
|---|---|---|
| `O2_WORK_GROUP_MAX_NODES_PER_QUERY` | `0` | Nodes per query; 0 = all
nodes (disables slot admission) |
| `O2_WORK_GROUP_NODE_SELECTION_STRATEGY` | `all` | `all` / `org` /
`stream` |
| `O2_WORK_GROUP_SHORT_SLOT_RATIO` | `0.8` | Max fraction of node slots
for short queries |
| `O2_WORK_GROUP_DYNAMIC_RESOURCE` | `true` | Expand DataFusion
allocation on idle nodes |

## Test plan

- [x] Default (`max_nodes_per_query=0`): behavior identical to before,
zero overhead
- [x] `strategy=org`, `max_nodes_per_query=3`, 10-node cluster: each org
consistently uses the same 3 nodes; files distributed evenly across
those 3 nodes (no node-0 pile-up)
- [x] Broadcast routes each file to the same node that
`partition_file_by_hash` selects at query time → cache hits on
re-queries
- [x] Slot admission: 3rd request waits when budget=2 and 2 queries
running; slots released on completion
- [x] PromQL queries respect slot budget
- [x] Rolling upgrade: old node sends `QueryStatus` without field 10
conflict

## Related

Requires companion PR in `o2-enterprise`:
https://github.com/openobserve/o2-enterprise/pull/1378

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-05 05:31:37 +00:00
773c87018b feat: add configuration option to show field as JSON in dashboard (#11091) (#11104)
Design at:

https://github.com/openobserve/designs/tree/main/dashboards/show-field-as-json-default-value-env

---------

Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech>
Co-authored-by: Abhay Padamani
<141122205+ktx-abhay@users.noreply.github.com>

---------

Co-authored-by: ktx-vaidehi <134508096+ktx-vaidehi@users.noreply.github.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Abhay Padamani <undefined@users.noreply.github.com>
2026-04-03 07:34:12 +00:00
ByteBaker d25fbf97c1 fix: do not show service account token post creation (#11110)
So far, service account token could be viewed and copied even after an
SA was created. This was bad design and posed risk of impersonation.

The changes prevent this from happening by returning only the redacted
token in the API response. Full token with create API itself, and
removing GET API to get the service account details (which returned raw
token).

The same affects token rotation as well.
2026-04-01 19:29:42 +00:00
ByteBaker 881a6611c0 feat: simplify service discovery feature (#10946)
## Core changes

- **Schema**: `service_streams_dimensions` table dropped entirely.
Service rows gain `disambiguation JSONB`, `set_id`, and
`field_name_mapping JSONB`. Incidents: `correlation_key VARCHAR`
replaced with `group_values JSONB`.
- **Migrations**: 6 new sea-orm DSL migrations (raw SQL strings removed
for cross-backend consistency; GIN index creation remains raw SQL — no
native sea-orm support).
- **`ServiceIdentityConfig`**: `fqn_priority_dimensions` replaced with
`distinguish_by` list. `max_total_service_rows` renamed from
`max_total_services` (unit = rows, not logical services).
- **Meta types**: `CorrelationConfidence`, `ConfidenceLevel`,
`DimensionMatchDetail` removed from `correlation.rs`.
`SemanticFieldGroup` → `FieldAlias` (fields are aliases to group IDs,
not full group descriptors).
- **Handlers**: Authorization checks added to list, correlate, and
get-config endpoints. `_grouped` endpoint removed; `_recommendations`
endpoint added.
- **Cleanup job**: Leader election added (smallest UUID ingester wins);
hardcoded 1h interval + 30-day stale threshold replace the removed
configurable env vars.
- **Processing mode removed**: Compactor-mode path removed; single
ingester-only path remains.
- **UI**: FQN priority config replaced with `distinguish_by` field
selector. New `ServiceIdentitySetup.vue` guided setup flow.
`is_scope`/`is_stable`/`normalize` toggles removed from semantic group
editor. ~13-14 FQN-related i18n keys removed from each of 12 locale
files.

## Env var changes

Removed (15):
- `O2_SERVICE_STREAMS_SAMPLE_EVERY_NTH_STREAM` → renamed (see below)
- `O2_SERVICE_STREAMS_SAMPLE_EVERY_NTH_FILE`
- `O2_SERVICE_STREAMS_RECORD_SAMPLE_PERCENT`
- `O2_SERVICE_STREAMS_STABLE_DIMENSION_THRESHOLD`
- `O2_SERVICE_STREAMS_TRANSIENT_DIMENSION_THRESHOLD`
- `O2_SERVICE_STREAMS_MAX_STREAMS_PER_SERVICE`
- `O2_SERVICE_STREAMS_MIN_CORRELATION_CONFIDENCE`
- `O2_SERVICE_STREAMS_PROCESSING_MODE`
- `O2_SERVICE_STREAMS_BATCH_MAX_SERVICES`
- `O2_SERVICE_STREAMS_CLEANUP_INTERVAL_MINS`
- `O2_SERVICE_STREAMS_STALE_THRESHOLD_HOURS`
- `O2_SERVICE_STREAMS_MAX_TOTAL_DIMENSIONS`
- `O2_SERVICE_STREAMS_MAX_TOTAL_VALUES`
- `O2_SERVICE_STREAMS_CHANNEL_CAPACITY`
- `O2_SERVICE_STREAMS_MAX_FLUSH_RETRIES`

Renamed:
- `O2_SERVICE_STREAMS_SAMPLE_EVERY_NTH_STREAM` →
`O2_SERVICE_STREAMS_SAMPLE_RATE` (default: 10)

Kept:
- `O2_SERVICE_STREAMS_ENABLED` (default: false)
- `O2_SERVICE_STREAMS_SAMPLE_WINDOW_SECS` (default: 300)
- `O2_SERVICE_STREAMS_BATCH_FLUSH_INTERVAL_SECS` (default: 600)
- `O2_SERVICE_STREAMS_MAX_TOTAL_SERVICES` (default: 500,000)

Added:
- `O2_SERVICE_STREAMS_TRACKED_ALIAS_IDS` — comma-separated alias group
IDs tracked system-wide by default; "service" always implicit

Design at: designs/correlation/proposal-v2
2026-03-30 13:47:40 +05:30
Sai Nikhil 1a9837bd12 fix: pass search inspect env via config (#11051) 2026-03-30 10:25:31 +05:30
udev 1c7a3135de feat: add patch panel apis (#11025) 2026-03-28 03:15:34 +05:30
Subhra264 6a6914213d fix: Include the error field in alert/pipeline history query (#11050)
Currently the alert/pipeline history api does not include the error
field in the history query from the triggers stream. This pr fixes this.
2026-03-27 18:40:36 +05:30
ByteBaker 9c245882d2 fix: anomaly status verbiage + owner issue 2026-03-25 14:15:38 +05:30
477ec39db2 feat: add support for sourcemaps for RUM (#10259)
This ads support for sourcemaps in RUM

Design at :
https://github.com/openobserve/designs/blob/main/application-monitoring/rum/sourcemap-be.md

---------

Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-24 21:18:06 +05:30
Subhra264 11e16f47eb fix: don't do unnecessary lowercasing of user emails (#10938) (#10985) 2026-03-23 10:04:53 +01:00
ByteBaker f7b5bcdc91 chore: enable service graph by default, drop runtime config knobs
Remove O2_SERVICE_GRAPH_ENABLED and O2_SERVICE_GRAPH_QUERY_TIME_RANGE_MINUTES.
Service graph now runs unconditionally on enterprise ingester nodes.
Query window defaults to 60m constant; UI time range picker controls actual queries.

Also remove checks for this on the UI. Keep only enterprise level checks.
2026-03-23 12:17:53 +05:30
Huaijin 825a57eea8 fix: traces latest stream api (#10993)
- close #10986
2026-03-23 13:19:53 +08:00
udev d3f6a333f9 feat: summary for tool responses (#10955) 2026-03-20 18:22:22 +05:30
Hengfei Yang b6e8ce9400 fix: show fts field values (#10975) 2026-03-20 14:57:30 +08:00
36c2ef4418 feat: anamoly detection p2 (#10940)
Design at: anomaly-detection

---------

Signed-off-by: loaki07 <rustyloaki@gmail.com>
Co-authored-by: Bhargav <BJP232004@GMAIL.COM>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Loakesh Indiran <undefined@users.noreply.github.com>
Co-authored-by: ByteBaker <42913098+ByteBaker@users.noreply.github.com>
Co-authored-by: Shrinath Rao <shnath@openobserve.ai>
2026-03-19 21:36:06 +05:30
Hengfei Yang d88f978e48 refactor: simplify path handling in middleware and router configuration (#10960) 2026-03-18 19:53:19 +08:00
Hengfei Yang f53c858035 feat: add configuration option for field values in FST logs page (#10951) 2026-03-18 17:28:19 +08:00
Hengfei Yang fcb04b9a76 fix: node list api should working on querier (#10937) 2026-03-17 20:04:26 +08:00
Ashish Kolhe ec0dc67d5a fix: for prometheus metadata api (#10934) 2026-03-17 15:25:35 +05:30
Subhra264 3760b55cf9 fix: multi-window dashboard should support vrl functions (#10860)
Currently dashboard with Multi-window set up does not really run the
result array vrl functions. This pr adds support for vrl function when
`/_search_multi_stream` is used. When `per_query_response` is true, and
the vrl function is result array vrl function, the function is applied
on the whole combined response (including both the time windows). The
input of the result array vrl function becomes a 2d array where each
child array represent a time window.

Otherwise, if `per_query_response` is false, or the vrl function is not
result array vrl function, then the function is applied individually on
every result of every time-window queries.
2026-03-16 13:04:28 +05:30
udevandHarsh Mahajan 32fdd60b2d fix: assistant issues (#10893)
- **require confirmation to update_stream_settings**
- **fix: adding query param into doc**
- ** fix: partial text rendering and traces search**

---------

Co-authored-by: Harsh Mahajan <007harshmahajan@gmail.com>
2026-03-13 17:25:50 +05:30
Hengfei Yang 9e7336897e fix: extract auth for ratelimit (#10887) 2026-03-13 15:21:31 +08:00
Sai Nikhil d2861433fa fix: search inspector UI (#10749) 2026-03-13 09:57:29 +08:00
udev a1ba8b1b71 feat: Ai metering for cloud (#10824) 2026-03-13 00:57:31 +05:30
Hengfei Yang 76c4f5c423 fix: trace stream api (#10880) 2026-03-12 22:38:43 +08:00
Subhra264 31d1ad6a23 fix: Add Alert history datepicker and consider max query range set for triggers stream in the organizations (#10796) 2026-03-12 10:28:16 +08:00
BhargavandYashodhan Joshi b92701b79e fix: org list auth check (#10850)
Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com>
2026-03-11 13:53:01 +05:30
Loakesh Indiran b82271f70b feat: add anomaly detection (#10538) 2026-03-11 10:25:46 +08:00
udev 876c6b2686 fix: tool calls for get schema and navigation button (#10801) 2026-03-10 13:23:43 +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
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