Event logging service for Marathon Mesos framework.
marathon-logger is a Marathon event subscriber that logs each event to a pluggable event store.
On launch, it registers itself with the Marathon server. On exit, it deregisters itself.
Unless using the Docker image, you'll need the flask and marathon Python packages:
pip install -r requirements.txt
$ python marathon-logger.py -h
usage: marathon-logger.py [-h] -m MARATHON_URL -c CALLBACK_URL
[-e EVENT_STORE] [-p PORT]
Marathon Logging Service
optional arguments:
-h, --help show this help message and exit
-m MARATHON_URL, --marathon-url MARATHON_URL
Marathon server URL (http[s]://<host>:<port>[<path>])
-c CALLBACK_URL, --callback-url CALLBACK_URL
callback URL for this service
(http[s]://<host>:<port>[<path>]/events
-e EVENT_STORE, --event-store EVENT_STORE
event store connection string (default: in-
memory://localhost/)
-p PORT, --port PORT Port to listen on (default: 5000)
To start marathon-logger, simply run marathon-logger.py
and provide the URL of the Marathon server and the addressable
callback URL of the service.
Example:
python marathon-logger.py \
-m http://marathon.mycompany.com/ \
-c http://marathon-logger.mycompany.com/events \
-e in-memory://localhost/?max_length=1000
marathon-logger is available from the Docker Hub at thefactory/marathon-logger:
docker run -P thefactory/marathon-logger \
-m http://marathon.mycompany.com/ \
-c http://marathon-logger.mycompany.com/events \
-e in-memory://localhost/?max_length=1000
Events are available via a HTTP GET
to /events
. Note: not available with the syslog
store type
Example (using httpie):
$ http GET localhost:5000/events
HTTP/1.0 200 OK
Content-Length: 394
Content-Type: application/json
Date: Wed, 11 Jun 2014 16:47:43 GMT
Server: Werkzeug/0.9.6 Python/2.7.5
{
"events": [
{
"appId": "myapp",
"eventType": "status_update_event",
"host": "mesos-slave1.mycompany.com",
"ports": [
31705
],
"slaveId": "20140609-224851-3187802122-5050-1365-2",
"taskId": "myapp_1-1402505159061",
"taskStatus": "TASK_KILLED",
"timestamp": "2014-06-11T16:47:17.850Z"
}
]
}
Store up to max_length
events in memory. Safe for multiple threads, but not for multiple processes.
Parameters:
max_length
- [optional, default: 100] max number of events to store
Example connection string
in-memory://localhost/?max_length=1000
Forward events to a syslog server via UDP. This event store has no retrieval capability, so GET /events
will always
return zero results.
Example connection string:
syslog://localhost:514/