scmaster

The messaging system

Module Configuration

etc/defaults/global.cfg
etc/defaults/scmaster.cfg
etc/global.cfg
etc/scmaster.cfg
~/.seiscomp/global.cfg
~/.seiscomp/scmaster.cfg

scmaster inherits global options.

Note

Modules/plugins may require a license file. The default path to license files is @DATADIR@/licenses/ which can be overridden by global configuration of the parameter gempa.licensePath. Example:

gempa.licensePath = @CONFIGDIR@/licenses
defaultGroups

Default: AMPLITUDE, PICK, LOCATION, MAGNITUDE, FOCMECH, EVENT, QC, PUBLICATION, GUI, INVENTORY, CONFIG, LOGGING, SERVICE_REQUEST, SERVICE_PROVIDE, STATUS_GROUP

Type: list:string

The default set of message groups for each queue. Only used if a queues group list is unset (note: empty is not unset).

queues

Default: production, playback

Type: list:string

Enable messaging queues defined as profile in queues. The profile names are the final queue names.

Note

interface.* Control the messaging interface. The default protocol is “scmp” but “scmps” (secure protocol) is used when valid SSL certificate and key are configured.

interface.bind

Default: 0.0.0.0:18180

Type: ipbind

Local bind address and port of the messaging system. 0.0.0.0:18180 accepts connections from all clients, 127.0.0.1:18180 only from localhost.

interface.acl

Type: list:ipmask

The IP access control list for clients which are allowed to connect to the interface. Separate each IP with a space and put the entire list in double quotes, e.g. "127.0.0.1 192.168.1.2 192.168.0.0/16".

interface.socketPortReuse

Default: true

Type: boolean

SO_REUSEADDR socket option for the TCP listening socket.

Note

interface.ssl.* SSL encryption is used if key and certificate are configured.

interface.ssl.bind

Default: 0.0.0.0:-1

Type: ipbind

Additional local bind address and port of the messaging system in case SSL encryption is active.

interface.ssl.acl

Type: list:ipmask

The IP access control list for clients which are allowed to connect to the interface. See interface.acl for further details.

interface.ssl.socketPortReuse

Default: true

Type: boolean

SO_REUSEADDR socket option for the TCP listening socket.

interface.ssl.key

Type: path

interface.ssl.certificate

Type: path

interface.ssl.verifyPeer

Default: false

Type: boolean

If enabled then the certificate of a connecting client is verified against the servers certificate. It is required that the client certificate is signed by the server certificate otherwise the connection is refused.

Note

queues.* Set the parameters for each messaging queue. The queues are used when listed in the “queues” parameter. Several queues can be used in parallel. For queues with without databases leave the processor parameters empty.

Note

queues.$name.* $name is a placeholder for the name to be used and needs to be added to queues to become active.

queues = a,b
queues.a.value1 = ...
queues.b.value1 = ...
# c is not active because it has not been added
# to the list of queues
queues.c.value1 = ...
queues.$name.groups

Type: list:string

Define the list of message groups added to the queue. If unset, then the defaultGroups will be used. A queue will always add the default group "STATUS_GROUP". This parameter overrides defaultGroups.

queues.$name.acl

Default: 0.0.0.0/0

Type: list:ipmask

The IP access control list for clients which are allowed to join the queue. See interface.acl for further details.

queues.$name.maximumPayloadSize

Default: 1048576

Unit: B

Type: int

The maximum size in bytes of a message to be accepted. Clients which send larger messages will be disconnected. The default is 1MB.

queues.$name.plugins

Type: list:string

List of plugins required by this queue. This is just a convenience parameter to improve configurations readability. The plugins can also be added to the global list of module plugins.

Example: dbstore

queues.$name.processors.messages

Type: string

Interface name. For now, use "dbstore"to use a database.

Use empty for testing or playbacks without a database.

Note

queues.$name.processors.messages.dbstore.* Define the database connection parameters.

queues.$name.processors.messages.dbstore.driver

Type: string

Selected the database driver to use. Database drivers are available through plugins. The default plugin is dbmysql which supports the MYSQL database server. It is activated with the core.plugins parameter.

queues.$name.processors.messages.dbstore.read

Type: string

Set the database read connection which is reported to clients that connect to this server. If a remote setup should be implemented, ensure that the hostname is reachable from the remote computer.

queues.$name.processors.messages.dbstore.write

Type: string

Set the database write connection which is private to scmaster. A separate write connection enables different permissions on the database level for scmaster and clients.

queues.$name.processors.messages.dbstore.proxy

Default: false

Type: boolean

