.. | ||
cluster.json | ||
config-demo.json | ||
config.json | ||
env-template.txt | ||
generate-subcluster.pl | ||
README_TOKENS.md | ||
README.md |
Intro
cc-backend requires a configuration file that specifies the cluster systems to be used.
To override the default, specify the location of a json configuration file with the -config <file path>
command line option.
All security-related configurations, e.g. keys and passwords, are set using
environment variables.
It is supported to set these by means of a .env
file in the project root.
Configuration Options
addr
: Type string. Address where the http (or https) server will listen on (for example: 'localhost:80'). Default:8080
.user
: Type string. Drop root permissions once .env was read and the port was taken. Only applicable if using privileged port.group
: Type string. Drop root permissions once .env was read and the port was taken. Only applicable if using privileged port.disable-authentication
: Type bool. Disable authentication (for everything: API, Web-UI, ...). Defaultfalse
.embed-static-files
: Type bool. If all files inweb/frontend/public
should be served from within the binary itself (they are embedded) or not. Defaulttrue
.static-files
: Type string. Folder where static assets can be found, ifembed-static-files
isfalse
. No default.db-driver
: Type string. 'sqlite3' or 'mysql' (mysql will work for mariadb as well). Defaultsqlite3
.db
: Type string. For sqlite3 a filename, for mysql a DSN in this format: https://github.com/go-sql-driver/mysql#dsn-data-source-name (Without query parameters!). Default:./var/job.db
.job-archive
: Type object.kind
: Type string. At them moment only file is supported as value.path
: Type string. Path to the job-archive. Default:./var/job-archive
.compression
: Type integer. Setup automatic compression for jobs older than number of days.retention
: Type object.policy
: Type string (required). Retention policy. Possible values none, delete, move.includeDB
: Type boolean. Also remove jobs from database.age
: Type integer. Act on jobs with startTime older than age (in days).location
: Type string. The target directory for retention. Only applicable for retention policy move.
disable-archive
: Type bool. Keep all metric data in the metric data repositories, do not write to the job-archive. Defaultfalse
.validate
: Type bool. Validate all input json documents against json schema.session-max-age
: Type string. Specifies for how long a session shall be valid as a string parsable by time.ParseDuration(). If 0 or empty, the session/token does not expire! Default168h
.https-cert-file
andhttps-key-file
: Type string. If both those options are not empty, use HTTPS using those certificates.redirect-http-to
: Type string. If not the empty string andaddr
does not end in ":80", redirect every request incoming at port 80 to that url.machine-state-dir
: Type string. Where to store MachineState files. TODO: Explain in more detail!stop-jobs-exceeding-walltime
: Type int. If not zero, automatically mark jobs as stopped running X seconds longer than their walltime. Only applies if walltime is set for job. Default0
.short-running-jobs-duration
: Type int. Do not show running jobs shorter than X seconds. Default300
.jwts
: Type object (required). For JWT Authentication.max-age
: Type string (required). Configure how long a token is valid. As string parsable by time.ParseDuration().cookieName
: Type string. Cookie that should be checked for a JWT token.vaidateUser
: Type boolean. Deny login for users not in database (but defined in JWT). Overwrite roles in JWT with database roles.trustedIssuer
: Type string. Issuer that should be accepted when validating external JWTs.syncUserOnLogin
: Type boolean. Add non-existent user to DB at login attempt with values provided in JWT.
ldap
: Type object. For LDAP Authentication and user synchronisation. Defaultnil
.url
: Type string (required). URL of LDAP directory server.user_base
: Type string (required). Base DN of user tree root.search_dn
: Type string (required). DN for authenticating LDAP admin account with general read rights.user_bind
: Type string (required). Expression used to authenticate users via LDAP bind. Must containuid={username}
.user_filter
: Type string (required). Filter to extract users for syncing.username_attr
: Type string. Attribute with full user name. Defaults togecos
if not provided.sync_interval
: Type string. Interval used for syncing local user table with LDAP directory. Parsed using time.ParseDuration.sync_del_old_users
: Type boolean. Delete obsolete users in database.syncUserOnLogin
: Type boolean. Add non-existent user to DB at login attempt if user exists in Ldap directory.
clusters
: Type array of objects (required)name
: Type string. The name of the cluster.metricDataRepository
: Type object with properties:kind
(Type string, can be one ofcc-metric-store
,influxdb
),url
(Type string),token
(Type string)filterRanges
Type object. This option controls the slider ranges for the UI controls of numNodes, duration, and startTime. Example:
"filterRanges": { "numNodes": { "from": 1, "to": 64 }, "duration": { "from": 0, "to": 86400 }, "startTime": { "from": "2022-01-01T00:00:00Z", "to": null } }
ui-defaults
: Type object. Default configuration for ui views. If overwritten, all options must be provided! Most options can be overwritten by the user via the web interface.analysis_view_histogramMetrics
: Type string array. Metrics to show as job count histograms in analysis view. Default["flops_any", "mem_bw", "mem_used"]
.analysis_view_scatterPlotMetrics
: Type array of string array. Initial scatter plot configuration in analysis view. Default[["flops_any", "mem_bw"], ["flops_any", "cpu_load"], ["cpu_load", "mem_bw"]]
.job_view_nodestats_selectedMetrics
: Type string array. Initial metrics shown in node statistics table of single job view. Default["flops_any", "mem_bw", "mem_used"]
.job_view_polarPlotMetrics
: Type string array. Metrics shown in polar plot of single job view. Default["flops_any", "mem_bw", "mem_used", "net_bw", "file_bw"]
.job_view_selectedMetrics
: Type string array. Default["flops_any", "mem_bw", "mem_used"]
.plot_general_colorBackground
: Type bool. Color plot background according to job average threshold limits. Defaulttrue
.plot_general_colorscheme
: Type string array. Initial color scheme. Default"#00bfff", "#0000ff", "#ff00ff", "#ff0000", "#ff8000", "#ffff00", "#80ff00"
.plot_general_lineWidth
: Type int. Initial linewidth. Default3
.plot_list_jobsPerPage
: Type int. Jobs shown per page in job lists. Default50
.plot_list_selectedMetrics
: Type string array. Initial metric plots shown in jobs lists. Default"cpu_load", "ipc", "mem_used", "flops_any", "mem_bw"
.plot_view_plotsPerRow
: Type int. Number of plots per row in single job view. Default3
.plot_view_showPolarplot
: Type bool. Option to toggle polar plot in single job view. Defaulttrue
.plot_view_showRoofline
: Type bool. Option to toggle roofline plot in single job view. Defaulttrue
.plot_view_showStatTable
: Type bool. Option to toggle the node statistic table in single job view. Defaulttrue
.system_view_selectedMetric
: Type string. Initial metric shown in system view. Defaultcpu_load
.
Some of the ui-defaults
values can be appended by :<clustername>
in order to have different settings depending on the current cluster. Those are notably job_view_nodestats_selectedMetrics
, job_view_polarPlotMetrics
, job_view_selectedMetrics
and plot_list_selectedMetrics
.
Environment Variables
An example env file is found in this directory. Copy it to .env
in the project root and adapt it for your needs.
JWT_PUBLIC_KEY
andJWT_PRIVATE_KEY
: Base64 encoded Ed25519 keys used for JSON Web Token (JWT) authentication. You can generate your own keypair usinggo run ./cmd/gen-keypair/gen-keypair.go
. More information in README_TOKENS.md.SESSION_KEY
: Some random bytes used as secret for cookie-based sessions.LDAP_ADMIN_PASSWORD
: The LDAP admin user password (optional).CROSS_LOGIN_JWT_HS512_KEY
: Used for token based logins via another authentication service.LOGLEVEL
: Can beerr
,warn
,info
ordebug
(optional,warn
by default). Can be used to reduce logging.