#!/bin/sh
# #################################################################
# Script to monitor a server
# #################################################################
####################
# CONFIGURATION USER
####################
### Check Disk Space
CHECK_DISKSPACE_ENABLE="true" #"true" or "false"
# Write the partition with the limit maximum size(if the limit is a size, put the same unit than the command "df -h" show the partition
# "/dev/sda1=90%" means that an alert mail will be sent if the disk used is more or egal than 90%
# "/dev/sda1=10G" means that an alert mail will be sent if the disk used is more or egal than 10G
CHECK_DISKSPACE_PARTITIONS_LIMITS=("/dev/sda1=80%")
### Check WebSite
CHECK_WEBSITE_ENABLE="true" #"true" or "false"
CHECK_WEBSITE_ADDRESS="http://localhost:8080/alfresco"
### Mail
MAIL_NOTIFICATION_ENABLE="true" # true or false
MAIL_NOTIFICATION_SENDER="ged@domain.ch"
MAIL_NOTIFICATION_DESTINATION="watchdog@domain.ch"
MAIL_NOTIFICATION_LOCATION="YourCompagny" # Where the script is running
MAIL_NOTIFICATION_TYPE_SERVER="GED" # Type of the server
MAIL_NOTIFICATION_TYPE_SCRIPT="Monitoring" # Type of the script like Backup, Monitoring…
### LogFile
LOGFILE="/var/log/gedMonitoring.log"
### Message
SUCCESS="SUCCESS"
ERROR="ERROR"
WARNING="WARNING"
TRUE="TRUE"
FALSE="FALSE"
######
# Init
######
### Check Disk Space
# Get the list of partition in a compact format
partitionDetails=$( df -Ph | sed -r "s/ {1,}/@/g" )
# Position elements in the output of the command "df"
POSITION_PARTITION=1
POSITION_USEDSPACE_PERCENT=5
POSITION_USEDSPACE_SIZE=3
### Check WebSite
# Success message get from command wget
CHECK_WEBSITE_WGET_SUCCESS="200 OK"
###############################################
# Get the date of the day
###############################################
getTime(){
date="$(date +'%b %e %H:%M:%S')"
echo "$date"
}
############################################################
# Check the disk space (configure in the partitionsLimites).
############################################################
checkDiskSpace(){
message="`getTime` CheckDiskSpace"
echo "$message"
echo "$message" >> $LOGFILE
# Read all partitions with the limit
for partitionsToCheck in ${CHECK_DISKSPACE_PARTITIONS_LIMITS[@]}
do
# Get the values of the parameters in the list (partition, limit)
partitionInList=${partitionsToCheck%%=*}
limitInList=${partitionsToCheck##*=}
# Read all partition on the disk
checkPartition="false" # The partition in the liste has been compared
for partitionOnDisk in $partitionDetails
do
# Check if it's the good partition
if [ "$partitionInList" != "$( echo "$partitionOnDisk" | awk -F@ '{print$1}')" ]; then
continue
fi
# The partition in the list has been found on the system
checkPartition="true"
# Read the unit (G, M, %) of the limit
typLimit=${limitInList:(-1)}
valueLimit=$(echo "$limitInList" | tr -d $typLimit)
echo "Check $partitionInList with the limit fixed with $limitInList"
# Search if the limit is fixed in "%" or unit like G, M…
if [ "$typLimit" = "%" ]; then
# The size is in %
valueToCheck=$POSITION_USEDSPACE_PERCENT
else
# The size is in unit G, M …
valueToCheck=$POSITION_USEDSPACE_SIZE
fi
usedSpace=$( echo "$partitionOnDisk" | awk -F@ -vposition=$valueToCheck '{print$position}' | tr -d $typLimit)
# Comparaison
if [ $usedSpace -ge $valueLimit ]; then
# Alert !!!
message "$WARNING : Not enough space on $partitionOnDisk.The maximum is fixed on $limitInList."
else
echo "All is ok with $partitionOnDisk with the maximum limit fixed on $limitInList"
fi
done
# Check if the partition in the list has been found in the system
if [ $checkPartition == "false" ]; then
message "$ERROR : The partition $partitionInList has not been found !!! Please check the configuration of the script."
fi
done
}
############################################################
# Check if the web site is up.
############################################################
checkWebSite(){
message="`getTime` CheckWebSite"
echo "$message"
echo "$message" >> $LOGFILE
resultWget=$(wget –spider $CHECK_WEBSITE_ADDRESS 2>&1)
if [[ "$resultWget" = *"$CHECK_WEBSITE_WGET_SUCCESS"* ]];then
echo "The website $CHECK_WEBSITE_ADDRESS is up."
else
message "$ERROR : The WebSite $CHECK_WEBSITE_ADDRESS is not responding."
fi
}
#############################################################################
# Send a mail. Do not use it directly… Use function message()
# Use it like this :
# message="I am a message"
# sendMail "%I - $MAIL_NOTIFICATION_LOCATION - GED - Backup" "$message"
#############################################################################
sendMail(){
echo "Send mail notification to : $MAIL_NOTIFICATION_DESTINATION"
echo "$2" | mail -s "$1" "$MAIL_NOTIFICATION_DESTINATION" – -r "$MAIL_NOTIFICATION_SENDER"
if [ $? -gt 0 ] ; then
message="`getTime` Unable to send mail notification"
echo "$message"
echo $MESSAGE_SEE_LOG
echo "$message" >> $LOGFILE
fi
}
#############################################################################################
# Write a message in the console and send a mail
# Use it like this :
# message "$ERROR : Unable to give permissions on the directory to link to the share"
# message "$WARNING : Unable to remove mysql file : $BACKUP_FILE_MYSQL_SLQ"
# message "End backup ($SUCCESS)"
############################################################################################
message(){
message="`getTime` $1"
echo "$message"
echo $MESSAGE_SEE_LOG
echo "$message" >> $LOGFILE
# Sendmail ?
if [ "$MAIL_NOTIFICATION_ENABLE" = "true" ]; then
# Success
echo "$message" | grep "$SUCCESS" 1>/dev/null
if [ $? = 0 ] ; then
typeMessage="Info"
fi
# WARNING
echo "$message" | grep "$WARNING" 1>/dev/null
if [ $? = 0 ] ; then
typeMessage="Warning"
fi
# ERROR
echo "$message" | grep "$ERROR" 1>/dev/null
if [ $? = 0 ] ; then
typeMessage="Error"
fi
# SendMail
sendMail "$typeMessage - $MAIL_NOTIFICATION_LOCATION - $MAIL_NOTIFICATION_TYPE_SERVER - $MAIL_NOTIFICATION_TYPE_SCRIPT" "$message"
fi
}
######
# Main
######
# Information startup
message="`getTime` Start Monitoring"
echo "$message"
echo "The log file is here : $LOGFILE"
echo ""
echo "$message" >> $LOGFILE
# CheckDiskSpace
if [ "$TRUE" = "$(echo $CHECK_DISKSPACE_ENABLE | tr "[:lower:]" "[:upper:]")" ]; then
checkDiskSpace
fi
# CheckWebSite
if [ "$TRUE" = "$(echo $CHECK_WEBSITE_ENABLE | tr "[:lower:]" "[:upper:]")" ]; then
checkWebSite
fi
# Information end
message="`getTime` End of monitoring"
echo "$message"
echo "$message" >> $LOGFILE
# Monitor the server
0 7,14 * * * /usr/local/bin/monitoring.sh > /var/log/crontab.log 2>&1
Bonjour,
C'est pas les possibilités qui manquent, pour savoir si Alfresco tourne, c'est à pas à Tomcat de le dire, mais à Alfresco, ce qui donne :
Voilà un exemple en PHP-CURL qui retourne un nombre d'élément...pis le jour ou y a rien -> Alert !
$url_for_alf = 'http://127.0.0.1:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser/'
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url_for_alfl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
$result = curl_exec($ch);
curl_close($ch); # on referme la liaison
$obj2 = (json_decode($result,true));
Il faudrait peaufiner le code mais çà fonctionne et c'est rapide à faire, $obj2 retourne une erreur ou contient des données
Content from pre 2016 and from language groups that have been closed.
Content is read-only.
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.