If enabled then the database connection as configured in ‘read’ is not being returned to the client but the URL "proxy://". This URL tells the client to open the database via the websocket proxy at the messaging address, e.g. http://localhost/production/db. The same hostname and queue must be used as for the initial messaging connection.

queues.$name.processors.messages.dbstore.strictVersionMatch

Default: true

Type: boolean

If enabled, the plugin will check the database schema version and refuse to start if the version doesn’t match the latest version. If disabled and the an object needs to be stored, which is incompatible with the database schema, this object is lost. Leave this option enabled unless you know exactly what are you doing and what the consequences are.

http.filebase

Default: @DATADIR@/scmaster/http/

Type: path

The directory served by the http server at staticPath.

http.staticPath

Default: /

Type: string

The URL path at which html files and assets are available. All files under filebase will be served at this URL path.

http.brokerPath

Default: /

Type: string

The URL path at which the broker websocket is available.

toastd plugin

scmaster extension plugin to handle TOAST (Tsunami) related messages and operations.

Note

$name.* $name is a placeholder for the name to be used.

$name.processors.messages.toastd.source

Type: string

Replaces source.address if not set.

$name.processors.messages.toastd.database

Type: string

Configure the source database URL to read tsunami related objects from. If not given then it will be retrieved when connecting to this queue if the dbstore plugin is configured.

$name.processors.messages.toastd.targetGroup

Default: TSUNAMI

Type: string

Defines the messaging target group to send messages to. Note that the group must be part of this queue.

Note

$name.processors.messages.toastd.source.* Grouped configuration options for the SeisComP source connection.

$name.processors.messages.toastd.source.address

Type: string

Configure the SeisComP connection URL. If the string starts with a slash then it is taken as relative queue name of this instance.

$name.processors.messages.toastd.source.subscriptions

Type: list:string

List of groups to subscribe to or to ignore. A group with a prepended dash will be ignored. If no group is defined then all available groups will be subscribed.

Note

$name.processors.messages.toastd.bulletins.* Configuration of bulletin templates in a tree like fashion.

$name.processors.messages.toastd.bulletins.variables

Type: list:string

Defines a list of context variables for the bulletin generation. Each variable must be defined with a Variable type.

$name.processors.messages.toastd.bulletins.templates

Type: list:string

Defines the ordered list of templates.

$name.processors.messages.toastd.bulletins.groups

Type: list:string

Defines the ordered list of templates groups.

Note

$name.processors.messages.toastd.bulletins.variable.$name.* Define a template context variable. $name is a placeholder for the name to be used and needs to be added to variables to become active.

variables = a,b
$name.processors.messages.toastd.bulletins.variable.a.value1 = ...
$name.processors.messages.toastd.bulletins.variable.b.value1 = ...
# c is not active because it has not been added
# to the list of variables
$name.processors.messages.toastd.bulletins.variable.c.value1 = ...
$name.processors.messages.toastd.bulletins.variable.$name.name

Type: string

Name of the variable as being accessed in the template.

$name.processors.messages.toastd.bulletins.variable.$name.value

Type: string

The optional initial value of the variable.

Note

$name.processors.messages.toastd.bulletins.template.$name.* Adds a template which must be linked through the “templates” parameter. $name is a placeholder for the name to be used and needs to be added to templates to become active.

templates = a,b
$name.processors.messages.toastd.bulletins.template.a.value1 = ...
$name.processors.messages.toastd.bulletins.template.b.value1 = ...
# c is not active because it has not been added
# to the list of templates
$name.processors.messages.toastd.bulletins.template.c.value1 = ...
$name.processors.messages.toastd.bulletins.template.$name.id

Type: string

ID of the template.

$name.processors.messages.toastd.bulletins.template.$name.name

Type: string

Name of the template.

$name.processors.messages.toastd.bulletins.template.$name.file

Type: path

Path to template file.

$name.processors.messages.toastd.bulletins.template.$name.requireSimulation

Default: false

Type: boolean

Whether a simulation is required or not to render a bulletin from this template.

$name.processors.messages.toastd.bulletins.template.$name.isInclude

Default: false

Type: boolean

Defines if this template is an include template. Include templates are hidden from live tabs.

Note

$name.processors.messages.toastd.bulletins.group.$name.* Adds a template group which must be linked through the “groups” parameter. $name is a placeholder for the name to be used and needs to be added to groups to become active.

groups = a,b
$name.processors.messages.toastd.bulletins.group.a.value1 = ...
$name.processors.messages.toastd.bulletins.group.b.value1 = ...
# c is not active because it has not been added
# to the list of groups
$name.processors.messages.toastd.bulletins.group.c.value1 = ...
$name.processors.messages.toastd.bulletins.group.$name.name

