This application:
- collects information from Airflow to display in a nice easy-to-use screen,
- provides a REST endpoint for other programs to retrieve the data it collects,
- provides a client library for those programs to use the retrieved data.
In production, it is composed of two distinct pieces:
- A Rust-based backend that periodically collects information to assemble in the right format, and serves it to clients via REST API.
- A collection of compiled TypeScript and CSS files that form the Web client, which (when loaded by the browser) polls the backend and displays the data returned by the backend. This collection of files is also served by the backend.
Find the live dashboard in production here
See frontend/README.md for information on the frontend.
To upgrade the dashboard in production, simply approve the latest PR created in the K8s repo by this repository's release automation. For more information, consult the relevant document.
The backend server must have the following environment variables set to the correct value (though sometimes the defaults are OK):
AIRFLOW_URLset to the complete (with user and password) URL of the Airflow server to use.FRONTEND_STATIC_DIRset to the path that contains the builtdist/clientfrontend assets.BACKEND_HOSTset to the host and port you want to serve on (the default only listens on localhost, which is not good for production -- only for development).RUST_LOGset toinfoideally to observe at least log messages of info level and above.MAX_ROLLOUTSoptionally set to a nonzero positive integer to limit the number of rollouts (default 10). This determines the number of rollouts per rollout kind fetched during each update.REFRESH_INTERVALoptionally set to a nonzero positive integer as the number of seconds to wait between queries to Airflow.