Wed Apr 18 07:57:33 PDT 2007
- Previous message: [Slony1-commit] slony1-engine/tools/mkservice README
- Next message: [Slony1-commit] slony1-engine SAMPLE
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Update of /home/cvsd/slony1/slony1-engine/tools/mkservice
In directory main.slony.info:/tmp/cvs-serv3198
Modified Files:
README logrep-mkservice.sh slon-mkservice.sh
Log Message:
Further changes to mkservice tools, per Andrew Hammond.
Index: README
===================================================================
RCS file: /home/cvsd/slony1/slony1-engine/tools/mkservice/README,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** README 17 Apr 2007 21:58:47 -0000 1.2
--- README 18 Apr 2007 14:57:31 -0000 1.3
***************
*** 12,21 ****
For non-interactive use, set the following environment variables.
! BASEDIR SYSUSR PASSFILE DBUSER HOST PORT DATABASE CLUSTER SLON_BINARY
If any of the above are not set, the script asks for configuration
! information interactively.
BASEDIR where you want the service directory structure for the slon
to be created. This should _not_ be the /var/service directory.
SYSUSR the unix user under which the slon (and multilog) process should run.
PASSFILE location of the .pgpass file to be used. (default ~sysusr/.pgpass)
--- 12,26 ----
For non-interactive use, set the following environment variables.
! BASEDIR LOGBASE SYSUSR PASSFILE DBUSER HOST PORT DATABASE CLUSTER SLON_BINARY
If any of the above are not set, the script asks for configuration
! information interactively. The following environment variables are optional.
! LOGMAX LOGNUM
! If they are not set, they will silently default to reasonable values.
BASEDIR where you want the service directory structure for the slon
to be created. This should _not_ be the /var/service directory.
+ (default /usr/local/etc)
+ LOGBASE where you want your logs to end up. (default /var/log)
+ if set to - then revert to old behaviour and put logs under log/main.
SYSUSR the unix user under which the slon (and multilog) process should run.
PASSFILE location of the .pgpass file to be used. (default ~sysusr/.pgpass)
***************
*** 26,29 ****
--- 31,36 ----
CLUSTER the name of your Slony1 cluster? (default database)
SLON_BINARY the full path name of the slon binary (default `which slon`)
+ LOGMAX maximum size (in bytes) of logfiles (default 10485760 which is 10MB)
+ LOGNUM number of files to maintain (default 99, assume other tool prunes)
logrep-mkservice.sh
***************
*** 37,50 ****
For non-interactive use, set the following environment variables.
! BASEDIR SYSUSR SOURCE EXTENSION CRITERIA
If any of the above are not set, the script asks for configuration
! information interactively.
BASEDIR where you want the service directory structure for the logrep
to be created. This should _not_ be the /var/service directory.
SYSUSR unix user under which the service should run.
SOURCE name of the service with the log you want to follow.
EXTENSION a tag to differentiate this logrep from others using the same source.
CRITERIA the multilog filter you want to use.
A trivial example of this would be to provide a log file of all slon
--- 44,63 ----
For non-interactive use, set the following environment variables.
! BASEDIR LOGBASE SYSUSR SOURCE EXTENSION CRITERIA
If any of the above are not set, the script asks for configuration
! information interactively. The following environment variables are optional.
! LOGMAX LOGNUM
! If they are not set, they will silently default to reasonable values.
BASEDIR where you want the service directory structure for the logrep
to be created. This should _not_ be the /var/service directory.
+ LOGBASE where you want your logs to end up. (default /var/log)
+ if set to - then revert to old behaviour and put logs under log/main.
SYSUSR unix user under which the service should run.
SOURCE name of the service with the log you want to follow.
EXTENSION a tag to differentiate this logrep from others using the same source.
CRITERIA the multilog filter you want to use.
+ LOGMAX maximum size (in bytes) of logfiles (default 10485760 which is 10MB)
+ LOGNUM number of files to maintain (default 99, assume other tool prunes)
A trivial example of this would be to provide a log file of all slon
Index: slon-mkservice.sh
===================================================================
RCS file: /home/cvsd/slony1/slony1-engine/tools/mkservice/slon-mkservice.sh,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** slon-mkservice.sh 30 Mar 2007 14:49:46 -0000 1.1
--- slon-mkservice.sh 18 Apr 2007 14:57:31 -0000 1.2
***************
*** 6,17 ****
#
# Create a slon service directory for use with svscan from deamontools.
! # This uses multilog in a pretty basic way. See logrep for cleverness.
! # Currently very limited error handling. This probably needs to be fixed...
! #
# For non-interactive use, set the following environment variables.
! # BASEDIR SYSUSR PASSFILE DBUSER HOST PORT DATABASE CLUSTER SLON_BINARY
DEFAULT_SLON_BINARY=`which slon` # silly, wild-ass guess
DEFAULT_BASEDIR='/usr/local/etc'
DEFAULT_SYSUSR='pgsql' # FreeBSD-centric. Oh well.
DEFAULT_DBUSR='slony' # Best Practice...
--- 6,40 ----
#
# Create a slon service directory for use with svscan from deamontools.
! # This uses multilog in a pretty basic way, which seems to be standard
! # for daemontools / multilog setups. If you want clever logging, see
! # logrep below. Currently this script has very limited error handling
! # capabilities.
! #
# For non-interactive use, set the following environment variables.
! # BASEDIR LOGBASE SYSUSR PASSFILE DBUSER HOST PORT DATABASE CLUSTER SLON_BINARY
! # If any of the above are not set, the script asks for configuration
! # information interactively. The following environment variables are optional.
! # LOGMAX LOGNUM
! # If they are not set, they will silently default to reasonable values.
! #
! # BASEDIR where you want the service directory structure for the slon
! # to be created. This should _not_ be the /var/service directory.
! # (default /usr/local/etc)
! # LOGBASE where you want your logs to end up. (default /var/log)
! # if set to - then revert to old behaviour and put logs under log/main.
! # SYSUSR the unix user under which the slon (and multilog) process should run.
! # PASSFILE location of the .pgpass file to be used. (default ~sysusr/.pgpass)
! # DBUSER the postgres user the slon should connect as (default slony)
! # HOST what database server to connect to (default localhost)
! # PORT what port to connect to (default 5432)
! # DATABASE which database to connect to (default dbuser)
! # CLUSTER name of your Slony1 cluster? (default database)
! # SLON_BINARY full path name of the slon binary (default `which slon`)
! # LOGMAX maximum size (in bytes) of logfiles (default 10485760 which is 10MB)
! # LOGNUM number of files to maintain (default 99, assume other tool prunes)
DEFAULT_SLON_BINARY=`which slon` # silly, wild-ass guess
DEFAULT_BASEDIR='/usr/local/etc'
+ DEFAULT_LOGBASE='/var/log'
DEFAULT_SYSUSR='pgsql' # FreeBSD-centric. Oh well.
DEFAULT_DBUSR='slony' # Best Practice...
***************
*** 21,25 ****
if [ -z "$BASEDIR" ]; then
! echo -n "Where do you want the service dir created? Don't want to created this in /service or /var/service. Once it's created, either link or move it to the service directory (since linking is an atomic filesystem action). If your service directory is on a small, relatively static partition, you will almost certainly want to put this on a partition that can handle some log files and then link.
[$DEFAULT_BASEDIR]: "
read BASEDIR
--- 44,52 ----
if [ -z "$BASEDIR" ]; then
! echo -n "Where do you want the service dir created? Don't create this in
! /service or /var/service. Once it's created, either symlink or move
! it to the service directory (since linking is an atomic filesystem action).
! Note that log files will not be stored here (that's the next question), so
! this doesn't have to be on a high storage / IO capacity filesystem.
[$DEFAULT_BASEDIR]: "
read BASEDIR
***************
*** 30,33 ****
--- 57,73 ----
echo "BASEDIR=$BASEDIR"
+ if [ -z "$LOGBASE" ]; then
+ echo -n "Where should the logfiles live? You probably want to put this
+ somewhere with plenty of storage and some IO capacity. Note that this
+ creates a subdirectory where the actual log files are stored.
+ Use - to disable this (putting the log files under log/main according to
+ daemontools convention).
+ [$DEFAULT_LOGDIR]: "
+ read LOGDIR
+ if [ -z "$LOGDIR" ]; then
+ LOGDIR="$DEFAULT_LOGDIR"
+ fi
+ fi
+
if [ -z "$SYSUSR" ]; then
echo -n "System user name for slon to run under [$DEFAULT_SYSUSR]: "
***************
*** 115,125 ****
echo "SLON_BINARY=$SLON_BINARY"
! DIR="$BASEDIR/slon_${CLUSTER}_${HOST}_${PORT}_$DATABASE"
CONFIGFILE="$DIR/slon.conf"
echo "CONFIGFILE=$CONFIGFILE"
echo "Service dir will be created under $DIR"
! mkdir -p "$DIR/env" "$DIR/supervise" "$DIR/log/supervise" "$DIR/log/main" || exit -1
# Make sure the log file initially exists. This allows others to tail -F it
# before it starts getting populated. go go logrep!
--- 155,174 ----
echo "SLON_BINARY=$SLON_BINARY"
! SVCNAME="slon_${CLUSTER}_${HOST}_${PORT}_$DATABASE"
! DIR="$BASEDIR/$SVCNAME"
! LOGDIR="$DIR/log/main"
! if [ '-' != "$LOGBASE" ]; then # - means don't use a different logdir
! LOGDIR="$LOGBASE/$SVCNAME" # otherwise we're logging somewhere else
! fi
CONFIGFILE="$DIR/slon.conf"
echo "CONFIGFILE=$CONFIGFILE"
echo "Service dir will be created under $DIR"
+ echo "Logs will live under $LOGDIR"
! mkdir -p "$DIR/env" "$DIR/supervise" "$DIR/log/env" "$DIR/log/supervise" "$LOGDIR" || exit -1
! if [ '-' != "$LOGBASE" ]; then # - means it's not a linked logdir
! ln -s "$LOGDIR" "$DIR/log/main"
! fi
# Make sure the log file initially exists. This allows others to tail -F it
# before it starts getting populated. go go logrep!
***************
*** 277,281 ****
EOF
! # Set up the envdir contents. Generously.
echo "$SLON_BINARY" > $DIR/env/SLON_BINARY
echo "$CONFIGFILE" > $DIR/env/CONFIGFILE
--- 326,330 ----
EOF
! # Set up the envdir contents for the admins. Generously.
echo "$SLON_BINARY" > $DIR/env/SLON_BINARY
echo "$CONFIGFILE" > $DIR/env/CONFIGFILE
***************
*** 284,288 ****
echo "$PORT" > $DIR/env/PGPORT
echo "$DATABASE" > $DIR/env/PGDATABASE
! # The absence of PGPASSWORD is not an oversight. Use .pgpass
# Configure the location of .pgpass file here...
# I'd like a better solution than this for expanding the homedir.
--- 333,338 ----
echo "$PORT" > $DIR/env/PGPORT
echo "$DATABASE" > $DIR/env/PGDATABASE
! # The absence of PGPASSWORD is not an oversight. Use .pgpass, see
! # http://www.postgresql.org/docs/current/interactive/libpq-pgpass.html
# Configure the location of .pgpass file here...
# I'd like a better solution than this for expanding the homedir.
***************
*** 293,301 ****
echo 'UTC' > $DIR/env/PGTZ
# create the run script for the slon
cat > "$DIR/run" <<EOF
#!/bin/sh
! # Note that the slon binary is a variable, so you can edit your envdir
! # settings to upgrade slons then restart them.
exec 2>&1
exec envdir ./env sh -c 'exec setuidgid ${SYSUSR} "\${SLON_BINARY}" -f "\${CONFIGFILE}"'
--- 343,394 ----
echo 'UTC' > $DIR/env/PGTZ
+ # Avoid some subtle errors by documenting stuff... such as
+ cat > "$DIR/README.txt" <<EOF
+ This service will start on boot. If you do not want it to, then
+ touch $DIR/down
+
+ To upgrade your slon, first update env/SLON_BINARY to the full
+ path and name of the new slon binary. Then stop the slon.
+ svc -d $DIR
+ Apply your slonik UPDATE FUNCTIONS script(s) then restart your slon.
+ svc -u $DIR
+ Finally, check your logs to ensure that the new slon has started and
+ is running happily.
+
+ If you need to have a special purpose config file, or test version,
+ then you can simply copy the existing slon.conf to some other name,
+ make your changes there, update env/CONFIGFILE to point at the new
+ config and restart the slon.
+ svc -k $DIR
+
+ Note that changing variables such as CLUSTER, PGHOST, PGPORT,
+ PGDATABASE and PGUSER in the env directory will not change where
+ the slon connects. They are only there for admin/DBA convenience.
+ exec envdir $DIR/env bash
+ Is a quick way to get your variables all set up.
+
+ If you want to change where the slon connects, you need to edit
+ $CONFIGFILE
+ But you probably should not be doing that anyway, because then you
+ have to rename a whole bunch of stuff and edit all over the place
+ to keep the naming scheme consistent. Yuck. You should probably
+ just create a new slon service directory with the correct information,
+ and shut this one down.
+ touch $DIR/down; svc -dx $DIR $DIR/log
+
+ EOF
+
+ cat > "$DIR/env/README.txt" <<EOF
+ Many of these environment variables are only set as a convenience
+ for administrators and DBAs. To load them, try
+ exec envdir $DIR/env bash
+ Before you change stuff here, please read ../README.txt
+ EOF
+
# create the run script for the slon
cat > "$DIR/run" <<EOF
#!/bin/sh
! # Note that the slon binary is a variable, so you can edit the value in
! # env/SLON_BINARY and restart to upgrade slons. See README.txt in this dir.
exec 2>&1
exec envdir ./env sh -c 'exec setuidgid ${SYSUSR} "\${SLON_BINARY}" -f "\${CONFIGFILE}"'
***************
*** 304,307 ****
--- 397,427 ----
echo "$DIR/run created"
+ # setup an envdir for multilog
+ echo ${LOGMAX-"10485760"} > $DIR/log/env/LOGMAX
+ echo ${LOGNUM-"99"} > $DIR/log/env/LOGNUM
+
+ cat > "$DIR/log/README.txt" <<EOF
+ To force a log rotation, use
+ svc -a $DIR/log
+
+ The size (in bytes) of the log files (before they get rotated) is controlled
+ by the s parameter for multilog. This is set up as an envdir variable at
+ $DIR/log/env/LOGMAX
+ You might want to increase or decrease this. It goes up to a maximum of
+ 16777215 (15MB) and defaults to 99999 (97kB) if unset. Leaving it unset
+ will break this script. It defaults to 10485760 (which is 10MB).
+ You need to restart multilog for changes to this to take effect.
+ svc -k $DIR/log
+
+ The n paramter decides how many old log files to keep around. This is set
+ up as an envdir variable at
+ $DIR/log/env/LOGNUM
+ You will probably want to decrease this if you are not using some other
+ tool to manage old logfiles. Multilog defaults to 10 if this is unset, but
+ like the size above, it will break this script if left unset. The script
+ defaults to 99 under the assumption that you are using some other, system
+ wide tool (like cfengine) to prune your logs.
+ EOF
+
# create the run file for the multilog
cat > "$DIR/log/run" <<EOF
***************
*** 309,330 ****
# This puts everything in the main log. Unfortunately multilog only allows
# you to select which log you want to write to as opposed to writing each
! # line to every log which matches the criteria.
! #
! # Note that size (in bytes) of the log files (before they get rotated) is
! # controlled by the s parameter. You might want to increase this. It goes
! # up to a maximum of 16777215 (15MB) and defaults to 99999 (97kB).
! # I'm using 10485760 (10MB)
! # The n paramter decides how many old log files to keep around. Defaults
! # to 10.
! exec setuidgid $SYSUSR multilog t s10485760 n99 ./main
EOF
chmod a+x "$DIR/log/run"
echo "$DIR/log/run created"
! # create and fix permissions for .pgpass appropriately
touch "$PASSFILE"
! chmod 600 "$PASSSFILE"
if [ ! -s "$PASSFILE" ]; then
! echo "Populating $PASSFILE"
cat > "$PASSFILE" <<EOF
#hostname:port:database:username:password
--- 429,446 ----
# This puts everything in the main log. Unfortunately multilog only allows
# you to select which log you want to write to as opposed to writing each
! # line to every log which matches the criteria. Split up logs would make
! # debugging harder. See also README.txt in this directory.
!
! exec envdir ./env sh -c 'exec setuidgid $SYSUSR multilog t s"\$LOGMAX" n"\$LOGNUM" ./main'
EOF
chmod a+x "$DIR/log/run"
echo "$DIR/log/run created"
! # create and fix ownerships and permissions for .pgpass appropriately
touch "$PASSFILE"
! chown "$SYSUSR" "$PASSFILE"
! chmod 600 "$PASSFILE"
if [ ! -s "$PASSFILE" ]; then
! echo "Populating $PASSFILE with header and example."
cat > "$PASSFILE" <<EOF
#hostname:port:database:username:password
***************
*** 357,360 ****
--- 473,477 ----
has been created and populated with some sample data.
+ Logfiles can be found at $LOGDIR
You may also want to set up a logrep to filter out the more intresting
log lines. See logrep-mkservice.sh.
Index: logrep-mkservice.sh
===================================================================
RCS file: /home/cvsd/slony1/slony1-engine/tools/mkservice/logrep-mkservice.sh,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** logrep-mkservice.sh 30 Mar 2007 14:49:46 -0000 1.1
--- logrep-mkservice.sh 18 Apr 2007 14:57:31 -0000 1.2
***************
*** 5,21 ****
# contributed by Andrew Hammond <andrew.george.hammond at gmail.com>
#
! # logrep: use tail -F to pull from another log file for filtering to create
! # special purpose log files. Some example filters follow.
! #
# For non-interactive use, set the following environment variables.
! # BASEDIR SYSUSR SOURCE EXTENSION CRITERIA
! #
! # Slony subscribe specific information
! # '-*' '+* * ERROR*' '+* * WARN*' '+* * CONFIG enableSubscription*' '+* * DEBUG2 remoteWorkerThread_* prepare to copy table*' '+* * DEBUG2 remoteWorkerThread_* all tables for set * found on subscriber*' '+* * DEBUG2 remoteWorkerThread_* copy*' '+* * DEBUG2 remoteWorkerThread_* Begin COPY of table*' '+* * DEBUG2 remoteWorkerThread_* * bytes copied for table*' '+* * DEBUG2 remoteWorkerThread_* * seconds to*' '+* * DEBUG2 remoteWorkerThread_* set last_value of sequence*' '+* * DEBUG2 remoteWorkerThread_* copy_set*'
! #
! # Errors to trigger nagios
! # '-*' '+* * ERROR*'
DEFAULT_BASEDIR='/usr/local/etc'
DEFAULT_SYSUSR='pgsql' # FreeBSD-centric. Oh well.
DEFAULT_SOURCE='slon_123'
--- 5,58 ----
# contributed by Andrew Hammond <andrew.george.hammond at gmail.com>
#
! # This uses "tail -F" to pull data from log files allowing you to use
! # multilog filters (by setting the CRITERIA) to create special purpose
! # log files. The goal is to provide a way to monitor log files in near
! # realtime for "interesting" data without either hacking up the initial
! # log file or wasting CPU/IO by re-scanning the same log repeatedly.
! #
# For non-interactive use, set the following environment variables.
! # BASEDIR LOGBASE SYSUSR SOURCE EXTENSION CRITERIA
! # If any of the above are not set, the script asks for configuration
! # information interactively. The following environment variables are optional.
! # LOGMAX LOGNUM
! # If they are not set, they will silently default to reasonable values.
! #
! # BASEDIR where you want the service directory structure for the logrep
! # to be created. This should _not_ be the /var/service directory.
! # LOGBASE where you want your logs to end up. (default /var/log)
! # if set to - then revert to old behaviour and put logs under log/main.
! # SYSUSR unix user under which the service should run.
! # SOURCE name of the service with the log you want to follow.
! # EXTENSION a tag to differentiate this logrep from others using the same source.
! # CRITERIA the multilog filter you want to use.
! # LOGMAX maximum size (in bytes) of logfiles (default 10485760 which is 10MB)
! # LOGNUM number of files to maintain (default 99, assume other tool prunes)
! #
! # A trivial example of this would be to provide a log file of all slon
! # ERROR messages which could be used to trigger a nagios alarm.
! # EXTENSION='ERRORS'
! # CRITERIA="'-*' '+* * ERROR*'"
! # (Reset the monitor by rotating the log using svc -a $svc_dir)
! #
! # A more interesting application is a subscription progress log.
! # EXTENSION='COPY'
! # CRITERIA="'-*' '+* * ERROR*' '+* * WARN*' '+* * CONFIG enableSubscription*' '+* * DEBUG2 remoteWorkerThread_* prepare to copy table*' '+* * DEBUG2 remoteWorkerThread_* all tables for set * found on subscriber*' '+* * DEBUG2 remoteWorkerThread_* copy*' '+* * DEBUG2 remoteWorkerThread_* Begin COPY of table*' '+* * DEBUG2 remoteWorkerThread_* * bytes copied for table*' '+* * DEBUG2 remoteWorkerThread_* * seconds to*' '+* * DEBUG2 remoteWorkerThread_* set last_value of sequence*' '+* * DEBUG2 remoteWorkerThread_* copy_set*'"
! #
! # If you have a subscription log then it's easy to determine if a given
! # slon is in the process of handling copies or other subscription activity.
! # If the log isn't empty, and doesn't end with a
! # "CONFIG enableSubscription: sub_set:1"
! # (or whatever set number you've subscribed) then the slon is currently in
! # the middle of initial copies.
! # If you happen to be monitoring the mtime of your primary slony logs to
! # determine if your slon has gone brain-dead, checking this is a good way
! # to avoid mistakenly clobbering it in the middle of a subscribe. As a bonus,
! # recall that since the the slons are running under svscan, you only need to
! # kill it (via the svc interface) and let svscan start it up again laster.
! # I've also found the COPY logs handy for following subscribe activity
! # interactively.
DEFAULT_BASEDIR='/usr/local/etc'
+ DEFAULT_LOGDIR='/var/log'
DEFAULT_SYSUSR='pgsql' # FreeBSD-centric. Oh well.
DEFAULT_SOURCE='slon_123'
***************
*** 24,28 ****
if [ -z "$BASEDIR" ]; then
! echo -n "Where do you want the service dir created? Don't want to created this in /service or /var/service. Once it's created, either link or move it to the service directory (since linking is an atomic filesystem action). If your service directory is on a small, relatively static partition, you will almost certainly want to put this on a partition that can handle some log files and then link.
[$DEFAULT_BASEDIR]: "
read BASEDIR
--- 61,69 ----
if [ -z "$BASEDIR" ]; then
! echo -n "Where do you want the service dir created? Don't create this in
! /service or /var/service. Once it's created, either symlink or move
! it to the service directory (since linking is an atomic filesystem action).
! Note that log files will not be stored here (that's the next question), so
! this doesn't have to be on a high storage / IO capacity filesystem.
[$DEFAULT_BASEDIR]: "
read BASEDIR
***************
*** 33,36 ****
--- 74,90 ----
echo "BASEDIR=$BASEDIR"
+ if [ -z "$LOGBASE" ]; then
+ echo -n "Where should the logfiles live? You probably want to put this
+ somewhere with plenty of storage and some IO capacity. Note that this
+ creates a subdirectory where the actual log files are stored.
+ Use - to disable this (putting the log files under log/main according to
+ daemontools convention).
+ [$DEFAULT_LOGDIR]: "
+ read LOGDIR
+ if [ -z "$LOGDIR" ]; then
+ LOGDIR="$DEFAULT_LOGDIR"
+ fi
+ fi
+
if [ -z "$SYSUSR" ]; then
echo -n "System user name for followgrep to run under [$DEFAULT_SYSUSR]: "
***************
*** 69,78 ****
echo "CRITERIA=$CRITERIA"
! DIR="$BASEDIR/logrep_$SOURCE$EXTENSION"
echo "Service dir will be created under $DIR"
! mkdir -p "$DIR/supervise" "$DIR/log/supervise" "$DIR/log/main" || exit -1
# Make sure the log file initially exists. This allows others to tail -F it
! # before it starts getting populated.
touch "$DIR/log/main/current" || exit -1
--- 123,144 ----
echo "CRITERIA=$CRITERIA"
!
! SVCNAME="logrep_$SOURCE$EXTENSION"
! DIR="$BASEDIR/$SVCNAME"
! LOGDIR="$DIR/log/main"
! if [ '-' != "$LOGBASE" ]; then # - means don't use a different logdir
! LOGDIR="$LOGBASE/$SVCNAME" # otherwise we're logging somewhere else
! fi
!
echo "Service dir will be created under $DIR"
+ echo "Logs will live under $LOGDIR"
!
! mkdir -p "$DIR/env" "$DIR/supervise" "$DIR/log/env" "$DIR/log/supervise" "$LOGDIR" || exit -1
! if [ '-' != "$LOGBASE" ]; then # - means it's not a linked logdir
! ln -s "$LOGDIR" "$DIR/log/main"
! fi
# Make sure the log file initially exists. This allows others to tail -F it
! # before it starts getting populated. go go recursive logrep!
touch "$DIR/log/main/current" || exit -1
***************
*** 81,101 ****
#!/bin/sh
exec 2>&1
! exec setuidgid $SYSUSR tail -F "$BASEDIR/$SOURCE/log/main/current"
EOF
chmod a+x "$DIR/run"
echo "$DIR/run created"
# create the run file for the multilog
cat > "$DIR/log/run" <<EOF
#!/bin/sh
! # DO NOT add another timestamp using the t parameter to multilog. Unless
! # of course you like being confused.
! # Note that size (in bytes) of the log files (before they get rotated) is
! # controlled by the s parameter. You might want to increase this. It goes
! # up to a maximum of 16777215 (15MB) and defaults to 99999 (97kB).
! # I'm using 10485760 (10MB)
! # The n paramter decides how many old log files to keep around. Defaults
! # to 10.
! exec setuidgid $SYSUSR multilog s10485760 n99 $CRITERIA ./main
EOF
chmod a+x "$DIR/log/run"
--- 147,193 ----
#!/bin/sh
exec 2>&1
! exec env ./env setuidgid $SYSUSR tail -F "$BASEDIR/$SOURCE/log/main/current"
EOF
chmod a+x "$DIR/run"
echo "$DIR/run created"
+ # setup an envdir for multilog
+ echo ${LOGMAX-"10485760"} > $DIR/log/env/LOGMAX
+ echo ${LOGNUM-"99"} > $DIR/log/env/LOGNUM
+
+ cat > "$DIR/log/README.txt" <<EOF
+ To force a log rotation, use
+ svc -a $DIR/log
+
+ The size (in bytes) of the log files (before they get rotated) is controlled
+ by the s parameter for multilog. This is set up as an envdir variable at
+ $DIR/log/env/LOGMAX
+ You might want to increase or decrease this. It goes up to a maximum of
+ 16777215 (15MB) and defaults to 99999 (97kB) if unset. Leaving it unset
+ will break this script. It defaults to 10485760 (which is 10MB).
+ You need to restart multilog for changes to this to take effect.
+ svc -k $DIR/log
+
+ The n paramter decides how many old log files to keep around. This is set
+ up as an envdir variable at
+ $DIR/log/env/LOGNUM
+ You will probably want to decrease this if you are not using some other
+ tool to manage old logfiles. Multilog defaults to 10 if this is unset, but
+ like the size above, it will break this script if left unset. The script
+ defaults to 99 under the assumption that you are using some other, system
+ wide tool (like cfengine) to prune your logs.
+ EOF
+
# create the run file for the multilog
cat > "$DIR/log/run" <<EOF
#!/bin/sh
! # This puts everything in the main log. Unfortunately multilog only allows
! # you to select which log you want to write to as opposed to writing each
! # line to every log which matches the criteria. Split up logs would make
! # debugging harder. See also README.txt in this directory.
! # Since we're presumably drawing data from another logfile which already
! # has timestamps, adding another would simply sow confusion.
!
! exec envdir ./env sh -c 'exec setuidgid $SYSUSR multilog s"\$LOGMAX" n"\$LOGNUM" ./main'
EOF
chmod a+x "$DIR/log/run"
- Previous message: [Slony1-commit] slony1-engine/tools/mkservice README
- Next message: [Slony1-commit] slony1-engine SAMPLE
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-commit mailing list