Type: string

Name of the group.

$name.processors.messages.toastd.bulletins.group.$name.isInclude

Default: false

Type: boolean

Sets the include flag default value for all child templates and child groups.

$name.processors.messages.toastd.bulletins.group.$name.templates

Type: list:string

Defines the ordered list of templates.

$name.processors.messages.toastd.bulletins.group.$name.groups

Type: list:string

Defines the ordered list of templates groups.

Note

$name.processors.messages.toastd.bulletins.group.$name.template.$name.* Adds a template which must be linked through the “templates” parameter. $name is a placeholder for the name to be used and needs to be added to templates to become active.

templates = a,b
$name.processors.messages.toastd.bulletins.group.$name.template.a.value1 = ...
$name.processors.messages.toastd.bulletins.group.$name.template.b.value1 = ...
# c is not active because it has not been added
# to the list of templates
$name.processors.messages.toastd.bulletins.group.$name.template.c.value1 = ...
$name.processors.messages.toastd.bulletins.group.$name.template.$name.id

Type: string

ID of the template.

$name.processors.messages.toastd.bulletins.group.$name.template.$name.name

Type: string

Name of the template.

$name.processors.messages.toastd.bulletins.group.$name.template.$name.file

Type: path

Path to template file.

$name.processors.messages.toastd.bulletins.group.$name.template.$name.requireSimulation

Default: false

Type: boolean

Whether a simulation is required or not to render a bulletin from this template.

$name.processors.messages.toastd.bulletins.group.$name.template.$name.isInclude

Default: false

Type: boolean

Defines if this template is an include template. Include templates are hidden from live tabs.

Note

$name.processors.messages.toastd.bulletins.group.$name.group.$name.* Adds a template group which must be linked through the “groups” parameter. $name is a placeholder for the name to be used and needs to be added to groups to become active.

groups = a,b
$name.processors.messages.toastd.bulletins.group.$name.group.a.value1 = ...
$name.processors.messages.toastd.bulletins.group.$name.group.b.value1 = ...
# c is not active because it has not been added
# to the list of groups
$name.processors.messages.toastd.bulletins.group.$name.group.c.value1 = ...
$name.processors.messages.toastd.bulletins.group.$name.group.$name.name

Type: string

Name of the group.

$name.processors.messages.toastd.bulletins.group.$name.group.$name.templates

Type: list:string

Defines the ordered list of templates.

$name.processors.messages.toastd.bulletins.group.$name.group.$name.groups

Type: list:string

Defines the ordered list of templates groups.

Note

$name.processors.messages.toastd.bulletins.group.$name.group.$name.template.$name.* Adds a template which must be linked through the “templates” parameter. $name is a placeholder for the name to be used and needs to be added to templates to become active.

templates = a,b
$name.processors.messages.toastd.bulletins.group.$name.group.$name.template.a.value1 = ...
$name.processors.messages.toastd.bulletins.group.$name.group.$name.template.b.value1 = ...
# c is not active because it has not been added
# to the list of templates
$name.processors.messages.toastd.bulletins.group.$name.group.$name.template.c.value1 = ...
$name.processors.messages.toastd.bulletins.group.$name.group.$name.template.$name.id

Type: string

ID of the template.

$name.processors.messages.toastd.bulletins.group.$name.group.$name.template.$name.name

Type: string

Name of the template.

$name.processors.messages.toastd.bulletins.group.$name.group.$name.template.$name.file

Type: path

Path to template file.

$name.processors.messages.toastd.bulletins.group.$name.group.$name.template.$name.requireSimulation

Default: false

Type: boolean

Whether a simulation is required or not to render a bulletin from this template.

$name.processors.messages.toastd.bulletins.group.$name.group.$name.template.$name.isInclude

Default: false

Type: boolean

Defines if this template is an include template. Include templates are hidden from live tabs.

Note

$name.processors.messages.toastd.bulletins.group.$name.group.$name.group.$name.* Adds a template group which must be linked through the “groups” parameter. $name is a placeholder for the name to be used and needs to be added to groups to become active.

groups = a,b
$name.processors.messages.toastd.bulletins.group.$name.group.$name.group.a.value1 = ...
$name.processors.messages.toastd.bulletins.group.$name.group.$name.group.b.value1 = ...
# c is not active because it has not been added
# to the list of groups
$name.processors.messages.toastd.bulletins.group.$name.group.$name.group.c.value1 = ...
$name.processors.messages.toastd.bulletins.group.$name.group.$name.group.$name.name

