loginjector/README.md

67 lines
1.7 KiB
Markdown

loginjector
===========
**Retrieve logs from docker containers in real time.**
Not all programs support sending logs to a remote server, so logs in containers tend to be lost by lazy sysadmins. This
is a tool that attempts to fix this, by leveraging rsyslog.
By specifying a list of log paths in the container or auto detection from a built-in list, loginjector will generate a
rsyslog config within the container and spawn rsyslogd. Simultaneously, loginjector listens on UDP ports to receive log
entires sent by containers and writes them to disk on the host.
**Assumptions**
* The rsyslogd binary is available in the container at /usr/sbin/rsyslogd (this is stander for ubuntu base images)
* Docker is using it's default networking strategy
**Installation**
* `git clone ssh://git@gitlab.davepedu.com:222/dave/loginjector.git`
* `cd loginjector`
* `python3 setup.py install`
**Running**
* `loginjector -s unix://var/run/docker.sock -o /var/log/container/`
(The above arguments are actually the defaults and need not be specified)
**Specifying custom paths**
Add the `-c <file>` argument where `<file>` is a json or yml file structured like:
```
{
"container_name": {
"app_name": ["/log/path.log", "/another/log/path.log"],
"another_app": [ ... ]
},
"another_container": {
}
}
```
**Container bake-in**
If you're a docker image creator, you can add a file to your image containing log paths.
Add to your image a file at the path `/.loghint` containing:
```
{
"app_name": ["/log/path.log", "/another/log/path.log"],
"another_app": [ ... ]
}
```
**TODO**
- Implement the custom path option displayed above
- Implement the loghint file mentioned above