Опубликовано 4th Jun 2018 10:47:22 в категории Linux
Здравствуй, дорогой друг! Если системному администратору linux нужно мониторить свои машины в локальной сети и получать критические сообщения по email, то необязательно поднимать всякие Zabbix и Nagios, а вот использовать простые доступные средства вполне можно, тем более это намного легче, чем настроить триггеры в том же Zabbix.
Итак, что нам, собственно, нужно от простой системы мониторинга? Нам нужно:
Как можно реализовать:
Исходные данные есть, начинаем реализовывать.
#!/bin/bash
# Начальные настройки
HOSTFILE="/etc/monit_hosts"
HOSTFILETMP="/tmp/monit_hosts.tmp"
ADMEMAILS="/etc/admin_emails"
cp $HOSTFILE $HOSTFILETMP
> $HOSTFILE
while read -r IP HOST STATUS
do
RESULT=`ping -c 5 $IP | grep ttl`
if [ "$RESULT" == "" ] && [ "$STATUS" == "1" ]; #если хост недоступен
then #отправляем email
/usr/bin/send_alert "$HOST упал" $ADMEMAILS
STATUS=0
elif [ "$RESULT" != "" ] && [ "$STATUS" == "0" ]; #если хост доступен
then #отправляем email
/usr/bin/send_alert "$HOST поднялся" $ADMEMAILS
STATUS=1
fi
echo "$IP $HOST $STATUS" >> $HOSTFILE
done <"$HOSTFILETMP"
rm $HOSTFILETMP
exit
В списке ip указываем каждый с новой строки
192.168.1.1
192.168.1.2
и т.п.
#!/bin/bash
#получаем дату и время в нужном формате
date_now="$(date +%d-%m-%Y %H:%M:%S)";
#адресат
to_email="$2";
#формируем хидер и отправляем нужному адресату
echo "To: $to_email
From: email_для_отправки@test.com
Subject: Админ, внимание!
ВНИМАНИЕ!
$date_now произошло следующее событие:
$1.
" | ssmtp -v -s $to_email
Замените "email_для_отправки@test.com" на ваш email, с которого будут отправляться оповещения. Он обязательно должен существовать. Далее настроим ssmtp на подключение к вашей почте
Приведем файл /etc/ssmtp/ssmtp.conf к следующему виду:
root=postmaster
mailhub=mail
hostname=hostname_вашего_сервера
FromLineOverride=YES
AuthUser=имя_пользователя
AuthPass=пароль_от_почты
mailhub=smtp.yandex.ru:465
UseTLS=YES
Данные настройки показаны для использования Яндекс-почты для отправки оповещений. Если у тебя другая почта, то настройки будут другими, читай соответствующие маны по своему почтовому хостингу.
/etc/admin_emails имеет вид:
email1@test.com, email2.test.com
То есть email'ы перечислены через запятую.
Кладем скрипты куда надо, даем права на исполнение, и пробуем. Легко и просто, не правда ли? Добавляем в crontab скрипт мониторинга на любое удобное время
Поддержите блог!