Type: string

Name of the group.

$name.processors.messages.toastd.bulletins.group.$name.group.$name.group.$name.templates

Type: list:string

Defines the ordered list of templates.

Note

$name.processors.messages.toastd.bulletins.group.$name.group.$name.group.$name.template.$name.* Adds a template which must be linked through the “templates” parameter. $name is a placeholder for the name to be used and needs to be added to templates to become active.

templates = a,b
$name.processors.messages.toastd.bulletins.group.$name.group.$name.group.$name.template.a.value1 = ...
$name.processors.messages.toastd.bulletins.group.$name.group.$name.group.$name.template.b.value1 = ...
# c is not active because it has not been added
# to the list of templates
$name.processors.messages.toastd.bulletins.group.$name.group.$name.group.$name.template.c.value1 = ...
$name.processors.messages.toastd.bulletins.group.$name.group.$name.group.$name.template.$name.id

Type: string

ID of the template.

$name.processors.messages.toastd.bulletins.group.$name.group.$name.group.$name.template.$name.name

Type: string

Name of the template.

$name.processors.messages.toastd.bulletins.group.$name.group.$name.group.$name.template.$name.file

Type: path

Path to template file.

$name.processors.messages.toastd.bulletins.group.$name.group.$name.group.$name.template.$name.requireSimulation

Default: false

Type: boolean

Whether a simulation is required or not to render a bulletin from this template.

$name.processors.messages.toastd.bulletins.group.$name.group.$name.group.$name.template.$name.isInclude

Default: false

Type: boolean

Defines if this template is an include template. Include templates are hidden from live tabs.

Note

$name.processors.messages.toastd.gss.* gempa simulation server related settings

$name.processors.messages.toastd.gss.url

Type: string

The GSS request URL for the native protocol.

$name.processors.messages.toastd.gss.browserURL

Type: string

The HTTP URL to browse products.

$name.processors.messages.toastd.gss.timeout

Default: -1

Unit: s

Type: int

Timeout in seconds which is used to detect dead connections and to attempt a reconnections. If the GSS connection does neither read nor write within the given timeout, a ping request will be sent. If a second ping request should be sent while the first hasn’t been answered to by GSS then the connection to GSS will be reconnected.

Note

$name.processors.messages.toastd.matching.* Configure matching criteria which decide whether a similar simulation already exists or if a new simulation should be created. This is useful to reduce the number of simulations which are created in order to save disk space and computing time and to make the selection of the best simulation easier.

$name.processors.messages.toastd.matching.magnitude.variance

Default: 0.1

Type: double

Maximum magnitude variance. The matching options control whether a new simulation (scenario) is actually generated. It is not generated if a simulation already exists for which magnitude, depth, location and fault plane all are within the configured variance with respect to the new simulation.

$name.processors.messages.toastd.matching.depth.variance

Default: 30.0

Unit: km

Type: double

Maximum depth variance. For more information see the config option matching.magnitude.variance.

$name.processors.messages.toastd.matching.location.variance

Default: 0.1

Unit: degree

Type: double

Maximum location variance. For more information see the config option matching.magnitude.variance.

$name.processors.messages.toastd.matching.faultPlane.variance

Default: 0.15

Unit: 0, 1

Type: double

Maximum fault plane orientation residual in the range [0, 1]. If set to 0, only identical fault planes are considered to match, if set to 1, fault planes are always considered to match. The residual is computed by mapping the rotation angle between fault planes from [0°, 90°] to [0, 1] using a sigmoid (angles larger than 90° are mapped to 1). For more information see the config option matching.magnitude.variance.

$name.processors.messages.toastd.profiles.automatic

Type: list:string

A list of simulation profile names which are executed automatically when an incident is created by toastd or if the incident updates outside of the matching criteria.

Note

$name.processors.messages.toastd.profiles.automatic.* Configure automatic simulation profiles.

Note

$name.processors.messages.toastd.profiles.automatic.$name.* $name is a placeholder for the name to be used and needs to be added to automatic to become active.

automatic = a,b
$name.processors.messages.toastd.profiles.automatic.a.value1 = ...
$name.processors.messages.toastd.profiles.automatic.b.value1 = ...
# c is not active because it has not been added
# to the list of automatic
$name.processors.messages.toastd.profiles.automatic.c.value1 = ...
$name.processors.messages.toastd.profiles.automatic.$name.backend

Type: string

The simulation backend to be used. Spelling as shown in the backend selection of the manual simulation dialog. Examples: "EasyWave2", "Geoware TTT". As always, use quotation marks if expression contains spaces.

