-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
68dffae
commit 57d9c4c
Showing
15 changed files
with
171 additions
and
70 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
name: build documentation | ||
on: [push, pull_request] | ||
# Declare default permissions as read only. | ||
permissions: read-all | ||
jobs: | ||
build: | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- name: checkout | ||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | ||
|
||
- name: set up Python | ||
uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 | ||
with: | ||
python-version: '3.10' | ||
|
||
# - name: Markdown Linting Action | ||
# uses: avto-dev/[email protected] | ||
# with: | ||
# rules: '/lint/rules/changelog.js' | ||
# config: '/lint/config/changelog.yml' | ||
# args: '.' | ||
|
||
- name: install mkdocs + plugins | ||
run: | | ||
pip install mkdocs mkdocs-material | ||
pip list | grep mkdocs | ||
mkdocs --version | ||
- name: build | ||
run: mkdocs build --strict |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -146,3 +146,4 @@ public.cert | |
idp_metadata.xml | ||
|
||
.DS_Store | ||
.site/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,20 +3,15 @@ | |
|
||
[![DOI](https://zenodo.org/badge/549763009.svg)](https://zenodo.org/badge/latestdoi/549763009) | ||
|
||
This web portal is intended to give HPC users a view of the overall use of the HPC cluster and their use. This portal is using the information collected on compute nodes and management servers to produce the information in the various modules: | ||
This web portal is intended to give HPC users a view of the overall use of the HPC cluster and their use. This portal uses the information collected on compute nodes and management servers to produce the information in the various modules: | ||
|
||
* [jobstats](docs/jobstats.md) | ||
* [accountstats](docs/accountstats.md) | ||
* [cloudstats](docs/cloudstats.md) | ||
* [quotas](docs/quotas.md) | ||
* [top](docs/top.md) | ||
* [usersummary](docs/usersummary.md) | ||
[Documentation](docs/index.md) | ||
|
||
Some examples of the available graphs are displayed in the documentation of each module. | ||
|
||
This portal is made to be modular, some modules can be disabled if the data required is not needed or collected. Some modules have optional dependencies and will hide some graphs if the data is not available. | ||
|
||
This portal also supports Openstack, the users can see their use without having to install a monitoring agent in their VM in their OpenStack VMs. | ||
This portal also supports OpenStack, the users can see their use without having to install a monitoring agent in their VM in their OpenStack VMs. | ||
|
||
Staff members can also see the use of any users to help them optimize their use of HPC and OpenStack clusters. | ||
|
||
|
@@ -26,7 +21,7 @@ Some information collected is also available for the general public like the num | |
## Design | ||
Performance metrics are stored in Prometheus, multiple exporters are used to gather this data, and most are optional. | ||
|
||
The Django portal will also access various MySQL databases like the database of Slurm and Robinhood (if installed) to gather some information. Timeseries are stored with Prometheus for better performance. Compatible alternatives to Prometheus like Thanos, VictoriaMetrics, and Grafana Mimir should work without any problems (Thanos is used in production). Recorder rules in Prometheus are used to pre-aggregate some stats for the portal. | ||
The Django portal will also access various MySQL databases like the database of Slurm and Robinhood (if installed) to gather some information. Time series are stored with Prometheus for better performance. Compatible alternatives to Prometheus like Thanos, VictoriaMetrics, and Grafana Mimir should work without any problems (Thanos is used in production). Recorder rules in Prometheus are used to pre-aggregate some stats for the portal. | ||
|
||
![Architecture diagram](docs/userportal.png) | ||
|
||
|
@@ -35,42 +30,3 @@ Various data sources are used to populate the content of this portal. Most of th | |
Some pre-aggregation is done using recorder rules in Prometheus. The required recorder rules are documented in the data sources documentation. | ||
|
||
[Data sources documentation](docs/data.md) | ||
|
||
## Test environment | ||
A test environment using the local `uid` resolver and dummies allocations is provided to test the portal. | ||
|
||
To use it, copy `example/local.py` to `userportal/local.py`. The other functions are documented in `common.py` if any other overrides are needed for your environment. | ||
|
||
To quickly test and bypass authentication, add this line to `userportal/settings/99-local.py`. Other local configuration can be added in this file to override the default settings. | ||
|
||
``` | ||
AUTHENTICATION_BACKENDS.insert(0, 'userportal.authentication.staffRemoteUserBackend') | ||
``` | ||
|
||
This bypasses the authentication and will use the `REMOTE_USER` header or env variable to authenticate the user. This is useful to be able to try the portal without having to set up a full IDP environment. The REMOTE_USER method can be used when using some IDP such as Shibboleth. SAML2 based IDP is now the preferred authentication method for production. | ||
|
||
Examine the default configuration in `userportal/settings/` and override any settings in `99-local.py` as needed. | ||
|
||
Then you can launch the example server with: | ||
|
||
``` | ||
[email protected] [email protected] python manage.py runserver | ||
``` | ||
|
||
This will run the portal with the user `someuser` logged in as a staff member. | ||
|
||
Automated Django tests are also available, they can be run with: | ||
|
||
``` | ||
python manage.py test | ||
``` | ||
|
||
This will test the various modules, including reading job data from the Slurm database and Prometheus. A temporary database for Django is created automatically for the tests. Slurm and Prometheus data are read directly from production data with a read-only account. A representative user, job and account need to be defined to be used in the tests, check the `90-tests.py` file for an example. | ||
|
||
## Production install | ||
The portal can be installed directly on a Centos7 or Rocky8 Apache web server or with Nginx and Gunicorn. The portal can also be deployed as a container with Podman or Kubernetes. Some scripts used to deploy both Nginx and Django containers inside the same pod are provided in the `podman` directory. | ||
The various recommendations for any normal Django production deployment can be followed. | ||
|
||
[Deploying Django](https://docs.djangoproject.com/en/3.2/howto/deployment/) | ||
|
||
[Install documentation](docs/install.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
A test and developpement environment using the local `uid` resolver and dummies allocations is provided to test the portal. | ||
|
||
To use it, copy `example/local.py` to `userportal/local.py`. The other functions are documented in `common.py` if any other overrides are needed for your environment. | ||
|
||
To quickly test and bypass authentication, add this line to `userportal/settings/99-local.py`. Other local configuration can be added in this file to override the default settings. | ||
|
||
``` | ||
AUTHENTICATION_BACKENDS.insert(0, 'userportal.authentication.staffRemoteUserBackend') | ||
``` | ||
|
||
This bypasses the authentication and will use the `REMOTE_USER` header or env variable to authenticate the user. This is useful to be able to try the portal without having to set up a full IDP environment. The REMOTE_USER method can be used when using some IDP such as Shibboleth. SAML2 based IDP is now the preferred authentication method for production. | ||
|
||
Examine the default configuration in `userportal/settings/` and override any settings in `99-local.py` as needed. | ||
|
||
Then you can launch the example server with: | ||
|
||
``` | ||
[email protected] [email protected] python manage.py runserver | ||
``` | ||
|
||
This will run the portal with the user `someuser` logged in as a staff member. | ||
|
||
Automated Django tests are also available, they can be run with: | ||
|
||
``` | ||
python manage.py test | ||
``` | ||
|
||
This will test the various modules, including reading job data from the Slurm database and Prometheus. A temporary database for Django is created automatically for the tests. Slurm and Prometheus data are read directly from production data with a read-only account. A representative user, job and account need to be defined to be used in the tests, check the `90-tests.py` file for an example. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# TrailblazingTurtle | ||
|
||
# Introduction | ||
TrailblazingTurtle is a web portal for HPC clusters. It is designed to be a single point of entry for users to access information about the cluster, their jobs, and the performance of the cluster. It is designed to be modular, so that it can be easily extended to support new features. | ||
|
||
# Design | ||
The Django portal will access various MySQL databases like the database of Slurm and Robinhood (if installed) to gather some information. | ||
|
||
Time series are stored with Prometheus for better performance. Compatible alternatives to Prometheus like Thanos, VictoriaMetrics, and Grafana Mimir should work without any problems (Thanos is used in production). Recorder rules in Prometheus are used to pre-aggregate some stats for the portal. | ||
|
||
![Architecture diagram](userportal.png) | ||
|
||
* [Data collection](data_collection.md) | ||
* [Development](development.md) | ||
* [Installation](installation.md) | ||
* [Modules](modules.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,12 @@ | ||
# Quotas | ||
Each user can see their current storage allocations and who within their group is using the group quota. | ||
|
||
<a href="quota.png"><img src="quota.png" alt="Quotas" width="100"/></a> | ||
## Screenshots | ||
### Quotas | ||
![Quotas](quota.png) | ||
|
||
Info about the HSM state (Tape) is also available. | ||
|
||
<a href="hsm.png"><img src="hsm.png" alt="HSM" width="100"/></a> | ||
### HSM | ||
![HSM](hsm.png) | ||
|
||
## Requirements | ||
* Read-only access to the databases of Robinhood |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
site_name: TrailblazingTurtle | ||
nav: | ||
- 'Home': index.md | ||
- 'Data collection': data.md | ||
- 'Development': development.md | ||
- 'Installation': install.md | ||
- 'Modules': | ||
- 'Job Stats': jobstats.md | ||
- 'Top': top.md | ||
- 'User Summary': usersummary.md | ||
- 'Account Stats': accountstats.md | ||
- 'Cloud Stats': cloudstats.md | ||
- 'Nodes': nodes.md | ||
- 'Quotas': quotas.md | ||
- 'Quotas GPFS': quotasgpfs.md | ||
- 'CF Access': cfaccess.md | ||
|
||
theme: | ||
name: material | ||
# logo: img/logo.png | ||
features: | ||
# enable button to copy code blocks | ||
- content.code.copy | ||
plugins: | ||
- search | ||
markdown_extensions: | ||
# allow for arbitrary nesting of code and content blocks | ||
- pymdownx.superfences: | ||
# syntax highlighting in code blocks and inline code | ||
- pymdownx.highlight | ||
# support for (collapsible) admonitions (notes, tips, etc.) | ||
- admonition | ||
- pymdownx.details | ||
# icon + emoji | ||
# - pymdownx.emoji: | ||
# emoji_index: !!python/name:material.extensions.emoji.twemoji | ||
# emoji_generator: !!python/name:material.extensions.emoji.to_svg |