Stream supervisor events to a logstash instance
Project description
This is a port of the Supervisor-logging project. Along with capturing loglines, as Supervisor-logging does, it’s also intended to capture the PROCESS_STATE events that Supervisor emits.
supervisor-logstash-notifier
A supervisor plugin to stream events & logs to a Logstash instance.
Installation
Python 2.6, 2.7 or Python 3.2+ is required.
pip install supervisor-logstash-notifier
Note that Supervisor itself does not yet work on Python 3, though it can be installed in a separate environment (because supervisor-logstash-notifier is a separate process).
Usage
The Logstash instance to send the events to is configured with the environment variables:
LOGSTASH_SERVER
LOGSTASH_PORT
LOGSTASH_PROTO
Add the plugin as an event listener:
# Capture state changes [eventlistener:logging] command = logstash_notifier events = PROCESS_STATE # Capture stdout/stderr [eventlistener:logging] command = logstash_notifier events = PROCESS_LOG # Capture state changes and stdout/stderr [eventlistener:logging] command = logstash_notifier events = PROCESS_STATE,PROCESS_LOG
If you don’t wish to define the environment variables for the entire shell, you can pass them in via Supervisor’s configuration:
[eventlistener:logging] environment=LOGSTASH_SERVER="127.0.0.1",LOGSTASH_PORT="12202",LOGSTASH_PROTO="tcp" command=logstash_notifier events=PROCESS_STATE
Advanced Usage
It is also possible to include environment variables in the event messages, by specifying the name of the environment variables to include:
[eventlistener:logging] command=export IPV4=`ec2metadata --local-ipv4`; logstash_notifier --include IPV4 events=PROCESS_STATE
Or alternatively, by specifying arbitrary keyvals of data to log:
[eventlistener:logging] command=logstash_notifier --include bears="polar,brown,black" notbears="unicorn,griffin,sphinx,otter" events=PROCESS_STATE
These two forms of arbitrary user data inclusion can be combined, and used together if necessary.
Running with Logstash
Logstash can be simply configured to receive events:
input { tcp { port => 12201 codec => json } } output { stdout { codec => rubydebug } }
The JSON produced by the events and log output will look like this:
# State changes { "@timestamp": "2016-03-28T23:58:03.469Z", "@version": "1", "eventname": "PROCESS_STATE_STOPPED", "from_state": "STOPPING", "groupname": "myprocess", "host": "ip-10-93-130-24", "level": "INFO", "logger_name": "supervisor", "message": "PROCESS_STATE_STOPPED collectd", "path": "/path/to/supervisor-logstash-notifier/logstash_notifier/__init__.py", "pid": "1234", "processname": "myprocess", "tags": [], "type": "logstash" } # Log output { "@timestamp": "2016-03-28T23:58:03.741Z", "@version": "1", "channel": "stdout" "eventname": "PROCESS_LOG_STDOUT", "groupname": "myprocess", "host": "localhost", "level": "INFO", "logger_name": "supervisor", "message": "myprocess output #1\n", "path": "/path/to/supervisor-logstash-notifier/logstash_notifier/__init__.py", "pid": "1234", "processname": "myprocess", "tags": [], "type": "logstash", }
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for supervisor-logstash-notifier-0.2.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6414d44ce3be9f0da1f45de8f9abb1da0b03ad66856306b6b127eb4df3918da5 |
|
MD5 | 9706bb469d5e5c49bfacc155c7211ca4 |
|
BLAKE2b-256 | 880dd03013b3ea7491bcb11a9705f66980021e1780a43f5dd58683def916b600 |
Hashes for supervisor_logstash_notifier-0.2.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6bc0872496f078025b35a2d0dd6920518f74315433eb441ef725f8254056c6e |
|
MD5 | 024832235b8d0005b771b85449bf99ae |
|
BLAKE2b-256 | bbd207e3eb5baf22e4a80762f809fc488a32dc0d93305b8a37a1b3d19f0e54a3 |