Skip to end of metadata
Go to start of metadata

Configuration Properties

During runtime JFrog Mission Control mainly uses two kinds of top-level layered property sources: node properties and cluster properties.[1]

Node properties

Node properties are local to a Mission Control cluster node. Different nodes may have different sets of properties, and the same node property may have different values on different nodes.

These are layered with a specific set of layers listed below from highest to lowest priority:

LayerTypeRole

system

System

Properties overridden with -D at JVM launch time.

environment

Environment

Properties overridden with an environment variable.

secret

File

Properties overridden with a transient secret file located in jfmc.secrets.location.

file

File

Properties overriden in mission-control.properties.

default

Resource

Default values for node properties that are exposed to end user. They are all commented out by default in mission-control.properties.template. Check list below.

Default node properties

You can override these properties with any kind of override layer (systemenvironmentsecretfile).

Default values:

# Default port on which to run MC.
# server.port=8080

# SSL properties that need to be configured if you want to use MC over HTTPs.
# server.port=8443

# server.ssl.key-store=classpath:keystore.jks
# or:
# server.ssl.key-store=/path/to/keystore

# server.ssl.key-store-password=<keystore_password>

# server.ssl.key-store-type=<keystore_type>

# Recommended protocols to enable and disable (see https://www.jfrog.com/jira/browse/JPD-1874)
# server.ssl.enabled-protocols=TLSv1.2,TLSv1.3
# server.ssl.disabled-protocols=SSL,SSLv2,SSLv2Hello,SSLv3,TLSv1,TLSv1.1


# =================
# Insight
#==================
# insight.url=http://localhost:8088
# jfis.db.username=jfis
# jfis.db.password=password
# jfex.db.username=jfex
# jfex.db.password=password
# jfsc.db.username=jfsc
# jfsc.db.password=password
# elastic.username=admin
# elastic.password=admin
# elastic.node.discovery=true

# =================
# JDBC (postgres)
# =================
# db.type=postgresql
# db.host=localhost
# db.port=5432
# db.name=mission_control
# db.maximum-pool-size=10
# jfmc.db.username=jfmc
# jfmc.db.password=password
# jfmc.db.schema=jfmc_server
# jfmc.db.url=jdbc:${db.type}://${db.host}:${db.port}/${db.name}?currentSchema=${jfmc.db.schema}

Cluster properties

Cluster are properties which are bound to a Mission Control HA cluster as an entity. A cluster property value is the same for all cluster nodes and it would not make sense to override them locally (because doing so would be dangerous for cluster related features). Therefore, there is no way to override locally a cluster property.

These properties are actually layered properties, with a specific set of layers (from top to bottom):

LayerTypeRole

default

JDBC

Values for cluster properties that are exposed to end user. Default values are all commented out in mission-control.db.properties.template. Check list below.

Default cluster properties

You can override any of these properties with any kind of override layer (systemenvironmentsecretfile).

# Call home activation
# callhome.enabled=true
# callhome.schedule=cron:0 0 4 * * ?

# These 2 values are passed to the HTTP client.
# * Connection timeout (seconds) is time that the client should wait to resolve the destination Artifactory host.
# * Socket timeout (seconds) is the time that the client should wait for a response from Artifactory before timing out.
# artifactory.client.connectionTimeout=5
# artifactory.client.socketTimeout=180

# This value is passed to the HTTP client.
# * Connection timeout (seconds) is time that the client should wait to resolve the destination Xray host.
# * Socket timeout (seconds) is the time that the client should wait for a response from Xray before timing out.
# xray.client.connectionTimeout=5
# xray.client.socketTimeout=45

# This value is passed to the HTTP client.
# * Connection timeout (seconds) is time that the client should wait to resolve the destination Distribution host.
# * Socket timeout (seconds) is the time that the client should wait for a response from Distribution before timing out.
# distribution.client.connectionTimeout=5
# distribution.client.socketTimeout=45

# This value is passed to the HTTP client.
# * Connection timeout (seconds) is time that the client should wait to resolve the destination Jenkins host.
# * Socket timeout (seconds) is the time that the client should wait for a response from Jenkins before timing out.
# jenkins.client.connectionTimeout=5
# jenkins.client.socketTimeout=45

