We are happy to announce that Vesta is back under active development as of 25 February 2024. We are working on v1 candidate and expect to engage more with the community over the coming months. We are committed to open source, and we encourage contributors to help us build the future of Vesta.
Автоматический рестарт MySQL и Apache
Автоматический рестарт MySQL и Apache
Данный скрипт должен перезапускать MySQL или Apache при падении
Далее дать скрипту права на выполнение и добавить в cron
с заданием, что бы каждую минуту на сервере запускался скрипт проверяя работу сервисов и при необходимости перезапускал их.
Я создал файл с этим скриптом dbmonitor.sh, разместил его в директории /etc
Вопрос: Как правильно прописать задание в cron?
Перепробовал наверное все, но cron ругается. Помогите, а то мозг уже кипит )))
Code: Select all
#!/bin/bash
# APACHE SECTION
RESTART="/etc/init.d/httpd restart"
PGREP="/usr/bin/pgrep"
HTTPD="apache"
$PGREP ${HTTPD}
if [ $? -ne 0 ]; then
$RESTART
fi
# MYSQL SECTION
RESTARTM="/etc/init.d/mysqld restart"
MYSQLD="mysqld"
$PGREP ${MYSQLD}
if [ $? -ne 0 ]; then
$RESTART
$RESTARTM
fi
с заданием, что бы каждую минуту на сервере запускался скрипт проверяя работу сервисов и при необходимости перезапускал их.
Я создал файл с этим скриптом dbmonitor.sh, разместил его в директории /etc
Вопрос: Как правильно прописать задание в cron?
Перепробовал наверное все, но cron ругается. Помогите, а то мозг уже кипит )))
Re: Автоматический рестарт MySQL и Apache
$crontab -e (ubuntu)
0 5 * * * /etc/вашскрипт.sh > /dev/null 2>&1 соответственно наделить правами на выполнение.
0 5 * * * /etc/вашскрипт.sh > /dev/null 2>&1 соответственно наделить правами на выполнение.
Last edited by Mr.Erbutw on Wed Jul 01, 2015 9:57 am, edited 1 time in total.
Re: Автоматический рестарт MySQL и Apache
Не верно!!!Mr.Erbutw wrote:$crontab -e (ubuntu)
/etc/вашскрипт.sh соответственно наделить правами на выполнение.
К тому же у меня CentOS 6.5
Re: Автоматический рестарт MySQL и Apache
Камрады, а может не городить огород и воспользоваться чудесной штукой под названием Monit?
Сайт - https://mmonit.com/monit/
Статьи:
http://habrahabr.ru/post/73506/
http://habrahabr.ru/search/?q=%5Bmonit% ... type=posts
Сайт - https://mmonit.com/monit/
Статьи:
http://habrahabr.ru/post/73506/
http://habrahabr.ru/search/?q=%5Bmonit% ... type=posts
Re: Автоматический рестарт MySQL и Apache
Что это значит? Управление кроном одинаковое что в убунте, что в центоси, что в дебиане.Kirill wrote:Не верно!!! К тому же у меня CentOS 6.5
Re: Автоматический рестарт MySQL и Apache
Почему сразу было не указать os ?...Kirill wrote:Не верно!!!Mr.Erbutw wrote:$crontab -e (ubuntu)
/etc/вашскрипт.sh соответственно наделить правами на выполнение.
К тому же у меня CentOS 6.5
Re: Автоматический рестарт MySQL и Apache
Огромное спасибо за информацию. Самое то, что надо.skurudo wrote:Камрады, а может не городить огород и воспользоваться чудесной штукой под названием Monit?
Сайт - https://mmonit.com/monit/
Статьи:
http://habrahabr.ru/post/73506/
http://habrahabr.ru/search/?q=%5Bmonit% ... type=posts
Подскажите в конфиге monit просто нужное раскомментировать. Допустим для для Apache и MySQL:
Code: Select all
###############################################################################
## Monit control file
###############################################################################
##
## Comments begin with a '#' and extend through the end of the line. Keywords
## are case insensitive. All path's MUST BE FULLY QUALIFIED, starting with '/'.
##
## Below you will find examples of some frequently used statements. For
## information about the control file and a complete list of statements and
## options, please have a look in the Monit manual.
##
##
###############################################################################
## Global section
###############################################################################
##
## Start Monit in the background (run as a daemon):
#
# set daemon 120 # check services at 2-minute intervals
# with start delay 240 # optional: delay the first check by 4-minutes (by
# # default Monit check immediately after Monit start)
#
#
## Set syslog logging with the 'daemon' facility. If the FACILITY option is
## omitted, Monit will use 'user' facility by default. If you want to log to
## a standalone log file instead, specify the full path to the log file
#
# set logfile syslog facility log_daemon
#
#
### Set the location of the Monit id file which stores the unique id for the
### Monit instance. The id is generated and stored on first Monit start. By
### default the file is placed in $HOME/.monit.id.
#
# set idfile /var/.monit.id
#
### Set the location of the Monit state file which saves monitoring states
### on each cycle. By default the file is placed in $HOME/.monit.state. If
### the state file is stored on a persistent filesystem, Monit will recover
### the monitoring state across reboots. If it is on temporary filesystem, the
### state will be lost on reboot which may be convenient in some situations.
#
# set statefile /var/.monit.state
#
## Set the list of mail servers for alert delivery. Multiple servers may be
## specified using a comma separator. By default Monit uses port 25 - it is
## possible to override this with the PORT option.
#
# set mailserver mail.bar.baz, # primary mailserver
# backup.bar.baz port 10025, # backup mailserver on port 10025
# localhost # fallback relay
#
#
## By default Monit will drop alert events if no mail servers are available.
## If you want to keep the alerts for later delivery retry, you can use the
## EVENTQUEUE statement. The base directory where undelivered alerts will be
## stored is specified by the BASEDIR option. You can limit the maximal queue
## size using the SLOTS option (if omitted, the queue is limited by space
## available in the back end filesystem).
#
# set eventqueue
# basedir /var/monit # set the base directory where events will be stored
# slots 100 # optionally limit the queue size
#
#
## Send status and events to M/Monit (for more informations about M/Monit
## see http://mmonit.com/).
#
# set mmonit http://monit:monit@192.168.1.10:8080/collector
#
#
## Monit by default uses the following alert mail format:
##
## --8<--
## From: monit@$HOST # sender
## Subject: monit alert -- $EVENT $SERVICE # subject
##
## $EVENT Service $SERVICE #
## #
## Date: $DATE #
## Action: $ACTION #
## Host: $HOST # body
## Description: $DESCRIPTION #
## #
## Your faithful employee, #
## Monit #
## --8<--
##
## You can override this message format or parts of it, such as subject
## or sender using the MAIL-FORMAT statement. Macros such as $DATE, etc.
## are expanded at runtime. For example, to override the sender, use:
#
# set mail-format { from: monit@foo.bar }
#
#
## You can set alert recipients whom will receive alerts if/when a
## service defined in this file has errors. Alerts may be restricted on
## events by using a filter as in the second example below.
#
# set alert [email protected] # receive all alerts
# set alert [email protected] only on { timeout } # receive just service-
# # timeout alert
#
#
## Monit has an embedded web server which can be used to view status of
## services monitored and manage services from a web interface. See the
## Monit Wiki if you want to enable SSL for the web server.
#
# set httpd port 2812 and
# use address localhost # only accept connection from localhost
# allow localhost # allow localhost to connect to the server and
# allow admin:monit # require user 'admin' with password 'monit'
# allow @monit # allow users of group 'monit' to connect (rw)
# allow @users readonly # allow users of group 'users' to connect readonly
#
#
###############################################################################
## Services
###############################################################################
##
## Check general system resources such as load average, cpu and memory
## usage. Each test specifies a resource, conditions and the action to be
## performed should a test fail.
check system myhost.mydomain.tld
if loadavg (1min) > 4 then alert
if loadavg (5min) > 2 then alert
if memory usage > 75% then alert
if cpu usage (user) > 70% then alert
if cpu usage (system) > 30% then alert
if cpu usage (wait) > 20% then alert
## Check a file for existence, checksum, permissions, uid and gid. In addition
## to alert recipients in the global section, customized alert can be sent to
## additional recipients by specifying a local alert handler. The service may
## be grouped using the GROUP option. More than one group can be specified by
## repeating the 'group name' statement.
check file apache_bin with path /usr/local/apache/bin/httpd
if failed checksum and
expect the sum 8f7f419955cefa0b33a2ba316cba3659 then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor
alert [email protected] on {
checksum, permission, uid, gid, unmonitor
} with the mail-format { subject: Alarm! }
group server
## Check that a process is running, in this case Apache, and that it respond
## to HTTP and HTTPS requests. Check its resource usage such as cpu and memory,
## and number of children. If the process is not running, Monit will restart
## it by default. In case the service is restarted very often and the
## problem remains, it is possible to disable monitoring using the TIMEOUT
## statement. This service depends on another service (apache_bin) which
## is defined above.
check process apache with pidfile /usr/local/apache/logs/httpd.pid
start program = "/etc/init.d/httpd start" with timeout 60 seconds
stop program = "/etc/init.d/httpd stop"
if cpu > 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart
if totalmem > 200.0 MB for 5 cycles then restart
if children > 250 then restart
if loadavg(5min) greater than 10 for 8 cycles then stop
if failed host www.tildeslash.com port 80 protocol http
and request "/somefile.html"
then restart
if failed port 443 type tcpssl protocol http
with timeout 15 seconds
then restart
if 3 restarts within 5 cycles then timeout
depends on apache_bin
group server
## Check filesystem permissions, uid, gid, space and inode usage. Other services,
## such as databases, may depend on this resource and an automatically graceful
## stop may be cascaded to them before the filesystem will become full and data
## lost.
check filesystem datafs with path /dev/sdb1
start program = "/bin/mount /data"
stop program = "/bin/umount /data"
if failed permission 660 then unmonitor
if failed uid root then unmonitor
if failed gid disk then unmonitor
if space usage > 80% for 5 times within 15 cycles then alert
if space usage > 99% then stop
if inode usage > 30000 then alert
if inode usage > 99% then stop
group server
## Check a file's timestamp. In this example, we test if a file is older
## than 15 minutes and assume something is wrong if its not updated. Also,
## if the file size exceed a given limit, execute a script
check file database with path /data/mydatabase.db
if failed permission 700 then alert
if failed uid data then alert
if failed gid data then alert
if timestamp > 15 minutes then alert
if size > 100 MB then exec "/my/cleanup/script" as uid dba and gid dba
## Check directory permission, uid and gid. An event is triggered if the
## directory does not belong to the user with uid 0 and gid 0. In addition,
## the permissions have to match the octal description of 755 (see chmod(1)).
#
# check directory bin with path /bin
# if failed permission 755 then unmonitor
# if failed uid 0 then unmonitor
# if failed gid 0 then unmonitor
#
#
## Check a remote host availability by issuing a ping test and check the
## content of a response from a web server. Up to three pings are sent and
## connection to a port and an application level network check is performed.
#
# check host myserver with address 192.168.1.1
# if failed icmp type echo count 3 with timeout 3 seconds then alert
# if failed port 3306 protocol mysql with timeout 15 seconds then alert
# if failed url http://user:[email protected]:8080/?querystring
# and content == 'action="j_security_check"'
# then alert
#
#
###############################################################################
## Includes
###############################################################################
##
## It is possible to include additional configuration parts from other files or
## directories.
#
# include /etc/monit.d/*
#
#
# set daemon mode timeout to 1 minute
set daemon 60
# Include all files from /etc/monit.d/
include /etc/monit.d/*
Прошу прощения за глупый вопрос.
Re: Автоматический рестарт MySQL и Apache
В принципе да, но я уже просто удаляю все лишнее и ставлю свое. Давайте я покажу, так будет визуально поменятнее:Kirill wrote: Подскажите в конфиге monit просто нужное раскомментировать. Допустим для для Apache и MySQL:
/etc/monit.confShow
Code: Select all
set daemon 60
set logfile /var/log/monit.log
set logfile syslog facility log_daemon
set mailserver localhost
set alert [email protected] with mail-format {
from: monit@domain.com
subject: OVH8 - $SERVICE $EVENT at $DATE
message: Monit $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION.
ZA RABOTU!
}
set httpd port 10001 and
#SSL ENABLE
#PEMFILE /var/certs/monit.pem
allow sku:password4monit
check filesystem hdd with path /
if space usage > 70% then alert
if inode usage > 80% then alert
check system domain.com
if loadavg (1min) > 7 then alert
if loadavg (5min) > 5 then alert
if memory usage > 85% then alert
if cpu usage (user) > 90% then alert
if cpu usage (system) > 90% then alert
if cpu usage (wait) > 80% then alert
check process proftpd with pidfile /var/run/proftpd.pid
start program = "/etc/init.d/proftpd start"
stop program = "/etc/init.d/proftpd stop"
if failed port 21 protocol ftp for 32 cycles then alert
#if failed port 21 protocol ftp for 64 cycles then restart
if 15 restarts within 15 cycles then timeout
check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/sshd start"
stop program "/etc/init.d/sshd stop"
if failed port 22 protocol ssh for 7 cycles then alert
if failed port 22 protocol ssh for 15 cycles then restart
if 15 restarts within 15 cycles then timeout
check process mysql with pidfile /var/run/mysqld/mysqld.pid
start program = "/etc/init.d/mysqld start"
stop program = "/etc/init.d/mysqld stop"
if failed host 127.0.0.1 port 3306 for 5 cycles then alert
if cpu usage > 30% for 10 cycles then alert
if cpu usage > 50% for 10 cycles then alert
if 15 restarts within 15 cycles then timeout
check process httpd with pidfile /var/run/httpd.pid
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
if failed host 192.168.0.1 port 80 for 5 cycles then alert
if 15 restarts within 15 cycles then timeout
Можно делать и отдельными модулями там, но я предпочитаю в одном файле, особенно когда проверок не так много. Вариант, о котором вы говорите, это когда много сервисов проверяется, чтобы все в одном конфиге не городить.Kirill wrote:Файл /etc/monit.d/httpd необходимо тоже создать для записи директив для перезагрузки? Или не надо его создавать.
Re: Автоматический рестарт MySQL и Apache
«Огород не огород» точнее нужно было формулировать вопрос автору ... а вышло совсем подругому.skurudo wrote:Камрады, а может не городить огород ...
Kirill wrote:Вопрос: Как правильно прописать задание в cron?
Last edited by Mr.Erbutw on Wed Jul 01, 2015 1:11 pm, edited 1 time in total.