Giter Site home page Giter Site logo

parseablehq / console Goto Github PK

View Code? Open in Web Editor NEW
19.0 19.0 32.0 9.56 MB

Frontend Client for Parseable. Parseable is a cloud native log storage and management for Kubernetes, containerised workloads

Home Page: https://parseable.com

License: GNU Affero General Public License v3.0

JavaScript 0.24% HTML 0.16% TypeScript 88.57% CSS 11.02%
cloud-native containers docker hacktoberfest javascript kubernetes log-storage react

console's People

Contributors

abdul-hafeez-galib avatar aixart12 avatar aksa12 avatar aldrinjenson avatar ameen4455 avatar balaji-jr avatar deepsource-autofix[bot] avatar dependabot[bot] avatar edendattox avatar github-actions[bot] avatar jaison080 avatar kartik-gupta-ij avatar kunalsin9h avatar nikhilsinhaparseable avatar nitisht avatar programmershri avatar ryiski avatar ssd71 avatar suryashakti avatar trueleo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

console's Issues

Sort log records by time field in reverse order

Right now, Parseable Console queries logs in the form of select * from <stream> order by <time>. Can we sort log records by time field in reverse order, like select * from <stream> order by <time> desc?

Refresh interval for a given data range.

When the time range is set to say Last 10 minutes - we fetch the data at that point in time (range select button click) and display it to the user.

But now as new data comes in user may want to refresh the view automatically. We need a refresh interval button which lets users set a refresh interval of 1s, 2s, 5s, 20s, 1min.

User management

There are five entities in Parseable Access Control model - Action, Privilege, Resource, Role and User. Below section explains each of these entities in detail.

Admin, Editor, Writer and Reader. Below is the list of actions allowed for each Privilege.

Admin: All Actions.
Editor: Ingest, Query, CreateStream, ListStream, GetSchema, GetStats, GetRetention, PutRetention, PutAlert, GetAlert.
Writer: Ingest, Query, GetSchema, GetStats, GetRetention, PutAlert, GetAlert.
Reader: Query, GetSchema, GetStats, GetRetention, GetAlert.

Allow sorting of a given column

Currently we allow filtering values from inside a single column. We should also allow sorting (increasing & decreasing order) for each column.

Store columns displayed

It would be useful to keep what columns are shown and restore the same config on page refresh. Maybe session storage or uri query params can be used for that ?

Add settings page

Add a settings page in the console. For now we can start with a readonly page

  • Showing all the env vars (that start with P_)
  • Redact the fields P_S3_SECRET_KEY and P_PASSWORD.

Search query not working properly from console

When console tries to fetch a field like this

'{
    "endTime": "2022-09-01T11:43:00+00:00",
    "query": "select * from frontend order by datetime limit 10  ",
    "startTime": "2022-08-31T11:43:00+00:00"
}'

The query fails with datafusion error, but same query seems to work fine from postman / curl etc

Console doesn't show stream data for large streams

To see this in action, open the Parseable demo site:

https://demo.parseable.io (creds: admin,admin). Select the minioaudit stream and select the time range to two months. You should see an empty page.

But if you query the same stream via curl (with command below), you'll see data present there.

curl --location 'https://demo.parseable.io/api/v1/query' \
--header 'Authorization: Basic YWRtaW46YWRtaW4=' \
--header 'Content-Type: application/json' \
--data '{
    "query":"select COUNT(*) from minioaudit",
    "startTime":"2023-02-14T00:00:00+00:00",
    "endTime":"2023-02-20T23:59:00+00:00"
}'

