Apache Mesos framework for scheduled jobs
kensipe Reduce log verbosity for known and expected conditions (#238)
* Reduce log verbosity for known and expected conditions

* code formatting fixed

* switch to info for non error message and updated message based on feedbcak
Latest commit f921d43 Sep 18, 2018
Permalink
Failed to load latest commit information.
.github Use the same PR template as we do in Marathon (#160) Dec 15, 2017
api/src Reduce log verbosity for known and expected conditions (#238) Sep 18, 2018
bin Implement new versioning for Metronome (#266) Sep 12, 2018
ci Update dcos PR with every master build (#271) Sep 14, 2018
docs Add docs for Metronome metrics (#256) Aug 29, 2018
jobs/src removed unused imports and code (#272) Sep 13, 2018
project Bump dependencies versions (#254) Sep 7, 2018
src Bump dependencies versions (#254) Sep 7, 2018
tests/system Metronome SI Tests are Failing (#269) Sep 13, 2018
.gitignore Get rid of Kamon (#252) Aug 28, 2018
.sbtopts Drop actor measurement metrics and introduce operation-related metrics ( Aug 29, 2018
Jenkinsfile Update dcos PR with every master build (#271) Sep 14, 2018
Jenkinsfile.open.si Enable SI Tests for current Master (#186) Sep 14, 2018
Jenkinsfile.permissive.si Enable SI Tests for current Master (#186) Sep 14, 2018
Jenkinsfile.release Metronome Release Process (#149) Dec 5, 2017
Jenkinsfile.strict.si Enable SI Tests for current Master (#186) Sep 14, 2018
LICENSE Initial commit May 10, 2016
README.md Drop actor measurement metrics and introduce operation-related metrics ( Aug 29, 2018
build.sbt Implement new versioning for Metronome (#266) Sep 12, 2018
changelog.md metronome 0.5.3 release notes (#262) Aug 31, 2018
run.sh Make a script for running metronome locally (#213) Apr 10, 2018
version Implement new versioning for Metronome (#266) Sep 12, 2018

README.md

Metronome Issues

Metronome is an Apache Mesos framework for scheduled jobs.

Documentation

Metronome documentation is available on the Metronome Project Site or DC/OS documentation site.

Issue Tracking

Metronome issues are tracked as JIRA tickets in Mesosphere's on-premise JIRA instance that anyone is able to view and add to using GitHub SSO. If you create a ticket, please set component metronome.

Getting Started

Get familiar with Metronome with this step-by-step Getting Started guide.

API Reference

Consult the full Metronome REST API reference.

An unofficial Go client library, metronome-client has been created for the v1 API.

Contributing

We heartily welcome external contributions to Metronome's codebase and documentation. Please see our Contributor Guidelines.

Building from Source

To build Metronome from source, check out this repo and use sbt to build a universal package:

    git clone https://github.com/dcos/metronome.git
    cd metronome
    sbt universal:packageBin

In order to build from source you will need protobuf version 2.6.1. This can be installed by executing the ./bin/install-protobuf.sh. This will install protobuf to $HOME/protobuf. You will need $HOME/protobuf/bin in your path ( export PATH=~/protobuf/bin:$PATH).

Running in Development Mode

Mesos local mode allows you to run Metronome without launching a full Mesos cluster. It is meant for experimentation and not recommended for production use. Note that you still need to run ZooKeeper for storing state. The following command launches Metronome on Mesos in local mode.

sbt run

If you want to run Metronome against a real Mesos cluster, you can use the following command.

./run.sh

The script is already pre-filled with a default values for zookeeper and mesos running locally. You can specify your own like this:

./run.sh "zk://127.0.0.1:2181/metronome" "127.0.0.1:5050" "8989"

Example Job with Placement Constraint

{
   "id": "sample-job",
   "description": "A sample job that sleeps",
   "run": {
   "cmd": "sleep 1000",
   "cpus": 0.01,
   "mem": 32,
   "disk": 0,
   "placement": {
       "constraints": [
   	{
   	    "attribute": "hostname",
   	    "operator": "LIKE",
   	    "value": "<host-name>"
   	}
       ]
   }
   },
   "schedules": [
        {
            "id": "sample-schedule",
            "enabled": true,
            "cron": "0 0 * * *",
            "concurrencyPolicy": "ALLOW"
        }
    ]
}

This job will sleep every day at midnight and will land on the host defined by <host-name> which could be the hostname or IP of a node in the cluster. If you don't care where it lands in the cluster remove the placement element.

Help

Have you found an issue? Feel free to report it using our JIRA. Please set component metronome for issues related to Metronome. In order to speed up response times, please provide as much information on how to reproduce the problem as possible.