Skip to content

Instantly share code, notes, and snippets.

@leonsodhi
Last active February 18, 2020 22:06
Show Gist options
  • Star 20 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save leonsodhi/8eb28e06b2c35c136bf8 to your computer and use it in GitHub Desktop.
Save leonsodhi/8eb28e06b2c35c136bf8 to your computer and use it in GitHub Desktop.
# 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
@troy
Copy link

troy 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
Copy link

aop 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
Copy link

cymen 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
Copy link
Author

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