The web dashboard is work in progress towards the new Flink runtime monitor. In particular, it will provide the following missing features of the current web dashboard:
The dashboard listens at http://localhost:8081
.
The new web dashboard is work in progress. It starts an HTTP server (by default at port 8081) that serves the new web pages and additional background requests.
The server side of the dashboard is implemented using Netty with Netty Router for REST paths. The framework has very lightweight dependencies.
The code is regular Java code built via Maven. To add additional request handlers, follow the example of the org.apache.flink.runtime.webmonitor.handlers.JobSummaryHandler
.
The web dashboard is implemented using Angular. The dashboard build infrastructure uses node.js.
Depending on your version of Linux, Windows or MacOS, you may need to manually install node.js
Install node.js by following these instructions.
Verify that the installed version is at least 18.19.1, via node --version
.
First install brew by following these instructions.
Install node.js via:
brew install node
The build process downloads all requires libraries via the node.js package management tool (npm) The final build tool is @angular/cli.
cd flink-runtime-web/web-dashboard npm install npm run build
The dashboard code is under /src
. The result of the build process is under /web
.
When developing the dashboard, every change needs to recompile the files and update the server:
cd flink-runtime-web/web-dashboard npm run build cd ../../flink-dist mvn -DskipTests clean package
To simplify continuous development, one can use a standalone proxy server, together with automatic re-compilation:
npm run proxy
(You can modify the proxy target in the proxy.conf.json
, the default proxy target is localhost:8081
)http://localhost:4200
Tips: Before committing, make sure you've run
npm run lint-staged
and that no errors are reported.
$ npm run lint
Tip: If you‘ve made a modification to any of the dependencies, make sure you’ve run
dev/generate_notice
before committing to update theNOTICE
file.
./web-dashboard/dev/generate_notice.sh