Docker Container
I decided to use use a container from Allan Simon from the following git repo
https://github.com/allan-simon/docker-rsyslog-elasticsearch
Get the code
$ git clone https://github.com/allan-simon/docker-rsyslog-elasticsearch
Revise the base container to use ubuntu:20.04
Dockerfile
FROM ubuntu:20.04
# Install rsyslog and rsyslog-elasticsearch extensions. All in one
# go to reduce amount of layers.
RUN apt-get -y update && \
apt-get upgrade -y --no-install-recommends && \
apt-get install -y --no-install-recommends \
software-properties-common && \
apt-get -y update && \
apt-get -q -y --no-install-recommends install \
rsyslog rsyslog-elasticsearch cron logrotate && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
chown syslog /var/log
COPY entrypoint.sh /
COPY rsyslog.conf /etc/
COPY rsyslog_elasticsearch.conf /etc/rsyslog.d/
COPY rsyslog-rotate /usr/lib/rsyslog/rsyslog-rotate
ENTRYPOINT ["/entrypoint.sh"]
CMD ["-n"]
Build
$ docker build -t jmehan/rsyslog .
Deploy
buildDocker.sh
CONTAINER=rsyslog IMAGE=jmehan/rsyslog DIR=`pwd -P` docker stop $CONTAINER docker rm $CONTAINER DIR=`pwd -P` docker run --name $CONTAINER \ --restart=always \ -p 514:514/udp \ -p 514:514 \ -e ESLOG_HOST=192.168.1.50 \ -e ESLOG_ES_PORT=9200 \ -e ESLOG_ES_USE_HTTPS=off \ -v /etc/timezone:/etc/timezone \ -d $IMAGE docker logs -f $CONTAINER
Utilities
Send logs to RSyslog
$ logger -n localhost -P 514 "hellow world"
References
| Reference | URL |
|---|---|
| Docker log driver syslog forward to Elasticsearch | https://github.com/allan-simon/docker-rsyslog-elasticsearch |
| omelasticsearch: Elasticsearch Output Module | https://www.rsyslog.com/doc/v8-stable/configuration/modules/omelasticsearch.html |