druid/web-console
Vadim Ogievetsky e8c5893c34
Web console: show segment sizes in rows not bytes (#10496)
* added query error suggestions

* simplify the SQLs

* change segment size display to rows

* suggestion tests

* update snapshot

* make error detection more robust

* remove errant console log

* fix imports

* put suggestion on top

* better error rendering

* format as millions

* add .druid.pid to gitignore

* rename segment_size to segment_rows, fix visability, fix divide by zero

* update snapshots
2020-10-13 13:19:39 -07:00
..
assets Web console: add tile for Azure Event Hubs (via Kafka API) (#10317) 2020-08-31 20:58:52 -07:00
e2e-tests Test UI to trigger auto compaction (#10469) 2020-10-04 00:06:07 -07:00
lib Web console: improve query manager (convert to React hook) (#10360) 2020-09-11 19:42:50 -07:00
script Improve UI E2E test usability (#10466) 2020-10-03 08:21:44 -07:00
src Web console: show segment sizes in rows not bytes (#10496) 2020-10-13 13:19:39 -07:00
.gitignore Web console: show segment sizes in rows not bytes (#10496) 2020-10-13 13:19:39 -07:00
.stylelintrc.json Add scss linter in web console (#7365) 2019-03-28 17:32:01 -07:00
README.md Web console: show segment sizes in rows not bytes (#10496) 2020-10-13 13:19:39 -07:00
babel.config.js Web console: work in IE11 (#8804) 2019-10-31 21:03:05 -07:00
console-config.js Web console: Save query context also (#8395) 2019-08-25 16:56:27 -07:00
favicon.png [ImgBot] Optimize images (#7873) 2019-06-24 21:27:48 -07:00
jest.common.config.js split web-console e2e-tests from unit tests (#10173) 2020-07-12 18:51:08 -07:00
jest.e2e.config.js Web console autocompaction E2E test (#10425) 2020-09-25 18:28:25 -07:00
jest.unit.config.js split web-console e2e-tests from unit tests (#10173) 2020-07-12 18:51:08 -07:00
package-lock.json Update version to 0.21.0-SNAPSHOT (#10450) 2020-10-03 16:08:34 -07:00
package.json Web console: show segment sizes in rows not bytes (#10496) 2020-10-13 13:19:39 -07:00
pom.xml Update version to 0.21.0-SNAPSHOT (#10450) 2020-10-03 16:08:34 -07:00
sasslint.json Web-console: add Supervisor statistics table and show json query manager (#8176) 2019-07-30 12:53:46 -07:00
tsconfig.json Web console basic end-to-end-test (#9595) 2020-04-09 12:38:09 -07:00
tslint.json Web console: Improve data loader styling, enforce stricter TS types (#8001) 2019-06-30 19:33:16 -07:00
unified-console.html Update version to 0.21.0-SNAPSHOT (#10450) 2020-10-03 16:08:34 -07:00
webpack.config.js Web console: work in IE11 (#8804) 2019-10-31 21:03:05 -07:00

README.md

Apache Druid web console

This is the unified Druid web console that servers as a data management layer for Druid.

How to watch and run for development

  1. You need to be within the web-console directory
  2. Install the modules with npm install
  3. Run npm run compile to compile the scss files
  4. Run npm start will start in development mode and will proxy druid requests to localhost:8888

Note: you can provide an environment variable to proxy to a different Druid host like so: druid_host=1.2.3.4:8888 npm start Note: you can provide an environment variable use webpack-bundle-analyzer as a plugin in the build script or like so: BUNDLE_ANALYZER_PLUGIN='TRUE' npm start

To try the console in (say) coordinator mode you could run it as such:

druid_host=localhost:8081 npm start

Description of the directory structure

A lot of the directory structure was created to preserve the existing console structure as much as possible.

As part of this repo:

  • assets/ - The images (and other assets) used within the console
  • e2e-tests/ - End-to-end tests for the console
  • lib/ - A place where some overrides to the react-table stylus files live, this is outside of the normal SCSS build system.
  • public/ - The compiled destination of the file powering this console
  • script/ - Some helper bash scripts for running this console
  • src/ - This directory (together with lib) constitutes all the source code for this console

List of non SQL data reading APIs used

GET /status
GET /druid/indexer/v1/supervisor?full
POST /druid/indexer/v1/worker
GET /druid/indexer/v1/workers
GET /druid/indexer/v1/tasks
GET /druid/coordinator/v1/loadqueue?simple
GET /druid/coordinator/v1/config
GET /druid/coordinator/v1/metadata/datasources?includeUnused
GET /druid/coordinator/v1/rules
GET /druid/coordinator/v1/config/compaction
GET /druid/coordinator/v1/tiers

Updating the list of license files

From the web-console directory run script/licenses

Running End-to-End Tests

From the web-console directory:

  1. Build druid distribution: script/druid build
  2. Start druid cluster: script/druid start
  3. Run end-to-end tests: npm run test-e2e
  4. Stop druid cluster: script/druid stop

If you already have a druid cluster running on the standard ports, the steps to build/start/stop a druid cluster can be skipped.

Debugging

Screenshots

e2e-tests/util/debug.ts:saveScreenshotIfError() is used to save a screenshot of the web console when the test fails. For example, if e2e-tests/tutorial-batch.spec.ts fails, it will create load-data-from-local-disk-error-screenshot.png.

Disabling Headless Mode

Disabling headless mode while running the tests can be helpful. This can be done via the DRUID_E2E_TEST_HEADLESS environment variable, which defaults to true.

Running Against Alternate Web Console

The environment variable DRUID_E2E_TEST_UNIFIED_CONSOLE_PORT can be used to target a web console running on a non-default port (i.e., not port 8888). For example, this environment variable can be used to target the development mode of the web console (started via npm start), which runs on port 18081.