# These 2 values are passed to the HTTP client.
# * Connection timeout (seconds) is time that the client should wait to resolve the destination Git host.
# * Socket timeout (seconds) is the time that the client should wait for a response from Git before timing out.
# git.client.connectionTimeout=5
# git.client.socketTimeout=45

# These 2 values are passed to the HTTP client.
# * Connection timeout (seconds) is time that the client should wait to resolve the destination Bintray host.
# * Socket timeout (seconds) is the time that the client should wait for a response from Bintray before timing out.
# bintray.client.connectionTimeout=5
# bintray.client.socketTimeout=45

# ------------------------------------------------------------------------
# Dr config
# ------------------------------------------------------------------------

# replication cronExp default value is '0 0 0 * * ?'
# drconfig.replication.cronExpression=0 0 0 * * ?
# Determines the frequency in which the job that synchronizes DR target instance with the DR master instance.
# drconfig.sync.schedule=cron:0 */5 * * * *
# Time in minutes between two sequential dr replications
# drconfig.replication.cronIncrement=5
# Disable available space detection during DR
# drconfig.space.detection.disabled=false
# DR replication socket timeout (milliseconds)
# drconfig.replication.socketTimeout=15000

# ------------------------------------------------------------------------
# Notification config
# ------------------------------------------------------------------------

# Determines the frequency in which the job that sends notification mail.
# notification.mail.schedule=cron:0 */10 * * * *

# ------------------------------------------------------------------------
# Instance connection config
# ------------------------------------------------------------------------

# Determines the frequency in which the job that update instances connection.
# connection.sync.schedule=cron:0 */5 * * * *

# Determines the delay (milliseconds) between the job that update instances connection.
connection.sync.delay=5000

# ------------------------------------------------------------------------
# A persistent cache is used to store some artifactory data,
# (e.g. config descriptor, instance license type, version etc.)
# The data from the cache is used if the corresponding instance is not online.
# ------------------------------------------------------------------------
# Determines the frequency in which the job that sends a list of artifactory services to insight
insight.services.update.schedule=cron:0 */15 * * * *

# Cron or intervals (seconds) between queries
# refreshing monitored services status, state, replication status etc.
# Info is displayed on the monitoring screen.
# monitoring.configDescriptor.schedule=cron:15 */10 * * * *
# monitoring.connectivityStatus.schedule=cron:*/5 * * * * *
# monitoring.instanceDetails.schedule=cron:30 */1 * * * *
# monitoring.storageInfo.schedule=cron:45 */15 * * * *
# monitoring.git.pull.period=60
# monitoring.git.pullTemplates.schedule=fixedDelay:${monitoring.git.pull.period}000/3000
# monitoring.updateLicenseBucket.schedule=cron:*/20 * * * * *
# monitoring.xray.indexingConfiguration.schedule=cron:0 0 0 */1 * *

# Monitoring thread pool properties
# monitoring.threadPool.maxSize=50
# monitoring.threadPool.minSize=0
# Idle threads max "keep alive" time (in seconds)
# monitoring.threadPool.keepAlive=60

# Monitoring Edge Nodes, enabled by default
monitoring.edge.disabled=false

# Default admin credentials for first-time use of Mission Control.
# users.admin.username=admin
# users.admin.password=password

# Duration of the user session time-out (minutes). If there is no user activity for this amount of time, Mission Control will log out.
# users.token.expiration=60

# Max failed attempt, defaults to 5 times
# users.login.maxFailedAttempt=5

# Account lockout period, defaults to 20 minutes
# users.login.accountLockoutPeriod=20

# =================
# PERMISSIONS
# =================

# The retrieve period of all permissions from Access and cache them in DB
# permission.cache.sync.schedule=cron:0 */5 * * * *

Updating a cluster property

Even if there is no way to override a cluster property specifically for one node, there is a way to update a property value from any cluster node:

  1. Copy the mission-control.db.properties.template, from the etc folder, to mission-control.db.properties.

  2. Uncomment lines matching properties you want to change, and update their values.

  3. Relaunch cluster nodes.

The new values will then be imported and used. The mission-control.db.properties file will be automatically deleted.



1. Cluster properties are always available even on a single node install (which is considered as a single node cluster).

  • No labels