# Monitoring

Snakemake supports panoptes a server (under development) that lets you monitor the execution of snakemake workflows. Snakemake communicates with panoptes via the `--wms-monitor` flag. The flag specifies the ip and port where panoptes is running (e.g. `--wms-monitor http://127.0.0.1:5000`).

For panoptes versions 0.1.1 and lower, Snakemake sends the following requests to wms monitor:

API | Method | Data | Description
--- | --- | --- | ---
`/api/service-info` | GET | json | Snakemake gets the status of panoptes. Snakemake continues to run if the status (`json['status']`) is `'running'`. In all other cases snakemake exits with an error message.
`/create_workflow` | GET | json | Snakemake gets a unique id/name `str(uuid.uuid4())` for each workflow triggered.

`/update_workflow_status`

POST

dictionary

Snakemake posts updates for workflows/jobs. The dictionary sent contains the log message dictionary , the current timestamp and the unique id/name of the workflow.

>     {
>         'msg': repr(msg),
>         'timestamp': time.asctime(),
>         'id': id
>     }

For future versions, Panoptes will implement`a more structured schema <https://github.com/panoptes-organization/monitor-schema>`_ to interact with the server. This means that for Snakemake 3.30.1 and lower, you should use Panoptes 0.1.1 and lower. The documentation here will be updated when a new version of Panoptes with the Monitor Schema is released.