druid/web-console/README.md

3.8 KiB

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 withing the web-console directory
  2. Install the modules with npm install
  3. 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

Generated/copied dynamically

  • index.html - Entry file for the coordinator console
  • pages/ - The files for the older coordinator console
  • coordinator-console/ - Files for the coordinator 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

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/tutotrial-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. One way of doing this is by using e2e-tests/util/playwright:createBrowserDebug(). For example, the test can be modified to change

import { createBrowserNormal as createBrowser } from './util/playwright'

to

import { createBrowserDebug as createBrowser } from './util/playwright'`