-
-
Save troy/4710601 to your computer and use it in GitHub Desktop.
# DEPRECATED | |
# You probably want one of these newer, better examples: | |
# http://help.papertrailapp.com/kb/hosting-services/amazon-elastic-beanstalk | |
# Credits: | |
# Jason Pirkey, Táve Corporation, http://www.tave.com/ | |
# Jeremy Mickelson, https://github.com/CyborgMaster | |
# See http://help.papertrailapp.com/kb/hosting-services/amazon-elastic-beanstalk | |
packages: | |
yum: | |
rubygems: [] | |
ruby-devel: [] | |
openssl-devel: [] | |
rubygems: | |
eventmachine: [] | |
remote_syslog: [] | |
json: [] | |
files: | |
"/etc/remote_applog.yml": | |
mode: "00644" | |
owner: root | |
group: root | |
encoding: plain | |
content: | | |
files: | |
- <YOUR-TRACKED-FILES> | |
hostname: <YOUR-APP-NAME> | |
destination: | |
host: <YOUR-LOG-DESTINATION> | |
port: <YOUR-PORT-NUMBER> | |
"/etc/init.d/remote_applog": | |
mode: "00555" | |
owner: root | |
group: root | |
encoding: plain | |
content: | | |
#!/bin/bash | |
# | |
# remote_syslog This shell script takes care of starting and stopping | |
# remote_syslog daemon | |
# | |
# chkconfig: - 58 74 | |
# description: papertrail/remote_syslog \ | |
# https://github.com/papertrail/remote_syslog/blob/master/examples/remote_syslog.init.d | |
### BEGIN INIT INFO | |
# Provides: remote_applog | |
# Required-Start: $network $local_fs $remote_fs | |
# Required-Stop: $network $local_fs $remote_fs | |
# Should-Start: $syslog $named ntpdate | |
# Should-Stop: $syslog $named | |
# Short-Description: start and stop remote_errolog | |
# Description: papertrail/remote_syslog | |
# https://github.com/papertrail/remote_syslog/blob/master/examples/remote_syslog.init.d | |
### END INIT INFO | |
# Source function library. | |
. /etc/init.d/functions | |
# Source networking configuration. | |
. /etc/sysconfig/network | |
if [ -f /usr/bin/remote_syslog ]; then | |
prog="/usr/bin/remote_syslog" | |
else | |
prog="/opt/elasticbeanstalk/bin/remote_syslog" | |
fi | |
config="/etc/remote_applog.yml" | |
pid_dir="/var/run" | |
EXTRAOPTIONS="" | |
pid_file="$pid_dir/remote_applog.pid" | |
PATH=/sbin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin | |
RETVAL=0 | |
is_running(){ | |
[ -e $pid_file ] | |
} | |
start(){ | |
echo -n $"Starting $prog: " | |
unset HOME MAIL USER USERNAME | |
$prog -c $config --tcp --pid-file $pid_file "$EXTRAOPTIONS" | |
RETVAL=$? | |
echo | |
return $RETVAL | |
} | |
stop(){ | |
echo -n $"Stopping $prog: " | |
if (is_running); then | |
kill `cat $pid_file` | |
RETVAL=$? | |
echo | |
return $RETVAL | |
else | |
echo "$pid_file not found" | |
fi | |
} | |
status(){ | |
echo -n $"Checking for $pid_file: " | |
if (is_running); then | |
echo "found" | |
else | |
echo "not found" | |
fi | |
} | |
reload(){ | |
restart | |
} | |
restart(){ | |
stop | |
start | |
} | |
condrestart(){ | |
is_running && restart | |
return 0 | |
} | |
# See how we were called. | |
case "$1" in | |
start) | |
start | |
;; | |
stop) | |
stop | |
;; | |
status) | |
status | |
;; | |
restart) | |
restart | |
;; | |
reload) | |
reload | |
;; | |
condrestart) | |
condrestart | |
;; | |
*) | |
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}" | |
RETVAL=1 | |
esac | |
exit $RETVAL | |
commands: | |
01_enable_service: | |
command: "/sbin/chkconfig remote_applog on" | |
02_start_service: | |
command: "/sbin/service remote_applog restart" | |
ignoreErrors: true |
You can also get rid of the entire conditional section where you're setting prog and just set prog="remote_syslog" since you're already setting the PATH below.
This became an issue for me when remote_syslog was installed to /usr/local/bin instead of /usr/bin or /opt/elasticbeanstalk/bin
The Elastic Beanstalk yum repositories currently have a version mismatch between openssl
and openssl-devel
that prevents this from working. To make it work you need to remove openssl-devel
and remote_syslog
from the packages
section and explicitly install them in the commands
section. You will also need to install gcc
and gcc-c++
.
packages:
yum:
rubygems: []
ruby-devel: []
gcc: []
gcc-c++: []
rubygems:
json: []
commands:
00_downgrade_openssl:
command: "yum -y --skip-broken downgrade openssl-1.0.1g"
01_install_openssldevel:
command: "yum -y install openssl-devel"
02_install_eventmachine:
command: "gem install eventmachine"
03_install_remote_syslog:
command: "gem install remote_syslog"
04_enable_service:
command: "/sbin/chkconfig remote_applog on"
05_start_service:
command: "/sbin/service remote_applog restart"
ignoreErrors: true
Additionally, if you are running Docker in Elastic Beanstalk and wish to aggregate the console logs from your application running inside Docker, set the files
property in your /etc/remote_applog.yml
to:
- /var/log/eb-docker/containers/eb-current-app/*.log
Note: This didn't work for me until I changed the --tcp option to --tls