Commit Graph
1484 Commits
Author SHA1 Message Date
5dd59cd495 fix: alerts folders UI improvements (#6398)
1. code refactoring for alert list

---------

Co-authored-by: omkark06 <omkar@zinclabs.io>
Co-authored-by: udev <uddhavdave1@gmail.com>
2025-03-27 07:46:17 +05:30
Omkar Kesarkhane 700b9e59c4 fix: fixed reset pagecount search on error in web-socket (#6408) 2025-03-26 14:13:14 -07:00
+2 8cd0683a0b feat: ws v2 (#6404)
# WebSocket v2 Architecture

## NOTE: Open Issues:
- [ ] `session_drain` from server is experimental and not ready for
prod. Instead, the client maintains ongoing `trace_id`'s and when cookie
expires it will retry search for all the ongoing searches.

## Overview
Implements websocket v2 with the main goal to establish `Client-Router`
connections `per tab` and `Router-Querier` `persistent` connections.

## New Env (Default):
```sh
ZO_WEBSOCKET_CHECK_COOKIE_EXPIRY=true
ZO_WEBSOCKET_HEALTH_CHECK_INTERVAL_SECS=60
ZO_WEBSOCKET_IS_SESSION_DRAIN_ENABLED=false # This is experimental, not meant for prod
```

## High-Level Flow

1. Client establishes WebSocket connection with the router.  
2. Router creates a session.  
3. Router maintains persistent connections to all queriers.  
4. Client requests are routed to the appropriate querier using
consistent hashing.
5. Responses are routed back using `trace_id` mappings.  
6. Health checks maintain connection validity.  
7. Failed connections trigger automatic cleanup and reconnection.  
8. **Internal Communication Validation Using:**  
   - **8a.** Internal gRPC tokens  
   - **8b.** IP validation  
   - **8c.** WebSocket upgrade headers  

## Connection Lifecycle
```mermaid
sequenceDiagram
    participant Client
    participant Router
    participant ConnectionPool
    participant QuerierConn
    participant Querier
    participant Cluster

    Client->>Router: WS Connection Request
    Router->>SessionManager: register_client(client_id)
    
    Note over Router,SessionManager: Creates channels:<br/>response_tx/rx<br/>disconnect_tx/rx

    par Handle Incoming Messages
        Router->>Router: spawn handle_incoming task
    and Handle Outgoing Messages
        Router->>Router: spawn handle_outgoing task
    end

    Client->>Router: WS Client Event
    Router->>SessionManager: get_querier_for_trace(trace_id)
    
    alt No Existing Mapping
        Router->>Cluster: get_node_from_consistent_hash(trace_id)
        Router->>ConnectionPool: get_or_create_connection(querier)
        
        alt No Existing Connection
            ConnectionPool->>QuerierConn: create_connection
            QuerierConn->>Querier: WS Connection Request
            
            par Connection Tasks
                QuerierConn->>QuerierConn: spawn listen_to_querier_response
                QuerierConn->>QuerierConn: spawn health_check
            end
            
            Querier-->>QuerierConn: Connection Established
        end
        
        Router->>SessionManager: set_querier_for_trace(trace_id, querier)
    end

    Router->>QuerierConn: register_request(trace_id)
    Router->>QuerierConn: send_message(event)
    Querier-->>QuerierConn: Response
    QuerierConn->>Router: Route Response via response_tx
    Router->>Client: Forward Response

    Note over Router,Client: On Disconnect/Error:<br/>1. Send disconnect signal<br/>2. Clean up sessions<br/>3. Drain if needed
```

## Connections
```mermaid
graph TB
    subgraph "Client Layer"
        UI1[UI Client 1]
        UI2[UI Client 2]
        UI3[UI Client 3]
    end

    subgraph "Router Layer"
        R1[Router 1]
        R2[Router 2]
        
        subgraph "Router 1 Connection Pool"
            CP1[Connection Pool]
            QC11[Querier1 Conn]
            QC12[Querier2 Conn]
            QC13[Querier3 Conn]
            CP1 --- QC11
            CP1 --- QC12
            CP1 --- QC13
        end
        
        subgraph "Router 2 Connection Pool"
            CP2[Connection Pool]
            QC21[Querier1 Conn]
            QC22[Querier2 Conn]
            QC23[Querier3 Conn]
            CP2 --- QC21
            CP2 --- QC22
            CP2 --- QC23
        end
        
        R1 --- CP1
        R2 --- CP2
    end

    subgraph "Querier Layer"
        Q1[Querier 1]
        Q2[Querier 2]
        Q3[Querier 3]
    end

    UI1 -.->|WS| R1
    UI2 -.->|WS| R1
    UI3 -.->|WS| R2

    QC11 ===|Persistent WS| Q1
    QC12 ===|Persistent WS| Q2
    QC13 ===|Persistent WS| Q3
    QC21 ===|Persistent WS| Q1
    QC22 ===|Persistent WS| Q2
    QC23 ===|Persistent WS| Q3

    classDef client fill:#f9f,stroke:#333,stroke-width:2px
    classDef router fill:#bbf,stroke:#333,stroke-width:2px
    classDef querier fill:#bfb,stroke:#333,stroke-width:2px
    classDef pool fill:#ffd,stroke:#333,stroke-width:2px
    
    class UI1,UI2,UI3 client
    class R1,R2 router
    class Q1,Q2,Q3 querier
    class CP1,CP2 pool
```

## Components
```mermaid
classDiagram
    class WsHandler {
        +session_manager: Arc<SessionManager>
        +connection_pool: Arc<QuerierConnectionPool>
        +handle_connection()
        +remove_querier_connection()
        +_shutdown()
    }

    class SessionManager {
        +sessions: RwAHashMap<ClientId, SessionInfo>
        +mapped_queriers: RwAHashMap<QuerierName, HashSet<TraceId>>
        +register_client()
        +update_session_activity()
        +remove_trace_id()
        +unregister_client()
        +set_querier_for_trace()
        +get_querier_for_trace()
    }

    class QuerierConnectionPool {
        +connections: RwAHashMap<QuerierName, Arc<QuerierConnection>>
        +get_or_create_connection()
        +remove_querier_connection()
        +maintain_connections()
        +get_active_connection()
    }

    class QuerierConnection {
        +querier_name: QuerierName
        +write: Arc<Mutex<Option<SplitSink>>>
        +response_router: Arc<ResponseRouter>
        +is_connected: Arc<AtomicBool>
        +connect()
        +disconnect()
        +send_message()
        +register_request()
        +unregister_request()
    }

    class ResponseRouter {
        +routes: RwAHashMap<TraceId, Sender<WsServerEvents>>
        +route_response()
        +flush()
        +spawn_cleanup_task()
    }

    WsHandler --> SessionManager
    WsHandler --> QuerierConnectionPool
    QuerierConnectionPool --> QuerierConnection
    QuerierConnection --> ResponseRouter
```


Related Issues: #6396

---------

Co-authored-by: Taiming Liu <liutaiming3@gmail.com>
Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com>
Co-authored-by: Abhay Padamani <141122205+ktx-abhay@users.noreply.github.com>
Co-authored-by: Ashish Kolhe <35160958+oasisk@users.noreply.github.com>
Co-authored-by: udev <uddhav@openobserve.ai>
Co-authored-by: omkark06 <omkar@zinclabs.io>
Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech>
Co-authored-by: Omkar Kesarkhane <127078473+omkarK06@users.noreply.github.com>
Co-authored-by: udev <uddhavdave1@gmail.com>
Co-authored-by: Subhra264 <chakrabortysubhradeep556@gmail.com>
Co-authored-by: ktx-vaidehi <134508096+ktx-vaidehi@users.noreply.github.com>
2025-03-26 11:43:40 -07:00
ktx-vaidehi 64bfaa10e3 feat: dashboard background color option for metric chart (#6397) 2025-03-26 20:18:28 +05:30
Bhargav dace1fef23 fix: UI changes on datasource page (#6390) 2025-03-25 22:08:29 +05:30
Sai Nikhil b006800b37 fix: alert enable or disable is not updated in the UI when filter applied (#6388)
1. This PR fixes that alert enable is not updated in the UI when filter
is applied
2. This PR also fixes the alert enable disable in search across folders
3. This PR also removes the id from exported alert
2025-03-25 16:07:58 +05:30
Subhra264 5b7536d7fc feat: add variables for trigger time in seconds, millis for alert template (#6387)
This pr adds two more variables to alert templates -
`alert_trigger_time_millis` (the alert trigger occurance time in epoch
milliseconds) and `alert_trigger_time_seconds` (the alert trigger
occurance time in epoch seconds). Note that the `alert_trigger_time` is
alert trigger occurance time in UTC epoch microseconds.
2025-03-25 15:03:34 +05:30
ktx-vaidehiandKirtan Thakkar b435ce798f fix: passing variables of dashboard drilldown to same dashboard (#6385)
Co-authored-by: Kirtan Thakkar <kirtan@kiara.tech>
2025-03-25 13:58:35 +05:30
Omkar Kesarkhane f18f265e12 fix: Updated actions execution type label (#6374) 2025-03-25 09:00:38 +05:30
c3759a4231 fix: Migration for scheduled_jobs table to use alert id as module_key (#6365)
Co-authored-by: udev <uddhavdave1@gmail.com>
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-03-24 15:10:44 +05:30
Omkar Kesarkhane b7af94f487 fix: Actions UI improvements (#6372)
1. Remove action_id from Histogram and Page-count search payload
2. Rename Action type `Service` to `Real Time`
3. Added validation for service account selection while creating action
2025-03-24 14:33:16 +05:30
Sai Nikhil f7d3e5aee0 fix: added tooltip for all icons in icon bar (#6371)
1. added tooltip for every icons in icon bar
2025-03-24 12:32:27 +05:30
06920b203b fix: previous histogram getting display even after there is no data (#6346)
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech>
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai>
2025-03-24 11:27:20 +05:30
ktx-vaidehi 986c01a4a2 fix: dashboard error message getting removed (#6366) 2025-03-23 11:47:52 +05:30
Sai Nikhil c5be09fbf4 fix: changes for icon bar in logs page (#6362)
This PR includes changes 
1. introduced icons for histogram , sql mode, quickmode and moved search
history , download logs , search scheduled jobs options into menu that
will be there at right end
2. this will make the UI to accommodate upto 1200px with datetime as
relative , 1350 when it is absolute
3. introducing icons saved space of ~200px in total for both sides
2025-03-23 10:16:34 +05:30
ktx-vaidehi 2af8b83699 fix: dashboard panel name and folder text changes (#6364) 2025-03-22 18:38:57 +05:30
Hengfei Yang a09d626d42 fix: disable add stream & add field when user doesn't enable UDS (#6361) 2025-03-22 10:54:35 +08:00
Abhay Padamani 2c51f7fde3 fix: dashboard empty error issue (#6348)
- #3044
2025-03-21 17:01:57 +05:30
71b32480ab feat: alerts folder implementation (UI) (#6228)
implemented alerts folders in the UI

1. search across folders
2. alert listing page moved condition and description column to the
expand so whenever user clicks on any row it will show respective
condition and description if there
3. provided fixed width for columns so that all columns are in view port
visibility expect name column as it can be varied depending upon name
given by user
4. search across all folders implemented in this PR only
Import alert add ons
1 additional things done to import alert as well like introducing the
folders in import page

---------

Co-authored-by: omkark06 <omkar@zinclabs.io>
Co-authored-by: Subhradeep Chakraborty <chakrabortysubhradeep556@gmail.com>
2025-03-21 13:31:54 +05:30
ktx-vaidehi 4ad2865ddb fix: dashboard variables dependency not working properly (#6350) 2025-03-20 18:19:51 +05:30
ktx-vaidehi 901ad1c5dc fix: dashboard breakdown value not present chart not getting plot (#6344)
- #6310
2025-03-20 16:37:29 +05:30
Omkar Kesarkhane ab0b3a64f8 fix: added errors when actions are not enabled while creating destination (#6342)
1. If actions are disabled and user tries to import action in
destination, Unknown Error was shown instead of 'Action type not
supported'
2025-03-20 13:47:41 +05:30
Omkar Kesarkhaneandudev 28106fc564 fix: Actions UI issues (#6325)
1. Action Issues
2. #6288

---------

Co-authored-by: udev <uddhavdave1@gmail.com>
2025-03-20 09:39:54 +08:00
Abhay Padamani 0698b9f4e8 fix: with query fields validation issue (#6334)
- #6332
2025-03-19 18:10:32 +05:30
Sai Nikhil 4289ec0a68 fix: alert and pipeline frequency warning message change (#6318)
This PR fixes couple of issues 
1. changed the warning message to minimum frequency should be -- minutes
when user tries to give less than minimum frequency interval in alert
and pipeline
2. other is made period in sync with frequency so whenever user toggles
the cron so in pipelines we are auto selecting the period according the
frequency so toggling not picking up the latest values of freq to period
2025-03-19 15:09:13 +05:30
Sai Nikhil 55f724ff7c fix: pipeline query node validation issue (#6303)
this PR will introduce a validation check that if the query is
validating then we need to disable the validate and close button so that
user don't click on it multiple times and also changed text from
validate and close to validating while the query is validating.
2025-03-19 09:44:07 +05:30
Taiming Liu 097d906698 fix: _original in pipeline query (#6299)
fix: #6120 

2 adjustments applied to pipeline queries comparing to normal queries,
when the stream has `store_original` set to true

- [x] stop automatically skipping `_original` for `select * ...` queries
- [x] stop automatically adding `_o2_id` when not selected

With these adjustments, users would need to explicitly select those two
fields when needed.
2025-03-18 12:40:28 -07:00
Omkar Kesarkhaneandudev bb4f30f21d feat: Actions in Logs and Alert Destinations (#6129)
Co-authored-by: udev <uddhavdave1@gmail.com>
2025-03-18 14:42:30 +05:30
ktx-vaidehi 49e1a35cb1 feat: dashboard havingCondition for aggregation fields (#6252) 2025-03-18 12:25:02 +05:30
Abhay Padamani 20d759eba0 feat: download raw data as csv/json for dashboard panel (#6175)
- #6191 


![image](https://github.com/user-attachments/assets/fadf2649-2853-4bd9-a5c2-e340b1e2f10a)
2025-03-18 10:54:33 +05:30
dependabot[bot] 53edd8f377 chore(deps): bump esbuild and vite in /web (#6285) 2025-03-18 08:45:08 +08:00
Bhargav 3ad2f823fc feat: added updated documentation urls (#5992) 2025-03-17 22:14:14 +05:30
Sai Nikhil 37079bec30 fix: Alert list table changes (#6287)
this PR introduces some changes in alert list those are 
 1. added period , frequency columns in the table 
2. moved condition , description to the expanded row so when user clicks
on row it will get expanded and will be visible
3. the alert name is now trimmed to 50 chars if it is greater than 50
and on hover it will be shown the full.
4. the owner it is greater than 20 then first 10 and last 4 chars will
be visible and remaining between and also added tooltip to view full
owner if is > 20 chars
2025-03-17 20:33:07 +05:30
ktx-vaidehi 4bff435c23 feat: dashboard variables support in html markdown (#6183) 2025-03-17 15:52:30 +05:30
ktx-vaidehi e4dd5a44fe feat: variables filters added support for more regex options (#6186) 2025-03-17 14:00:09 +05:30
Abhay Padamani 87f81355a9 feat: dashboard JSON schema editor (#6226)
- #6227 


![image](https://github.com/user-attachments/assets/316924bb-db4b-4bd0-b357-d43342f1c733)


![image](https://github.com/user-attachments/assets/23293bb2-7091-4305-b969-69a7d98dcfbd)
2025-03-17 12:52:39 +05:30
ktx-vaidehi a30afe587f fix: table chart when dashboard drilldown to logs page, having custom selected passing value of selected row (#6020) 2025-03-17 12:20:16 +05:30
Sai Nikhil e2cfda47fb fix: unflattened data expand in logs page fixed (#6261)
1. This PR fixes the issue in #5993
2025-03-14 14:19:39 +05:30
Sai Nikhil ba1928ea81 fix: search history table revamp (#6254)
1. This PR fixes the #6223
2025-03-14 13:49:36 +05:30
Bhargav 64955ba5a8 fix: first page pagination offset fix (#6260) 2025-03-14 13:00:45 +05:30
Bhargav 0fc1e65fc7 fix: added debounce in stream list filter (#6253) 2025-03-13 22:57:32 +05:30
77a70ef4fa fix: search type to lowercase (#6197)
Co-authored-by: Taiming Liu <liutaiming3@gmail.com>
Co-authored-by: Bhargav <BJP232004@GMAIL.COM>
2025-03-13 21:43:05 +05:30
ktx-vaidehi 2db5a8b041 feat: dashboard set show_symbol bydefault as true (#6193) 2025-03-13 19:57:55 +05:30
Sai Nikhil fde7f66485 fix: splitter limit in management page (#6246)
1. this PR adds the limit for splitter in management page/ settings page
2025-03-13 15:07:43 +05:30
Sai Nikhil b09347d58e fix: dashboards folder search extra padding removed (#6242)
This PR removes the extra padding added around dashboard folder search
and also added some padding the y axis
2025-03-12 12:09:16 +05:30
Bhargav 97ca4db1eb fix: cluster info in values api. (#6241)
issue #6225
2025-03-12 11:24:39 +05:30
Sai Nikhil 059fb9d268 fix: Dashboard folders improvements (#6211)
1. added search feature for folders
2. added navigation to respective folder when user clicks on any folder
name when using search across folders feature
2025-03-10 16:12:00 +05:30
Sai Nikhil 72aaa8d67a fix: pipeline query node improvements (#6188)
1.  validate and close  text instead of save button 
2. when user selects stream name query wipes out if any previous query
is there
3.add the click event on whole expand bar 
4. after opening the sidebar clicking on the SQL editor moves the focus
away from the SQL editor
5. remove the pipeline view on the row and introduce a eye icon in
actions section
6. when user clicks on edit the schema should auto populate respective
to the query
2025-03-10 12:29:26 +05:30
Sai Nikhil 50a2c29492 feat: Import alert feature (#5897)
This PR implements the issue #5200
2025-03-10 10:39:52 +05:30
dependabot[bot] 5059719a1f chore(deps): bump axios from 1.7.7 to 1.8.2 in /web (#6216) 2025-03-08 23:26:06 +08:00