Простой bash скрипт для мониторнга сервера
Рубрика: Apache
Метки: Linux | shell | мониторинг | скрипты
Воскресенье, 15 февраля 2009 г.
Просмотров: 3939
Подписаться на комментарии по RSS
Метки: Linux | shell | мониторинг | скрипты
Воскресенье, 15 февраля 2009 г.
Просмотров: 3939
Подписаться на комментарии по RSS
В этой заметке я представляю простой bash скрипт для мониторинга вебсервера на различных портах (smtp, dns, http & https , но могут быть легко добавлены другие). СУществуют более мощные программы мониторинга, однако мне в некоторых условиях хватает и его
Спонсор поста:
Кировский БиоХимЗавод: продам спирт технический. Объемы любые! Недорого
Необходимые компоненты
Вам необходимо иметь установленные mail, dig и telnet.
Скрипт
#!/bin/bash # Скрипт для провверки доступности портов вашего сервера # This script is licensed under GNU GPL version 2.0 or above # --------------------------------------------------------------------- ### Этот скрипт проверяет порты 25, 53, 80 и 443 ### ### После двух неудачных проверок будет послано уведомление на email ### ###### Эта секция может модифицироваться###### WORKDIR="/root" ###HTTP### HTTPSERVERIP="192.168.1.106" HTTPSERVERPORT="80" ########## ###HTTPS### HTTPSSERVERIP="192.168.1.106" HTTPSSERVERPORT="443" ########## ###MAIL### SMTPSERVERIP="192.168.1.106" SMTPSERVERPORT="25" ########## ###DNS### DNSSERVERIP="192.168.1.106" DOMAINTOCHECKDNS="example.com" ANSWERIP="192.168.1.106" ######### ### Мыло админа### EMAIL="admin@example.com" ########## ############ ###### В эту секцию не нужно вносить изменения##### ### Binaries ### MAIL=$(which mail) TELNET=$(which telnet) DIG=$(which dig) ###Change dir### cd $WORKDIR ###Restore when problem fix### if [ $1 ]; then if [ $1=="fix" ]; then rm server_problem*.txt exit 1; fi fi ###Check if already notified### if [ -f server_problem.txt ]; then exit 1; fi ###Проверяем SMTP### ( echo "quit" ) | $TELNET $SMTPSERVERIP $SMTPSERVERPORT | grep Connected > /dev/null 2>&1 if [ "$?" -ne "1" ]; then #Ok echo "PORT CONNECTED" if [ -f server_problem_first_time_smtp.txt ]; then #remove file if problem fixed rm -rf server_problem_first_time_smtp.txt fi else #Connection failure if [ -f server_problem_first_time_smtp.txt ]; then #Second time, send notification below echo "SMTP PORT NOT CONNECTING" >> server_problem.txt rm -rf server_problem_first_time_smtp.txt else #First notification > server_problem_first_time_smtp.txt fi fi ###Проверяем HTTP### ( echo "quit" ) | $TELNET $HTTPSERVERIP $HTTPSERVERPORT | grep Connected > /dev/null 2>&1 if [ "$?" -ne "1" ]; then #Ok echo "PORT CONNECTED" if [ -f server_problem_first_time_http.txt ]; then #remove file if problem fixed rm -rf server_problem_first_time_http.txt fi else #Connection failure if [ -f server_problem_first_time_http.txt ]; then #Second time, send notification below echo "HTTP PORT NOT CONNECTING" >> server_problem.txt rm -rf server_problem_first_time_http.txt else #First notification > server_problem_first_time_http.txt fi fi ###Проверяем HTTPS### ( echo "quit" ) | $TELNET $HTTPSSERVERIP $HTTPSSERVERPORT | grep Connected > /dev/null 2>&1 if [ "$?" -ne "1" ]; then #Ok echo "PORT CONNECTED" if [ -f server_problem_first_time_https.txt ]; then #remove file if problem fixed rm -rf server_problem_first_time_https.txt fi else #Connection failure if [ -f server_problem_first_time_https.txt ]; then #Second time, send notification below echo "HTTPS PORT NOT CONNECTING" >> server_problem.txt rm -rf server_problem_first_time_https.txt else #First notification > server_problem_first_time_https.txt fi fi ###Проверяем DNS### $DIG $DOMAINTOCHECKDNS @$DNSSERVERIP | grep $ANSWERIP if [ "$?" -ne "1" ]; then #Ok echo "PORT CONNECTED" if [ -f server_problem_first_time_dns.txt ]; then #удаляем файл если проблема решена rm -rf server_problem_first_time_dns.txt fi else #Connection failure if [ -f server_problem_first_time_dns.txt ]; then #Second time, send notification below echo "DNS PORT NOT CONNECTING" >> server_problem.txt rm -rf server_problem_first_time_dns.txt else #First notification > server_problem_first_time_dns.txt fi fi ###Send mail notification after 2 failed check### if [ -f server_problem.txt ]; then $MAIL -s "Server problem" $EMAIL < /root/server_problem.txt fi
Делаем скрипт исполняемым:
chmod +x whatever_you_called_this_script
И добавляем его в crontab :
* * * * * /root/check >/dev/null 2>&1
Постовой
Компания "Такелажник" занимается перевозкой спецтехники, предоставляет в аренду спецтехнику, выполняет любые такелажные работы.
Еще записи по теме
- Как установить или обновить: Linux, Apache, MySQL и PHP с использованием Yum
- Блокировка IP адресов и подсететей в Nginx
- Скрываем версию PHP (X-Powered-By)
- Скрываем версию lighttpd
- Установка MyDNS и MyDNSConfig 3 в Fedora 10, часть 1
- Прячем версию Apache
- Установка MyDNS и MyDNSConfig 3 в Fedora 10, часть 2


Комментариев: 1
А почему вместо телнета не использовался ssh?