You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-29 08:21:15 +03:00
346 lines
9.2 KiB
Bash
Executable File
346 lines
9.2 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# $Id: syslogSetup.sh 421 2007-04-05 15:46:55Z dhill $
|
|
#
|
|
# syslogSetup.sh - install / uninstall MariaDB Columnstore system logging configuration
|
|
|
|
# no point in going any further if not root... (only works in bash)
|
|
#test $EUID -eq 0 || exit 0
|
|
|
|
syslog_conf=nofile
|
|
rsyslog7=0
|
|
non_root_user=no
|
|
|
|
user=`whoami 2>/dev/null`
|
|
|
|
#set default names
|
|
groupname=adm
|
|
username=syslog
|
|
|
|
# determine username/groupname
|
|
|
|
if [ -f /var/log/messages ]; then
|
|
username=`stat -c "%U %G" /var/log/messages | awk '{print $1}'`
|
|
groupname=`stat -c "%U %G" /var/log/messages | awk '{print $2}'`
|
|
fi
|
|
|
|
if [ -f /var/log/syslog ]; then
|
|
username=`stat -c "%U %G" /var/log/syslog | awk '{print $1}'`
|
|
groupname=`stat -c "%U %G" /var/log/syslog | awk '{print $2}'`
|
|
fi
|
|
|
|
for arg in "$@"; do
|
|
if [ `expr -- "$arg" : '--user='` -eq 7 ]; then
|
|
user="`echo $arg | awk -F= '{print $2}'`"
|
|
groupname=$user
|
|
username=$user
|
|
non_root_user=yes
|
|
elif [ `expr -- "$arg" : '--..*'` -ge 3 ]; then
|
|
echo "ignoring unknown argument: $arg" 1>&2
|
|
elif [ `expr -- "$arg" : '--'` -eq 2 ]; then
|
|
shift
|
|
break
|
|
else
|
|
break
|
|
fi
|
|
shift
|
|
done
|
|
|
|
columnstoreSyslogFile=@ENGINE_SUPPORTDIR@/columnstoreSyslog
|
|
columnstoreSyslogFile7=@ENGINE_SUPPORTDIR@/columnstoreSyslog7
|
|
|
|
#get temp directory
|
|
tmpDir=@ENGINE_LOGDIR@/install
|
|
|
|
checkSyslog() {
|
|
#check which syslog daemon is being used
|
|
#first check which is running
|
|
daemon="nodaemon"
|
|
cnt=`ps -ef | grep -v grep | grep syslog-ng | wc -l`
|
|
if [ $cnt -gt 0 ]; then
|
|
daemon="syslog-ng"
|
|
else cnt=`ps -ef | grep -v grep | grep rsyslog | wc -l`
|
|
if [ $cnt -ge 1 ]; then
|
|
daemon="rsyslog"
|
|
else cnt=`ps -ef | grep -v grep | grep syslogd | wc -l`
|
|
if [ $cnt -ge 1 ]; then
|
|
if [ "$daemon" != "rsyslog" ]; then
|
|
daemon=syslog
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
#if none running, check installed
|
|
if [ "$daemon" = "nodaemon" ]; then
|
|
|
|
if [ -f /etc/syslog.conf ]; then
|
|
daemon="syslog"
|
|
/etc/init.d/syslog start > /dev/null 2>&1
|
|
elif [ -f /etc/rsyslog.conf ]; then
|
|
daemon="rsyslog"
|
|
/etc/init.d/rsyslog start > /dev/null 2>&1
|
|
elif [ -f /etc/init.d/syslog-ng ]; then
|
|
daemon="syslog-ng"
|
|
/etc/init.d/syslog-ng start > /dev/null 2>&1
|
|
fi
|
|
fi
|
|
|
|
#if none running or installed, exit
|
|
if [ "$daemon" = "nodaemon" ]; then
|
|
echo ""
|
|
echo "*** No System Logging Application found (syslog, rsyslog, or syslog-ng)"
|
|
echo "*** For MariaDB Columnstore System Logging functionality, install a System Logging package and reinstall MariaDB Columnstore"
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
|
|
#check which syslog config file is installed
|
|
if [ "$daemon" = "syslog-ng" ]; then
|
|
if [ -f /etc/syslog-ng/syslog-ng.conf ]; then
|
|
syslog_conf=/etc/syslog-ng/syslog-ng.conf
|
|
columnstoreSyslogFile=@ENGINE_SUPPORTDIR@/columnstoreSyslog-ng
|
|
echo ""
|
|
echo "System logging being used: syslog-ng"
|
|
echo ""
|
|
fi
|
|
elif [ "$daemon" = "rsyslog" ]; then
|
|
#check if rsyslog version 7 or greater
|
|
rsyslogd -v > ${tmpDir}/rsyslog.ver
|
|
cnt=`grep "rsyslogd \+7" ${tmpDir}/rsyslog.ver | wc -l`
|
|
if [ $cnt -gt 0 ]; then
|
|
rsyslog7=1
|
|
fi
|
|
cnt=`grep "rsyslogd \+8" ${tmpDir}/rsyslog.ver | wc -l`
|
|
if [ $cnt -gt 0 ]; then
|
|
rsyslog7=1
|
|
fi
|
|
cnt=`grep "rsyslogd \+9" ${tmpDir}/rsyslog.ver | wc -l`
|
|
if [ $cnt -gt 0 ]; then
|
|
rsyslog7=1
|
|
fi
|
|
|
|
if [ -f /etc/rsyslog.conf ]; then
|
|
cnt=`grep "/etc/rsyslog.d/" /etc/rsyslog.conf | wc -l`
|
|
if [ $cnt -gt 0 ]; then
|
|
if [ $rsyslog7 == 1 ]; then
|
|
syslog_conf=/etc/rsyslog.d/49-columnstore.conf
|
|
else
|
|
syslog_conf=/etc/rsyslog.d/columnstore.conf
|
|
fi
|
|
else
|
|
syslog_conf=/etc/rsyslog.conf
|
|
fi
|
|
echo ""
|
|
echo "System logging being used: rsyslog"
|
|
echo ""
|
|
fi
|
|
elif [ "$daemon" = "syslog" ]; then
|
|
if [ -f /etc/syslog.conf ]; then
|
|
syslog_conf=/etc/syslog.conf
|
|
echo ""
|
|
echo "System logging being used: syslog"
|
|
echo ""
|
|
elif [ -d /etc/syslog-ng/syslog-ng.conf ]; then
|
|
syslog_conf=/etc/syslog-ng/syslog-ng.conf
|
|
columnstoreSyslogFile=@ENGINE_SUPPORTDIR@/columnstoreSyslog-ng
|
|
echo ""
|
|
echo "System logging being used: syslog-ng"
|
|
echo ""
|
|
fi
|
|
else
|
|
echo ""
|
|
echo "*** No System Logging Application found (syslog, rsyslog, or syslog-ng)"
|
|
echo "*** For MariaDB Columnstore System Logging functionality, install a System Logging package and reinstall MariaDB Columnstore"
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
|
|
}
|
|
|
|
makeDir() {
|
|
if [ ! -d @ENGINE_LOGDIR@ ]; then
|
|
mkdir -p @ENGINE_LOGDIR@ >/dev/null 2>&1
|
|
test -d @ENGINE_LOGDIR@/archive || mkdir @ENGINE_LOGDIR@/archive >/dev/null 2>&1
|
|
test -d @ENGINE_LOGDIR@/corefiles || mkdir @ENGINE_LOGDIR@/corefiles >/dev/null 2>&1
|
|
test -d @ENGINE_LOGDIR@/trace || mkdir @ENGINE_LOGDIR@/trace >/dev/null 2>&1
|
|
chown $username:$groupname -R /var/log/mariadb
|
|
else
|
|
test -d @ENGINE_LOGDIR@/archive || mkdir @ENGINE_LOGDIR@/archive >/dev/null 2>&1
|
|
test -d @ENGINE_LOGDIR@/corefiles || mkdir @ENGINE_LOGDIR@/corefiles >/dev/null 2>&1
|
|
test -d @ENGINE_LOGDIR@/trace || mkdir @ENGINE_LOGDIR@/trace >/dev/null 2>&1
|
|
fi
|
|
}
|
|
|
|
install() {
|
|
makeDir
|
|
checkSyslog
|
|
if [ ! -z "$syslog_conf" ] ; then
|
|
@ENGINE_BINDIR@/mcsSetConfig -d Installation SystemLogConfigFile ${syslog_conf} >/dev/null 2>&1
|
|
if [ $non_root_user == "yes" ]; then
|
|
chown $user:$user @ENGINE_SYSCONFDIR@/columnstore/Columnstore.xml*
|
|
fi
|
|
|
|
rm -f ${syslog_conf}.columnstoreSave
|
|
if [ "$syslog_conf" == /etc/rsyslog.d/columnstore.conf ] ||
|
|
[ "$syslog_conf" == /etc/rsyslog.d/49-columnstore.conf ]; then
|
|
i=1
|
|
else
|
|
cp ${syslog_conf} ${syslog_conf}.columnstoreSave >/dev/null 2>&1
|
|
sed -i '/# MariaDB/,$d' ${syslog_conf}.columnstoreSave > /dev/null 2>&1
|
|
fi
|
|
|
|
egrep -qs 'MariaDB Columnstore Database Platform Logging' ${syslog_conf}
|
|
if [ $? -ne 0 ]; then
|
|
#set the syslog for ColumnStore logging
|
|
# remove older version incase it was installed by previous build
|
|
rm -rf /etc/rsyslog.d/columnstore.conf
|
|
|
|
if [ $rsyslog7 == 1 ]; then
|
|
rm -f /etc/rsyslog.d/49-columnstore.conf
|
|
cp ${columnstoreSyslogFile7} ${syslog_conf}
|
|
|
|
sed -i -e s/groupname/$groupname/g ${syslog_conf}
|
|
sed -i -e s/username/$username/g ${syslog_conf}
|
|
chmod 644 ${syslog_conf}
|
|
else
|
|
cp ${columnstoreSyslogFile} ${syslog_conf}
|
|
fi
|
|
fi
|
|
|
|
restartSyslog
|
|
|
|
# install Columnstore Log Rotate File
|
|
if [ -d /etc/logrotate.d ]; then
|
|
cp @ENGINE_SUPPORTDIR@/columnstoreLogRotate /etc/logrotate.d/columnstore > /dev/null 2>&1
|
|
chmod 644 /etc/logrotate.d/columnstore
|
|
|
|
#do the logrotate to start with a fresh log file during install
|
|
logrotate -f /etc/logrotate.d/columnstore > /dev/null 2>&1
|
|
fi
|
|
|
|
#log install message and find the least permission that allows logging to work
|
|
CHMOD_LIST=("755" "775" "777")
|
|
for CHMOD in "${CHMOD_LIST[@]}"; do
|
|
chmod $CHMOD /var/log/mariadb
|
|
chmod $CHMOD @ENGINE_LOGDIR@
|
|
chmod $CHMOD @ENGINE_LOGDIR@/archive
|
|
chmod $CHMOD @ENGINE_LOGDIR@/corefiles
|
|
chmod $CHMOD @ENGINE_LOGDIR@/trace
|
|
|
|
@ENGINE_BINDIR@/cplogger -i 19 "***** MariaDB Columnstore Installed *****"
|
|
|
|
if [ -f @ENGINE_LOGDIR@/info.log ]; then
|
|
if [ -s @ENGINE_LOGDIR@/info.log ]; then
|
|
exit 0
|
|
fi
|
|
fi
|
|
done
|
|
fi
|
|
|
|
}
|
|
|
|
uninstall() {
|
|
checkSyslog
|
|
if [ ! -z "$syslog_conf" ] ; then
|
|
if [ "$syslog_conf" != /etc/rsyslog.d/columnstore.conf ]; then
|
|
if [ "$syslog_conf" != /etc/rsyslog.d/49-columnstore.conf ]; then
|
|
egrep -qs 'MariaDB Columnstore Database Platform Logging' ${syslog_conf}
|
|
if [ $? -eq 0 ]; then
|
|
if [ -f ${syslog_conf}.columnstoreSave ] ; then
|
|
#uninstall the syslog for ColumnStore logging
|
|
mv -f ${syslog_conf} ${syslog_conf}.ColumnStoreBackup
|
|
mv -f ${syslog_conf}.columnstoreSave ${syslog_conf} >/dev/null 2>&1
|
|
if [ ! -f ${syslog_conf} ] ; then
|
|
cp ${syslog_conf}.ColumnStoreBackup ${syslog_conf}
|
|
fi
|
|
fi
|
|
fi
|
|
sed -i '/# MariaDB/,$d' ${syslog_conf} > /dev/null 2>&1
|
|
else
|
|
rm -f "$syslog_conf"
|
|
fi
|
|
else
|
|
rm -f "$syslog_conf"
|
|
fi
|
|
|
|
# uninstall Columnstore Log Rotate File
|
|
rm -f /etc/logrotate.d/columnstore
|
|
|
|
restartSyslog
|
|
fi
|
|
|
|
}
|
|
|
|
status() {
|
|
checkSyslog
|
|
if [ ! -z "$syslog_conf" ] ; then
|
|
egrep -qs 'MariaDB Columnstore Database Platform Logging' ${syslog_conf}
|
|
if [ $? -eq 0 ]; then
|
|
echo $syslog_conf
|
|
else
|
|
echo "No System Log Config File configured for MariaDB Columnstore System Logging"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
check() {
|
|
. columnstore_functions
|
|
number=$RANDOM
|
|
cplogger -i 104 "MariaDB Columnstore Log Test: $number"
|
|
sleep 3
|
|
egrep -qs "MariaDB Columnstore Log Test: $number" @ENGINE_LOGDIR@/info.log
|
|
if [ $? -eq 0 ]; then
|
|
echo "MariaDB Columnstore System Logging working"
|
|
exit 0
|
|
else
|
|
echo "MariaDB Columnstore System Logging not working"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
restartSyslog() {
|
|
|
|
if [ "$daemon" = "syslog-ng" ]; then
|
|
if [ -f /etc/init.d/syslog-ng ]; then
|
|
/etc/init.d/syslog-ng restart > /dev/null 2>&1
|
|
else
|
|
systemctl restart syslog-ng.service > /dev/null 2>&1
|
|
fi
|
|
elif [ "$daemon" = "rsyslog" ]; then
|
|
if [ -f /etc/init.d/rsyslog ]; then
|
|
/etc/init.d/rsyslog restart > /dev/null 2>&1
|
|
else
|
|
systemctl restart rsyslog.service > /dev/null 2>&1
|
|
fi
|
|
elif [ "$daemon" = "syslog" ]; then
|
|
if [ -f /etc/init.d/syslog ]; then
|
|
/etc/init.d/syslog restart > /dev/null 2>&1
|
|
else
|
|
systemctl restart syslog.service > /dev/null 2>&1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
case "$1" in
|
|
install)
|
|
install
|
|
;;
|
|
uninstall)
|
|
uninstall
|
|
;;
|
|
status)
|
|
status
|
|
;;
|
|
check)
|
|
check
|
|
;;
|
|
*)
|
|
echo $"Usage: $0 {install|uninstall|status|check)"
|
|
exit 1
|
|
esac
|
|
|
|
|
|
exit 0
|
|
|