table of contents
- buster 4.4.0+dfsg-8
PEGASUS-MONITORD(1) | Pegasus Manual | PEGASUS-MONITORD(1) |
NAME¶
pegasus-monitord - tracks a workflow progress, mining informationSYNOPSIS¶
pegasus-monitord [--help|-help] [--verbose|-v] [--adjust|-a i] [--foreground|-N] [--no-daemon|-n] [--job|-j jobstate.log file] [--log|-l logfile] [--conf properties file] [--no-recursive] [--no-database | --no-events] [--replay|-r] [--no-notifications] [--notifications-max max_notifications] [--notifications-timeout timeout] [--sim|-s millisleep] [--db-stats] [--skip-stdout] [--force|-f] [--socket] [--output-dir | -o dir] [--dest|-d PATH or URL] [--encoding|-e bp | bson] DAGMan output file
DESCRIPTION¶
This program follows a workflow, parsing the output of DAGMAN’s dagman.out file. In addition to generating the jobstate.log file, pegasus-monitord can also be used mine information from the workflow dag file and jobs' submit and output files, and either populate a database or write a NetLogger events file with that information. pegasus-monitord can also perform notifications when tracking a workflow’s progress in real-time.OPTIONS¶
-h, --help-v, --verbose
The log level in pegasus-monitord can also be adjusted interactively, by sending the USR1 and USR2 signals to the process, respectively for incrementing and decrementing the log level.
-a i, --adjust i
-N, --foreground
-n, --no-daemon
-j jobstate.log file, --job jobstate.log file
--log logfile, --log-file logfile
--conf properties_file
--no-recursive
--nodatabase, --no-database, --no-events
-r, --replay
--no-notifications
--notifications-max max_notifications
--notifications-timeout timeout
-s millisleep, --sim millisleep
--db-stats
--skip-stdout
-f, --force
--socket
-o dir, --ouput-dir dir
-d URL params, --dest URL params
-e encoding, --encoding encoding
DAGMan_output_file
RETURN VALUE¶
If the plan could be constructed, pegasus-monitord returns with an exit code of 0. However, in case of error, a non-zero exit code indicates problems. In that case, the logfile should contain additional information about the error condition.ENVIRONMENT VARIABLES¶
pegasus-monitord does not require that any environmental variables be set. It locates its required Python modules based on its own location, and therefore should not be moved outside of Pegasus' bin directory.EXAMPLES¶
Usually, pegasus-monitord is invoked automatically by pegasus-run and tracks the workflow progress in real-time, producing the jobstate.log file and a corresponding SQLite database. When a workflow fails, and is re-submitted with a rescue DAG, pegasus-monitord will automatically pick up from where it left previously and continue the jobstate.log file and the database.If users need to create the jobstate.log file after a workflow is already finished, the --replay | -r option should be used when running pegasus-monitord manually. For example:
$ pegasus_monitord -r diamond-0.dag.dagman.out
will launch pegasus-monitord in replay mode. In this case, if a jobstate.log file already exists, it will be rotated and a new file will be created. If a diamond-0.stampede.db SQLite database already exists, pegasus-monitord will purge all references to the workflow id specified in the braindump.txt file, including all sub-workflows associated with that workflow id.
$ pegasus_monitord -r --no-database diamond-0.dag.dagman.out
will do the same thing, but without generating any log events.
$ pegasus_monitord -r --dest `pwd`/diamond-0.bp diamond-0.dag.dagman.out
will create the file diamond-0.bp in the current directory, containing NetLogger events with all the workflow data. This is in addition to the jobstate.log file.
For using a database, users should provide a database connection string in the format of:
dialect://username:password@host:port/database
Where dialect is the name of the underlying driver (mysql, sqlite, oracle, postgres) and database is the name of the database running on the server at the host computer.
If users want to use a different SQLite database, pegasus-monitord requires them to specify the absolute path of the alternate file. For example:
$ pegasus_monitord -r --dest sqlite:////home/user/diamond_database.db diamond-0.dag.dagman.out
Here are docs with details for all of the supported drivers: http://www.sqlalchemy.org/docs/05/reference/dialects/index.html
Additional per-database options that work into the connection strings are outlined there.
It is important to note that one will need to have the appropriate db interface library installed. Which is to say, SQLAlchemy is a wrapper around the mysql interface library (for instance), it does not provide a MySQL driver itself. The Pegasus distribution includes both SQLAlchemy and the SQLite Python driver.
As a final note, it is important to mention that unlike when using SQLite databases, using SQLAlchemy with other database servers, e.g. MySQL or Postgres, the target database needs to exist. So, if a user wanted to connect to:
mysql://pegasus-user:supersecret@localhost:localport/diamond
it would need to first connect to the server at localhost and issue the appropriate create database command before running pegasus-monitord as SQLAlchemy will take care of creating the tables and indexes if they do not already exist.
SEE ALSO¶
pegasus-run(1)AUTHORS¶
Gaurang Mehta <gmehta at isi dot edu>Fabio Silva <fabio at isi dot edu>
Karan Vahi <vahi at isi dot edu>
Jens-S. Vöckler <voeckler at isi dot edu>
Pegasus Team http://pegasus.isi.edu
11/09/2018 | Pegasus 4.4.0 |