You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
404 lines
12 KiB
ReStructuredText
404 lines
12 KiB
ReStructuredText
.. _system-management:
|
|
|
|
*****************
|
|
System management
|
|
*****************
|
|
|
|
The installation contains modules for data acquisition, data
|
|
archiving, processing, distribution and much more. To control all these
|
|
modules and to update their configuration the central program :program:`seiscomp`
|
|
is used with commands and options.
|
|
|
|
:program:`seiscomp` is a Python script installed in
|
|
:file:`seiscomp/bin/seiscomp`.
|
|
The graphical tool :ref:`scconfig<scconfig>` is a user-friendly wrapper
|
|
tool for many commands in :program:`seiscomp`.
|
|
|
|
The entire management framework is built upon Python which is portable to different
|
|
platforms. To make :program:`seiscomp` work, ensure that Python is installed on
|
|
your system.
|
|
|
|
:program:`seiscomp` of a particular installation can be called from anywhere in
|
|
the file system with its full path. It will source the environment of the
|
|
installation automatically. Thus, it is possible to control different
|
|
installations on one computer.
|
|
|
|
.. warning::
|
|
|
|
seiscomp should never run with root privileges unless you know exactly what
|
|
you are doing.
|
|
|
|
:program:`seiscomp` refuses to work when run with root privileges and issues
|
|
an error. To run it with root privileges the command-line option
|
|
``--asroot`` must be given as first parameter, e.g.: ::
|
|
|
|
seiscomp --asroot start seedlink
|
|
|
|
|
|
To get an overview of all available commands, issue
|
|
|
|
.. code-block:: sh
|
|
|
|
seiscomp/bin/seiscomp help
|
|
|
|
This will print all commands. To get help for a particular command, append
|
|
it to the ``help`` command.
|
|
|
|
.. code-block:: sh
|
|
|
|
seiscomp/bin/seiscomp help [command]
|
|
|
|
|
|
.. _sec-management-commands:
|
|
|
|
seiscomp Commands
|
|
=================
|
|
|
|
The *seiscomp* script can be executed with additional commands:
|
|
|
|
* **alias** create|remove [new-name] [module name]
|
|
|
|
Manages module aliases.
|
|
|
|
* **check** [module list]
|
|
|
|
Checks if all passed modules are still running if they have been started.
|
|
If no modules are listed, all modules are checked.
|
|
|
|
* **disable** [module list]
|
|
|
|
The opposite of enable. Removes the file :file:`etc/init/[module].auto` for
|
|
each module passed.
|
|
|
|
* **enable** [module list]
|
|
|
|
Enables a module to be started and checked automatically when either :command:`start`
|
|
or :command:`check` is called without arguments. This creates a file :file:`etc/init/[module].auto`
|
|
for each module passed.
|
|
|
|
* **exec** [cmd]
|
|
|
|
Executes a module.
|
|
|
|
* **help** [command]
|
|
|
|
Prints help on commands.
|
|
|
|
* **install-deps** [packages]
|
|
|
|
Installs 3rd party packages on which |scname| depends such as MariaDB or MySQL.
|
|
This is currently only supported for major Linux distributions. A list of packages
|
|
needs to be given. Available packages are: **base**, **GUI**,
|
|
**mariadb-server**, **postgresql-server**, **fdsnws**.
|
|
|
|
#. Install only base system dependencies:
|
|
|
|
.. code-block:: sh
|
|
|
|
seiscomp install-deps base
|
|
|
|
#. Install base system dependencies and MariaDB/MySQL/PostgreSQL server:
|
|
|
|
MariaDB ::
|
|
|
|
seiscomp install-deps base mariadb-server
|
|
|
|
MySQL. Install either MariaDB or MySQL, not both at the same time! ::
|
|
|
|
seiscomp install-deps base mysql-server
|
|
|
|
PostgreSQL::
|
|
|
|
seiscomp install-deps base postgresql-server
|
|
|
|
#. Install also gui and fdsnws dependencies:
|
|
|
|
.. code-block:: sh
|
|
|
|
seiscomp install-deps gui fdsnws
|
|
|
|
* **list** modules|aliases|enabled|disabled
|
|
|
|
Lists items.
|
|
|
|
* **print** crontab|env
|
|
|
|
Prints pre-defined parameters.
|
|
|
|
* **restart** [module list]
|
|
|
|
Restarts all the given modules. If no module is passed, all running and enabled modules
|
|
are first stopped and then restarted.
|
|
|
|
* **setup**
|
|
|
|
Initializes the configuration of all available modules. Each module implements
|
|
its own setup handler which is called at this point. The initialization takes
|
|
the installation directory into account and should be repeated when copying
|
|
the system to another directory.
|
|
|
|
.. warning::
|
|
|
|
setup might overwrite previous settings with default values.
|
|
|
|
* **shell**
|
|
|
|
Starts the interactive |scname| :ref:`shell <system-management-shell>`, an
|
|
approach to make configuration and manipulation of bindings more easy on the
|
|
command line.
|
|
|
|
* **start** [module list]
|
|
|
|
Starts all modules in [module list]. If no module is named, all enabled modules are
|
|
started.
|
|
|
|
* **status** [module list]
|
|
|
|
Prints the status of some, started, enabled or all modules.
|
|
|
|
* **stop** [module list]
|
|
|
|
Stops all modules in [module list]. If no module name is given, all running modules are
|
|
stopped.
|
|
|
|
* **update-config** [module list]
|
|
|
|
Updates the configuration. Modules should be able to read the configuration
|
|
files in :file:`etc` directly, but some modules such as Seedlink need an additional
|
|
step to convert the configuration to their native format. Furthermore all
|
|
trunk station bindings and the inventory need to be synchronized with the
|
|
database. If no module list is given, update-config is called for all available
|
|
modules. Otherwise only the modules passed are updated.
|
|
|
|
.. _system-management-shell:
|
|
|
|
SeisComP Shell
|
|
==============
|
|
|
|
The |scname| shell can be started with
|
|
|
|
.. code-block:: sh
|
|
|
|
user@host:~$ seiscomp/bin/seiscomp shell
|
|
|
|
which will open a command prompt. The shell is a helper to manage module station
|
|
bindings. Instead of manipulating hundreds of files using difficult commands
|
|
such as :command:`sed` in Bash scripts, shell can be used. It supports:
|
|
|
|
- list available stations
|
|
- list available profiles of a module
|
|
- list modules to which a station is bound
|
|
- bind stations to modules
|
|
- delete bindings
|
|
- track configuration of a station
|
|
|
|
.. code-block:: sh
|
|
|
|
================================================================================
|
|
seiscomp shell
|
|
================================================================================
|
|
|
|
Welcome to the SeisComP interactive shell. You can get help about
|
|
available commands with 'help'. 'exit' leaves the shell.
|
|
|
|
$
|
|
|
|
Enter :command:`help` to get a list of supported commands. The results of all
|
|
commands issued are written to disk immediately and **not buffered**.
|
|
|
|
Examples
|
|
--------
|
|
|
|
#. Assigning the scautopick global profile to all GE stations
|
|
|
|
.. code-block:: sh
|
|
|
|
$ set profile scautopick global GE.*
|
|
|
|
#. Replace all profiles with station configuration for scautopick from GE
|
|
network
|
|
|
|
.. code-block:: sh
|
|
|
|
$ remove profile scautopick global GE.*
|
|
|
|
#. Show bindings for station GE.MORC
|
|
|
|
.. code-block:: sh
|
|
|
|
$ print station GE.MORC
|
|
[global]
|
|
/home/sysop/seiscomp/etc/key/global/profile_BH
|
|
--------------------------------------------------------------------------------
|
|
detecStream = BH
|
|
--------------------------------------------------------------------------------
|
|
|
|
[seedlink]
|
|
/home/sysop/seiscomp/etc/key/seedlink/profile_geofon
|
|
--------------------------------------------------------------------------------
|
|
sources = chain
|
|
sources.chain.address = geofon.gfz-potsdam.de
|
|
sources.chain.port = 18000
|
|
--------------------------------------------------------------------------------
|
|
|
|
[scautopick]
|
|
/home/sysop/seiscomp/etc/key/scautopick/profile_default
|
|
--------------------------------------------------------------------------------
|
|
detecEnable = true
|
|
detecFilter = "RMHP(10)>>ITAPER(30)>>BW(4,0.7,2)>>STALTA(2,80)"
|
|
trigOn = 3
|
|
trigOff = 1.5
|
|
timeCorr = -0.8
|
|
--------------------------------------------------------------------------------
|
|
|
|
[slarchive]
|
|
/home/sysop/seiscomp/etc/key/slarchive/profile_1day
|
|
--------------------------------------------------------------------------------
|
|
selectors = BHZ.D
|
|
keep = 1
|
|
--------------------------------------------------------------------------------
|
|
|
|
This helps to see immediately in which file a certain parameter is
|
|
defined and what module the station is bound to.
|
|
|
|
|
|
.. _system-management-init:
|
|
|
|
Module Init Scripts
|
|
===================
|
|
|
|
All modules which can run in the background as daemon modules have init scripts.
|
|
The init scripts are placed in :file:`etc/init`. :program:`seiscomp`
|
|
loads all .py files and tries to find a class called Module. This class is
|
|
then instantiated with the environment object passed as only parameter
|
|
to the constructor. If no error occurred then the module is registered.
|
|
|
|
The name of the init script is ignored and not used furthermore. Only the
|
|
name in the Module object is important. It is important to note that only
|
|
one module can be placed in one init script.
|
|
|
|
The Module class must implement the interface used by :program:`seiscomp`.
|
|
See :py:class:`seiscomp.Kernel.Module` for more details.
|
|
|
|
A simple default implementation looks like this which is available as a
|
|
template and can be used directly by using the same name as the module's
|
|
name. The module's name in this template is derived from the filename, but this
|
|
isn't a general rule as stated before.
|
|
|
|
.. code-block:: py
|
|
|
|
import seiscomp.Kernel
|
|
|
|
class Module(seiscomp.Kernel.Module):
|
|
def __init__(self, env):
|
|
seiscomp.Kernel.Module.__init__(self, env, env.moduleName(__file__))
|
|
|
|
|
|
|scname| provides a Python module (:py:mod:`seiscomp.Kernel`) that allows to
|
|
write init scripts in an easy way.
|
|
|
|
|
|
Python kernel module
|
|
--------------------
|
|
|
|
The |scname| setup kernel module provides interfaces to write init handlers
|
|
for modules used by :program:`seiscomp` in Python.
|
|
|
|
.. py:module:: seiscomp.Kernel
|
|
|
|
.. py:class:: Module(env, name)
|
|
|
|
:param env: The passes environment from :program:`seiscomp` which is
|
|
stored in self.env.
|
|
:param name: The module name which must be passed by derived classes.
|
|
It is stored in self.name.
|
|
|
|
The module interface which implements the basic default operations.
|
|
Each script can define its own handlers to customize the behaviour.
|
|
|
|
.. py:attribute: env
|
|
|
|
The kernel environment.
|
|
|
|
.. py:attribute: name
|
|
|
|
The module's unique name. This name is used for run/pid and log files.
|
|
|
|
.. py:attribute: order
|
|
|
|
The module's start order. The default value is 100 and modules with
|
|
the same value are ordered alphabetically.
|
|
|
|
.. py:method:: isRunning()
|
|
|
|
:rtype: Boolean
|
|
|
|
Checks if a module is running. The default implementation returns True
|
|
if the lockfile if not locked.
|
|
|
|
.. py:method:: start()
|
|
|
|
:rtype: Integer
|
|
|
|
Starts a module and returns 0 if no error occured and 1 otherwise. This
|
|
method is called from :program:`seiscomp start`.
|
|
|
|
.. py:method:: stop()
|
|
|
|
:rtype: Integer
|
|
|
|
Stops a module and returns 0 if no error occured and 1 otherwise. This
|
|
method is called from :program:`seiscomp stop`.
|
|
|
|
.. py:method:: check()
|
|
|
|
:rtype: Integer
|
|
|
|
Check is the same as start. The decision whether to check a module
|
|
or not is made :program:`seiscomp` which check the existence
|
|
of the corresponding run file. Returns 1 is case of error, 0 otherwise.
|
|
|
|
.. py:method:: status(shouldRun)
|
|
|
|
:param shouldRun: Boolean parameter that indicates if the module should
|
|
run or not. This is evaluated by :program:`seiscomp`.
|
|
|
|
Prints the status of the module to stdout. Either is CSV format or as free
|
|
text. This depends on self.env._csv. The default implementations calls
|
|
|
|
.. code-block:: py
|
|
|
|
self.env.logStatus(self.name, self, self.isRunning(), shouldRun,\
|
|
self.env.isModuleEnabled(self.name) or \
|
|
isinstance(self, CoreModule))
|
|
|
|
.. py:method:: updateConfig()
|
|
|
|
Updates the configuration and bindings based on the module's .cfg files
|
|
and :file:`etc/key/[modname]`. A :term:`trunk` module does not need to
|
|
do anything here. Stand-alone modules need to implement this method to
|
|
convert the configuration to their native format.
|
|
|
|
This is called from :program:`seiscomp update-config`.
|
|
|
|
.. py:method:: printCrontab()
|
|
|
|
Prints crontab entries to stdout. The default implementation does not
|
|
print anything.
|
|
|
|
This is called from :program:`seiscomp print crontab`.
|
|
|
|
.. py:class:: CoreModule(seiscomp.Kernel.Module)
|
|
|
|
The core module interface. A core module is a normal module but is started
|
|
before all modules and stopped afterwards. Core modules are always enabled
|
|
and will be started with :program:`seiscomp start` unless a CoreModule
|
|
implementation applies additional checks in :py:meth:`Module.start`.
|
|
|
|
:ref:`scmaster` is a core module which is a requirement for all :term:`trunk`
|
|
modules.
|
|
|
|
.. py:class:: Environment
|
|
|
|
Access to the setup environment.
|