UI Minor fixes

  • Disable auto refresh on focus. (fixed by #6 )
  • Improve the date time picker design
  • Date picker should show the time zone (current computer's time zone) and then convert the chosen date time to UTC before making the backend API call.

Browser crashed because of no limits

While using the Query panel, I ran the following query which pulled in millions of logs and caused the browser to crash:

SELECT * FROM vectordemo where status='200';

2023-09-13_19-55

Ideally, if the user hasn't specified any limit, then a default limit should be applied to prevent this. Metabase defaults to 2000, depending on the UI performance of the Parseable components a similar limit can be applied as well.

Console crashes when a query failed

When a query fails and the response status is not 200, instead 400 or some other failed status. The console goes blank. It should instead show the page and a human / user understandable error message.

Handle no log stream scenario properly

If there is no log stream, the dashboard goes blank - we need to instead load the page and just say - No log streams found on the log stream drop down.

Feature Request: named saved filters in Logs page

It would be great to add ability to save filter set in Logs page. For example, I need to show only error logs with column "status" equals 500. It'd be more convenient to select saved filter in filter list.
And please add filter parameters to the query string - in this case I would add a link with predefined filter to bookmarks in browser.

Fix linter issues

Current linter issues

[eslint]
src/components/SideDialog/index.js
  Line 2:20:   'useEffect' is defined but never used        no-unused-vars
  Line 7:10:   'isJsonString' is defined but never used     no-unused-vars
  Line 24:10:  'log' is assigned a value but never used     no-unused-vars
  Line 24:15:  'setLog' is assigned a value but never used  no-unused-vars

src/page/Dashboard/DateRangeSeletor.js
  Line 4:10:  'SelectorIcon' is defined but never used    no-unused-vars
  Line 5:10:  'CalculatorIcon' is defined but never used  no-unused-vars

src/page/Dashboard/index.js
  Line 2:30:   'useRef' is defined but never used                     no-unused-vars
  Line 2:38:   'useCallback' is defined but never used                no-unused-vars
  Line 83:10:  'timeZone' is assigned a value but never used          no-unused-vars
  Line 87:10:  'labelSelected' is assigned a value but never used     no-unused-vars
  Line 87:25:  'setLabelSelected' is assigned a value but never used  no-unused-vars
  Line 224:9:  'timeZoneChange' is assigned a value but never used    no-unused-vars

Issues with Table Functionality and Tooltip Display

Description

There are multiple issues observed with the current implementation of table functionality and tooltip display in our project. Below are the details of the issues and a suggestion for improving the tooltip functionality.

1. Filter by Value Scrolling Issue

  • Description: The 'Filter by Value' functionality in tables is not scrolling properly. When users attempt to scroll through the list of values, the data vanishes if scrolled too much.
  • Expected Behavior: The data should remain visible and scroll smoothly, allowing users to select their desired filter values without any interruption.
  • Steps to Reproduce:
    •     Go to the table click on Datetime 
      
    •     Attempt to scroll through the list in  'Filter by Value'
      
    •     Notice that the data disappears or behaves erratically after a certain point.
      

Filter by Value vanishing

2. Tooltip Border Visibility

  • Description: The tooltip displayed over table values lacks a distinct border, causing it to blend in with the table's background. This makes it difficult to read the tooltip's content.
  • Expected Behavior: Tooltips should have a clear border or shadow to distinguish them from the table background, enhancing readability.
  • Suggestion: Implement a subtle border or shadow around tooltips.
    Tooltip blending with background

3. Tooltip Length Condition

  • Suggestion: It is proposed to display tooltips only for table values that exceed a certain length (e.g., more than 20 characters). This will prevent tooltips from cluttering the UI unnecessarily and focus the user's attention on longer values that might be truncated.
  • Rationale: This approach will enhance the user experience by providing additional context only when necessary, keeping the interface clean and focused.
    Tooltip not requied

[Bug] Console doesn't show all data.

When I ask all logs from last 10 minutes, I see correct logs count but I don't see all this logs.
2023-09-12_09-30-35
In this screen I see that there is 26 log items in total, but only one log item in the list. The problem probably is in a query (highlited by an arrow in the screenshot) - startTime time equals 07:29:00, but correct time is 07:20:00.

Title: Enhancements to Explore Page Search Functionality

Issue Summary
- Search functionality on the explore page is activated only by pressing the Enter key.
- No clear button available to reset the search input.
- The reset button fails to clear both the search input and the applied filters.
- Suggestion to implement debounce for API calls in the search input to improve performance and minimize unnecessary requests.
Expected Behavior:
- A clear button should be available to reset the search input.
- The reset button should clear both the search input and any applied filters.
- Debounce should be implemented for search input to efficiently manage API calls.

Jam Link

Allow columns ordering

It would be nice to be able change the columns order and have something custom instead of alphabetically.

In my usecase I have logs from an webserver so I would like the columnes to be in that order : datetime, host, uri, qs, status, ua instead of datetime, host, qs, status, ua, uri.

Maybe the oerder could also be restored on refresh like in #58.

Volunteer to improving the UI

I pretty much love Parseable and can't wait to see it hit production ready, but the UI seems Meh.

I also seem to notice preference issues as mentioned in this issue

I would like to work on starting over using this stack,

  • React
  • Vite
  • Typescript
  • Mantine UI

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.