Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
# IMPORTANT: this example is potentially out of date. The latest version can be found here: https://github.com/papertrail/remote_syslog2/blob/master/examples/remote_syslog.ebextensions.config
# See http://help.papertrailapp.com/kb/hosting-services/aws-elastic-beanstalk/
# Usage:
# - replace <VERSION> with the version of remote_syslog2 you want to use. Example: .../download/v0.14/remote_syslog_linux_amd64.tar.gz
# - replace <YOUR-TRACKED-FILES> with the files you want to monitor for new log lines. Example: - /var/log/httpd/access_log
# - replace <YOUR-APP-NAME> with the name of the application
# - replace <YOUR-LOG-DESTINATION> and <YOUR-PORT-NUMBER> with the values shown under log destinations: https://papertrailapp.com/account/destinations
sources:
/home/ec2-user: https://github.com/papertrail/remote_syslog2/releases/download/<VERSION>/remote_syslog_linux_amd64.tar.gz
files:
"/etc/log_files.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>
protocol: tls
"/etc/init.d/remote_syslog":
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_syslog2/blob/master/examples/remote_syslog.init.d
### BEGIN INIT INFO
# Provides: remote_syslog
# 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_syslog2
# https://github.com/papertrail/remote_syslog2/blob/master/examples/remote_syslog.init.d
### END INIT INFO
# Source function library.
. /etc/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
prog="/usr/local/bin/remote_syslog"
config="/etc/log_files.yml"
pid_dir="/var/run"
EXTRAOPTIONS=""
pid_file="$pid_dir/remote_syslog.pid"
PATH=/sbin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
RETVAL=0
is_running(){
# Do we have PID-file?
if [ -f "$pid_file" ]; then
# Check if proc is running
pid=`cat "$pid_file" 2> /dev/null`
if [[ $pid != "" ]]; then
exepath=`readlink /proc/"$pid"/exe 2> /dev/null`
exe=`basename "$exepath"`
if [[ $exe == "remote_syslog" ]]; then
# Process is running
return 0
fi
fi
fi
return 1
}
start(){
echo -n $"Starting $prog: "
unset HOME MAIL USER USERNAME
$prog -c $config --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:
00_stop_service:
command: "/sbin/service remote_syslog stop"
ignoreErrors: true
01_install_remote_syslog_binary:
command: "cp /home/ec2-user/remote_syslog/remote_syslog /usr/local/bin"
02_enable_service:
command: "/sbin/chkconfig remote_syslog on"
03_start_service:
command: "/sbin/service remote_syslog restart"
ignoreErrors: true
@gbleu

This comment has been minimized.

Copy link

commented Nov 24, 2014

The first time went fine, but then I started receiving errors like :

[ERROR] Command 01_install_remote_syslog_binary (cp /home/ec2-user/remote_syslog/remote_syslog /usr/local/bin) failed
[DEBUG] Command 01_install_remote_syslog_binary output: cp: cannot create regular file ‘/usr/local/bin/remote_syslog’: Text file busy

Adding this command fixed it :

00_stop_service:
command: "/sbin/service remote_syslog stop"
ignoreErrors: true

@leonsodhi

This comment has been minimized.

Copy link
Owner Author

commented Dec 4, 2014

Thanks, @gbleu. I've added it into the config.

@chirillc

This comment has been minimized.

Copy link

commented Apr 29, 2015

@leonsodhi, Is there a way I could use this config file to cover different environments? For example I'd like to be able to use something like this:

hostname: <YOUR-APP-NAME>-{$ENV}

This way I will be able to distinguish papertrail log entries based on different hostnames.

@xaralis

This comment has been minimized.

Copy link

commented May 5, 2015

@chirillc I need exactly the same thing. Did you figure it out somehow?

@leonsodhi

This comment has been minimized.

Copy link
Owner Author

commented Jun 23, 2015

@chirillc, @xaralis, an update is coming that will allow you to set an environment name. If you'd like to get an early release and make a few changes yourself, fire a mail into support@papertrailapp.com and I'll reply with the details. I'd like to avoid making this beta release public so that everyone else only gets a final 100% working copy.

@elbuo8

This comment has been minimized.

Copy link

commented Aug 10, 2015

I'm in the same boat 😢

@u2mejc

This comment has been minimized.

Copy link

commented Oct 8, 2015

This comment chain is really old, but this gist is linked from Papertrail's official docs so I'm sure other's still read this. This is what I did to get app/host specific names in a script:

eval export PAPERTRAIL_HOSTNAME=$PAPERTRAIL_HOSTNAME # can expand $HOSTNAME
sed -i "s/.*hostname:.*/hostname: $PAPERTRAIL_HOSTNAME/" /etc/log_files.yml

I'm using container_commands to retrieve GUI's Environment Properties as env vars. So if I set PAPERTRAIL_HOSTNAME as nextkillerapp-$HOSTNAME, it will expand to nextkillerapp-ip-10-1-2-3 in the papertrail config. I did this for all of the env vars, but here's an an example ebextension for the hostname: https://gist.github.com/u2mejc/f9187e2a15c7e85a5135 If enough people find it useful, I can rework it so that all of the vars are exposed in the gui.

@dsshap

This comment has been minimized.

Copy link

commented Oct 27, 2015

@leonsodhi - any news on the release of env support?

@leonsodhi

This comment has been minimized.

Copy link
Owner Author

commented Oct 27, 2015

@dsshap none yet, I'm afraid. If you'd like a copy of what I have ATM, shoot a mail into support@papertrailapp.com and I'll attach it to a reply.

I still haven't had a chance to test it myself so I don't want to replace this gist just yet.

@troy

This comment has been minimized.

Copy link

commented Dec 2, 2015

For others who want to use environmental variables in this script, check out Referencing env variables from Elastic Beanstalk .ebextensions config files and
Passing custom env vars on Elastic Beanstalk.

While variables are available to the ebextensions script (which, in Ruby, would be the ENV hash), they are only available in container_commands, not commands or other config sections. That's why either preprocessing or a modification to this script is required.

Details: Linux server configuration sections

@aop

This comment has been minimized.

Copy link

commented Dec 10, 2015

I don't get it. Where am I supposed to know what version I want? The newest? What is it?

@cymen

This comment has been minimized.

Copy link

commented Feb 2, 2016

@aop I think it's just abstracting the version out to avoid having this go out of date too quickly. I chose to put in v0.16 for version after taking a look at the releases page here:

https://github.com/papertrail/remote_syslog2/releases

@leonsodhi

This comment has been minimized.

Copy link
Owner Author

commented Feb 11, 2016

This config now lives in the remote_syslog2 examples directory.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.