$name.processors.messages.toastd.profiles.automatic.$name.parameters

Type: list:string

A list of custom key-value items (separated by comma) which are forwarded to the backend. Example for EasyWave2: maxTime:120,gpu:true.

Note

$name.processors.messages.toastd.patches.* Configure settings for the automatic patches (rupture plane) generation.

$name.processors.messages.toastd.patches.width

Default: 50

Unit: km

Type: int

The patch width option is not used at this time.

$name.processors.messages.toastd.patches.depthMode

Default: 1

Type: int

Mode of the automatic depth correction. The following modes are available: 0 = Off, 1 = Adjust the depth to avoid negative z-top, 2 = Abort the patch generation in case of negative z-top

$name.processors.messages.toastd.patches.maxFaultDist

Default: 1

Unit: degree

Type: double

Maximum horizontal distance between epicenter and closest fault point allowed for automatic patch generation.

$name.processors.messages.toastd.patches.maxFootWallDist

Default: -1

Unit: degree

Type: double

Deprecated: Maximum distance between epicenter and closest fault point if epicenter is on foot wall. Note that this parameter is deprecated, use ‘maxFaultDist’ instead.

$name.processors.messages.toastd.patches.maxHangingWallDist

Default: -1

Unit: degree

Type: double

Deprecated: Maximum distance between epicenter and closest fault point if epicenter is on hanging wall. Note that this parameter is deprecated, use ‘maxFaultDist’ instead.

$name.processors.messages.toastd.patches.maxDip

Default: 80.0

Unit: degree

Type: double

Maximum dip in degree.

$name.processors.messages.toastd.patches.maxRakeVariance

Default: 20.0

Unit: degree

Type: double

Maximum variance of the rake from 90 degree.

$name.processors.messages.toastd.patches.extrapolateFault

Default: false

Type: boolean

Selection of this option will extrapolate fault lines beyond their endpoints, so that they can provide patch generation information for epicenters otherwise not covered.

Note

$name.processors.messages.toastd.trigger.* Configure trigger criteria which control whether an incident or a simulation is created automatically.

$name.processors.messages.toastd.trigger.incident.enable

Default: true

Type: boolean

If activated then incidents will be triggered automatically from SeisComP events based on defined criteria.

$name.processors.messages.toastd.trigger.incident.maximumDepth

Default: 100

Unit: km

Type: double

Maximum depth of an event to trigger the automatic incident creation.

$name.processors.messages.toastd.trigger.incident.minimumMagnitude

Default: 6.0

Type: double

Minimum magnitude of an event to trigger the automatic incident creation.

$name.processors.messages.toastd.trigger.origin.mode

Type: string

Evaluation mode of origins to trigger simulations for. Supported modes are manual and automatic. If no mode is specified, no filter is applied.

$name.processors.messages.toastd.trigger.simulation.maximumAge

Default: 1800

Unit: s

Type: int

Maximum age of events in seconds to start a simulation automatically. If the value is negative the age of an event is ignored.

$name.processors.messages.toastd.trigger.simulation.minimumMagnitude

Default: 6.0

Type: double

Minimum magnitude to start a simulation automatically.

Command-Line Options

scmaster [options]

Generic

-h, --help

Show help message.

-V, --version

Show version information.

--config-file arg

Use alternative configuration file. When this option is used the loading of all stages is disabled. Only the given configuration file is parsed and used. To use another name for the configuration create a symbolic link of the application or copy it. Example: scautopick -> scautopick2.

--plugins arg

Load given plugins.

-D, --daemon

Run as daemon. This means the application will fork itself and doesn’t need to be started with &.

Verbosity

--verbosity arg

Verbosity level [0..4]. 0:quiet, 1:error, 2:warning, 3:info, 4:debug.

-v, --v

Increase verbosity level (may be repeated, eg. -vv).

-q, --quiet

Quiet mode: no logging output.

--component arg

Limit the logging to a certain component. This option can be given more than once.

-s, --syslog

Use syslog logging backend. The output usually goes to /var/lib/messages.

-l, --lockfile arg

Path to lock file.

--console arg

Send log output to stdout.

--debug

Execute in debug mode. Equivalent to --verbosity=4 --console=1 .

--log-file arg

Use alternative log file.

--print-component arg

For each log entry print the component right after the log level. By default the component output is enabled for file output but disabled for console output.

--trace

Execute in trace mode. Equivalent to --verbosity=4 --console=1 --print-component=1 --print-context=1 .

Wired

--bind arg

The non-encrypted bind address. Format [ip:]port

--sbind arg

The encrypted bind address. Format: [ip:]port