Configuration Parameters
When Control Center is started, it looks for the configuration parameters in the following order:
-
Java System properties, for example:
export JVM_OPTS="-Dserver.port=3004"
-
The
application.properties
file in the Control Center root folder. -
The
application.yml
file in the Control Center root folder.
If the parameter is not found in the above sources, the default value is used.
Use one of the above methods to set the configuration parameters.
Common Properties
Parameter | Description | Default |
---|---|---|
account.activation.enabled |
Enables account activation via email. After signing up, users will have to activate their account via email. Requires Mail Server properties. |
false |
account.activation.timeout |
Activation link’s timeout in milliseconds. |
1800000 |
account.activation.send-timeout |
The timeout for sending activation email, in milliseconds. |
180000 |
account.admin.email |
Email address in the administrator’s account. |
|
account.admin.password |
Administrator account’s password. |
|
account.authentication.interval |
The interval, in milliseconds, between login attempts. Increases exponentially based on the number of failed attempts. |
100 |
account.authentication.max-attempts |
The maximum number of failed attempts allowed before preventing login. An empty value means "infinity," which is the default. |
|
account.authentication.max-interval |
The maximum time an account can be locked for, in milliseconds. |
300000 |
account.signup.enabled |
Whether self-signup is enabled. If disabled, the Signup page is hidden in the UI. Only the registered users, as well as LDAP and Open ID Connect users, can sign in. |
true |
compute.grid.task-execution-timeout |
Task execution timeout in milliseconds. |
60000 |
compute.grid.task-pull-timeout |
Task pull timeout in milliseconds. |
60000 |
control.agent.secret-validation.enabled |
Enables cluster secret validation on handshake. |
true |
control.base-url |
Control Center URL for links in notifications. If the frontend and the backend have different hosts/ports, set the frontend URI as a value (for example, https://example.com:1234). |
|
control.browsers.allowed-origins |
Comma-separated allowed origins for WebSocket browsers endpoint. |
|
control.cache.backups |
The number of backups for all partitioned caches, configured via control.repositories.configurations.* properties. |
|
control.license.filestorage |
Enables file watcher for license updates. |
false |
control.license.path |
License monitoring path for file watcher. |
license/control-center-license.xml |
control.metric-collector.limit-enabled |
Enables the metrics. If false, all the metrics are collected from a cluster. Otherwise, metrics are collected on demand. |
true |
control.metric-collector.limit-file-path |
The path to the YAML file with templates of the metrics that must always be collected. Has no effect if limit-enabled is false. |
classpath:metrics.yml |
control.metric.limit |
The number of metrics allowed per cluster. |
-1 (unlimited) |
control.metric.bufRatio |
Limit coefficient. Allows to temporarily exceed the metric limit, for example set to 1.10 and the limit is 100, once the number of metrics reaches 110, 10 oldest metrics will be deleted. |
1.10 |
control.repositories.auto-migrate-enabled |
Enables automatic migration of internal storage (required for version updates). |
false |
control.repositories.configurations.{cacheName}.dataRegionName |
Custom data region for the cache. The property can be used for storing browser sessions (GccSessionCache) in the in-memory data region. |
|
control.repositories.configurations.GccSessionCache.touchExpirationTimeout |
The number of milliseconds that the user session should be kept alive. Default value is 7 days. |
604800000 |
control.repositories.configurations.QuerySessionCache.create-expiration-timeout |
The period (in milliseconds) after which cache entities (key-value pairs) are removed from |
604800000 |
control.web-socket.send-buffer-size-limit |
Maximum amount of data to buffer when sending messages to a WebSocket session (in bytes). |
|
server.address |
Network address to which Control Center binds. |
0.0.0.0 |
server.port |
Control Center port. This port is used to access Control Center via a web browser. Clusters connect to this port as well. |
3000 |
Rate Limits
Parameter | Description | Default |
---|---|---|
control.rate-limit.ban-duration-seconds |
Duration of the ban in seconds. |
|
control.rate-limit.block-connection-on-detection |
If "true," the cluster is disconnected instead of entering the "limited" state. |
false |
control.rate-limit.candidates |
The number of candidates with top statistics to be banned. |
|
control.rate-limit.computeHardLimit |
Compute hard limit. |
|
control.rate-limit.computeSoftLimit |
Compute soft limit. |
|
control.rate-limit.disconnected-lifetime-seconds |
Lifetime of the rate limit session without connection. |
|
control.rate-limit.hard-limit |
Once this number of messages in the queue is reached, the agents the highest messaging rate are disconnected. |
|
control.rate-limit.lower-threshold |
Count of requests between the previous and the current checks. |
1000 |
control.rate-limit.reconnectBanDuration |
Reconnect ban duration. |
|
control.rate-limit.reconnectRateLimitCount |
Reconnect rate limit. |
|
control.rate-limit.reconnectRateLimitPeriod |
Reconnect rate limit period duration. |
|
control.rate-limit.remove-session-interval-millis |
Scheduled interval for the session removal check, in milliseconds. |
|
control.rate-limit.soft-limit |
Once this number of messages in the queue is reached, all the connected agents are required to reduce the message submission rate. |
|
control.rate-limit.trace-hard-limit |
Once this limit is reached, the cluster will be marked as limited and no traces will be received for the ban duration. |
|
control.rate-limit.trace-soft-limit |
Once this limit is reached, all agents are required to reduce the trace rate. |
|
control.rate-limit.update-interval-millis |
Scheduled interval for the alert check, in milliseconds. |
Disk Space Optimizations
Time-to-Live Limits
You can optimize the disk space utilization by modifying the time-to-live (TTL) values for the relevant entities.
Parameter | Description | Default |
---|---|---|
control.metric.ttl |
Metrics' TTL, after which they are removed (in days). Set to 0 for infinite TTL. |
1 |
control.repositories.configurations.TaskSessionCache.create-expiration-timeout |
Task session TTL (compute) in milliseconds. |
604800000 |
control.repositories.configurations.QuerySessionCache.create-expiration-timeout |
Query session TTL (compute) in milliseconds. |
604800000 |
control.repositories.configurations.SpanCache.create-expiration-timeout |
Span cache TTL (compute) in milliseconds. |
604800000 |
control.repositories.configurations.TraceCache.create-expiration-timeout |
Trace cache TTL (compute) in milliseconds. |
604800000 |
In many scenarios, TTL limitations would be more CPU/disk efficient than Table Size Limits, especially in high-load environments.
Table Size Limits
You can optimize the disk space utilization by limiting the table size (number of records) for the following entities: Running Queries (QuerySession), Traces (Trace, Span), and Compute (TaskSession).
Parameter | Description | Default |
---|---|---|
control.repositories.configurations.QuerySessionCache.limit.count |
If >0, limits the QuerySession (running queries) table size. |
No limit |
control.repositories.configurations.TaskSessionCache.limit.count |
If >0, limits the TaskSession (compute) table size. |
No limit |
control.repositories.configurations.TraceCache.limit.count |
If >0, limits the Trace table size. |
No limit |
control.repositories.configurations.SpanCache.limit.count |
If >0, limits the Span table size. |
No limit |
control.repositories.delete-exceeded-records.interval-millis |
Interval between cleanup iterations in milliseconds. |
10000 |
control.repositories.limit.iteration-timeout |
Maximum duration of a cleanup iteration in seconds. |
30000 |
control.repositories.limit.batch-size |
The maximum batch size of delete operation in records. |
5000 |
When the table size limit is set, Control Center automatically cleans tables in a background process, starting from the oldest records.
The number of records in a table does not precisely correlate to the volume that table occupies on your disk. This corelation depends on a cluster’s specifics, such as the queries and tasks being executed. To get a sense how you need to set limits to you table sizes:
-
Check the sizes of the relevant tables - QuerySession, Trace, Span, and/or TaskSession.
-
Get the number of records in the same tables by from Spring actuator metrics at the following URLs:
-
{cc_base_url}/actuator/metrics/repository.table.Span.size
-
{cc_base_url}actuator/metrics/repository.table.Trace.size
-
{cc_base_url}/actuator/metrics/repository.table.QuerySession.size
-
{cc_base_url}/actuator/metrics/repository.table.TaskSession.size
-
If the relevant tables in your environment are not yet of representative size, you can use our estimates for a 3-node cluster with an average load:
Sessions
Parameter | Description | Default |
---|---|---|
spring.session.cache-name |
The name of the cache for storing web sessions. |
IgniteSessionCache |
spring.session.timeout |
The maximum inactive interval between requests before newly created sessions start getting invalidated (in milliseconds). |
604800000 |
Teams
Parameter | Description | Default |
---|---|---|
account.globalTeam.enabled |
If true, automatically creates a team called Global Team, which includes all active users (local or AD/LDAP-managed). |
false |
account.globalTeam.attachCluster |
If true, and if Global Team is enabled, automatically shares all clusters in the environment with that team. |
false |
SSL/TLS
You can enable SSL/TLS to encrypt communication between your cluster and Control Center.
Parameter | Description | Default |
---|---|---|
server.ssl.ciphers |
A list of SSL ciphers to use. |
|
server.ssl.client-auth |
Client authentication mode. Requires a trust store. Possible values:
|
|
server.ssl.enabled |
Enables SSL support. Takes effect only when a key store is provided. |
true |
server.ssl.enabled-protocols |
Enabled SSL protocols. |
|
server.ssl.key-alias |
The alias of the SSL certificate in the key store. |
|
server.ssl.key-password |
Password for the SSL certificate. |
|
server.ssl.key-store |
Path to the key store that holds the SSL certificate (typically a jks file). |
|
server.ssl.key-store-password |
Password for the key store. |
|
server.ssl.key-store-provider |
Provider for the key store. |
|
server.ssl.key-store-type |
The type of the key store. |
|
server.ssl.protocol |
The SSL protocol to use. |
TLS |
server.ssl.trust-store |
The trust store that holds SSL certificates. |
|
server.ssl.trust-store-password |
The password for the trust store. |
|
server.ssl.trust-store-provider |
Provider for the trust store. |
|
server.ssl.trust-store-type |
The type of the trust store. |
Mail Server
Control Center requires mail server parameters to send email notification and account confirmation emails.
Parameter | Description | Default |
---|---|---|
spring.mail.default-encoding |
Default MimeMessage encoding. |
UTF-8 |
spring.mail.host |
SMTP server host. For instance, |
|
spring.mail.jndi-name |
Session JNDI name. When set, takes precedence over other Session settings. |
|
spring.mail.password |
Login password of the SMTP server. |
|
spring.mail.port |
SMTP server port. |
|
spring.mail.properties.* |
Additional JavaMail Session properties. |
|
spring.mail.protocol |
Protocol used by the SMTP server. |
smtp |
spring.mail.test-connection |
Test that the mail server is available on startup. |
false |
spring.mail.username |
Login user of the SMTP server. |
SMS Provider
Control Center supports SMS alerts via Vonage communication provider.
-
Sign up at https://www.vonage.com/.
-
Get your api key and api secret. See https://developer.nexmo.com/concepts/guides/authentication#api-key-and-secret.
-
Specify the api key and secret in the following properties:
Parameter | Description |
---|---|
nexmo.creds.api-key |
The API key. |
nexmo.creds.api-secret |
The API secret. |
nexmo.creds.from |
The name or number the message is sent from. |
Active Directory and LDAP
You can configure the Control Center to integrate with Active Directory or LDAP to store user data externally. As every authentication request leads to Active Directory or LDAP server and no caching is performed, it is possible to log in as a new user once it is created.
Active Directory and LDAP integrations have some limitations that you should be aware of before configuring the Control Center to use them. See the list of limitations below:
-
Users can only be created by adding them to the Active Directory or LDAP server when Active Directory or LDAP integration is enabled. Signing up and creating an admin user with a link from the backend log is not applicable.
-
To become admins, users need to be a part of a special group in Active Directory or LDAP. The group name can be specified using the corresponding configuration properties.
-
The list of users is not displayed on the admin screen when Active Directory or LDAP integration is enabled.
-
Profile information can be modified only on the Active Directory or LDAP server, not through the Control Center interface.
Active Directory
To enable Active Directory authentication, use the following parameters:
Parameter | Required | Description | Example |
---|---|---|---|
spring.activedirectory.admin-role |
Optional |
The name of the user group with admin permissions. |
Domain Admins |
spring.activedirectory.domain |
Optional |
The default domain name to be added to the user login (if no domain is specified). |
gridgain.org |
spring.activedirectory.root-dn |
Required |
The distinguished name. |
dc=gridgain,dc=org |
spring.activedirectory.urls |
Required |
Comma-separated server URLs. |
ldap://localhost:389,ldap://localhost:8389 |
LDAP
To enable LDAP authentication, use the following parameters:
Parameter | Required | Description | Example |
---|---|---|---|
spring.ldap.admin-role |
Optional |
The name of the user group with admin permissions. |
By default, “admin” |
spring.ldap.base |
Required |
Base path from which all operations should originate. |
dc=gridgain,dc=org |
spring.ldap.bind-authenticator.enabled |
Optional |
Enables authenticator, which binds as a user. |
By default, “false” |
spring.ldap.password-comparison-authenticator.password-attribute-name |
Optional |
Name of the field where the password is stored. |
By default, “userPassword” |
spring.ldap.password-comparison-authenticator.userDnPatterns |
Optional |
Sets the pattern that is used to supply a Distinguished Name for the user. The pattern argument {0} contains the username. |
spring.ldap.password-comparison-authenticator.userDnPatterns[0]="uid={0},ou=people" |
spring.ldap.urls |
Required |
LDAP URLs of the server, separated by comma. |
ldap://localhost:389,ldap://localhost:8389 |
spring.ldap.user-details.groupMemberAttributeName |
Optional |
Name of the multi-valued attribute that holds the DNs of users who are members of a group. |
By default, “uniquemember” |
spring.ldap.user-details.groupRoleAttribute |
Optional |
The ID of the attribute that contains the role name for a group. |
By default, “cn” |
spring.ldap.user-details.groupSearchBase |
Optional |
The Distinguished Name under which groups are stored. |
ou=groups |
spring.ldap.user-details.userSearchBase |
Optional |
The Distinguished Name under which users are stored. |
ou=people |
spring.ldap.user-details.userSearchFilter |
Optional |
The filter expression used in the user search. This is an LDAP search filter (as defined in 'RFC 2254') with optional arguments. |
uid={0} |
OpenID Configuration
You can set up the OpenID authentication as described in the Connecting to OpenID provider section. To enable OpenID authentication, use the following parameters (replace {name} with your provider name):
Parameter | Required | Description |
---|---|---|
spring.security.oauth2.client.provider.{name} |
Required |
OpenID provider name. Can be anything, but must be consistent with spring.security.oauth2.client.registration.{name} and the name specified in redirect URI. |
spring.security.oauth2.client.provider.{name}.authorization-uri |
Required |
The endpoint that accepts authorization request. Usually provided in the |
spring.security.oauth2.client.provider.{name}.jwk-set-uri |
Required |
The endpoint that holds public keys used to authorize users. Usually provided in the |
spring.security.oauth2.client.provider.{name}.token-uri |
Required |
The endpoint that receives authorization information and returns authorization token. Usually provided in the |
spring.security.oauth2.client.registration.{name} |
Required |
OpenID provider name. Can be anything, but must be consistent with spring.security.oauth2.client.provider.{name} and the name specified in redirect URI. |
spring.security.oauth2.client.registration.{name}.client-id |
Required |
Client ID for Control Center. Provided when you set up OpenID credentials. |
spring.security.oauth2.client.registration.{name}.client-secret |
Required |
Client secret for Control Center. Provided when you set up OpenID credentials. |
GridGain 9 Connector Configuration
To enable and configure the GridGain 9 connector, which is required to for GridGain 9 clusters, use the following parameters:
Parameter | Default | Description |
---|---|---|
connector.enabled |
true |
Enables GridGain 9 connector, which is required to support GridGain 9 monitoring capabilities. |
connector.embedded.port |
Control Center searches for an available port starting from 3100 |
The port used for internal communications between Control Center and the GridGain 9 connector. |
connector.cluster.monitoring.heartbeat-liveness-timeout |
5000 |
The GridGain 9 heartbeat timeout, in milliseconds. If the last heartbeat is older than this value, the cluster is considered disconnected. |
connector.cluster.monitoring.heartbeat-interval |
1000 |
The interval between the GridGain 9 cluster’s heartbeats, in milliseconds. |
connector.cluster.monitoring.timeout |
2000 |
The monitoring cycle timeout in milliseconds. |
connector.cluster.monitoring.interval |
2000 |
The interval between monitoring cycles in milliseconds. |
connector.sql.execute-timeout |
1 |
The timeout of SQL script execution in hours. |
connector.sql.query-timeout |
1 |
The timeout of SQL query execution in 1 hours. |
connector.sql.fetch-timeout |
10 |
The timeout of cursor fetch execution in minutes. |
connector.sql.cursor-timeout |
1 |
The cursor lifetime duration in hours. If cursor in not fetched within this period, it is closed. |
© 2024 GridGain Systems, Inc. All Rights Reserved. Privacy Policy | Legal Notices. GridGain® is a registered trademark of GridGain Systems, Inc.
Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation.