[Faile!!]Docker, cron, mail and logs
F………………………………………………………………………………..
https://www.preining.info/blog/2018/05/docker-cron-mail-and-logs/
from debian:stretch-slim
RUN apt-get -y update
RUN apt-get install -y cron #ssmtp
ADD . /app
ADD crontab /etc/cron.d/mypackage
RUN chmod 0644 /etc/cron.d/mypackage
#ADD ssmtp.conf /etc/ssmtp/ssmtp.conf
#RUN chown root.mail /etc/ssmtp/ssmtp.conf
#RUN chmod 0640 /etc/ssmtp/ssmtp.conf
CMD cron -f
=====
docker-compose.yml
version: '3.3'
services:
gethpeers:
build:
context: gethpeers/
volumes:
- cronlog:/app/cronapplog:rw
networks:
- fastdev
fakelog:
build:
context: fakelog/
volumes:
- cronlog:/app/cronapplog:rw
- filebeat:/usr/share/filebeat/data:rw
networks:
- fastdev
volumes:
cronlog:
filebeat:
networks:
fastdev:
driver: bridge
gethpeers Dockerfile
from debian:stretch-slim
RUN apt-get -y update
RUN apt-get install -y cron
#ssmtp
ADD . /app
ADD crontab /etc/cron.d/mypackage
RUN chmod 0644 /etc/cron.d/mypackage
#ADD ssmtp.conf /etc/ssmtp/ssmtp.conf
#RUN chown root.mail /etc/ssmtp/ssmtp.conf
#RUN chmod 0640 /etc/ssmtp/ssmtp.conf
CMD cron -f
gethpeers crontab
* * * * * root /app/run-cronjob /app/start.sh
gethpeers run-cronjob
#!/bin/bash
if [ -z "$1" ] ; then
echo "need name of cron job as first argument" >&2
exit 1
fi
if [ ! -x "$1" ] ; then
echo "cron job file $1 not executable, exiting" >&2
exit 1
fi
if "$1"
then
exit 0
else
echo "cron job $1 failed!" 2>/proc/1/fd/2 >&2
exit 1
fi
gethpeers start.sh
#!/bin/bash
IP_PORT=xxx.xxx.xxx.xxx:8545
ETH_METHOD=admin_peers
PEERS=$(curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"'$ETH_METHOD'","params":[],"id":1}' $IP_PORT | jq '.result[].network + {"project":"cronapp"}')
printf "\n===== Now Geth Peers =====\n"
printf "Peers: %s\n" $PEERS
echo $PEERS >> /app/cronapplog/gethpeers.log
fakelog Dockerfile
FROM docker.elastic.co/beats/filebeat:6.5.4
COPY filebeat.yml /usr/share/filebeat/filebeat.yml
USER root
RUN chown root:filebeat /usr/share/filebeat/filebeat.yml
USER filebeat
fakelog filebeat.yml
filebeat.prospectors:
- type: log
paths:
- /app/cronapplog/gethpeers.log
exclude_files: ['.gz$']
fields:
srcname: "geth"
srctype: "cron"
filebeatserverip: "xxx.xxx.xxx.xxx"
fields_under_root: true
symlinks: true
output.logstash:
hosts: ["logstash:5044"]