В этой заметке перечислены несколько простых способов заблаговременно узнать о различных проблемах на сервере, не замусоривая почтовый ящик и не настраивая сложных систем мониторинга. Из разряда «если вам лень что-то проверять и настраивать, то настройте и проверяйте хотя бы это».
Часть перечисленных ниже утилит умеет самостоятельно отправлять email-уведомления, для остальных предлагаются несложные shell-обёртки.
В качестве получателя используется дополнительная локальная рассылка admins, которая включает в себя локального root и внешнего admin@example.ru. Почему вместо этого не переопределяется локальный root?
Во-первых, root может по умолчанию принимать много информационных писем, которые помогают _понять_ причину уже _обнаруженной_ проблемы. Они важны, но если отправлять все эти письма наружу, либо потребуется настраивать их фильтрацию, либо повышается вероятность пропустить в их потоке письма, позволяющие _обнаружить_ ещё _неизвестную_ проблему.
Во-вторых, т.к. admins не является стандартным аккаунтом или группой в популярных Linux/Unix-системах, то "grep -r admins /etc /usr/local/etc
позволяет быстро определять, для каких утилит настройка уже выполнена.
Настройка почтового сервера
Определение используемого сервера:
dpkg-query -L /usr/sbin/sendmail
(Debian-based)rpm -qf /usr/sbin/sendmail
(RPM-based)sudo netstat -ntlp | grep :25
(all Linux)sockstat -4l | grep :25
(FreeBSD)
Возможные варианты в Debian и Ubuntu: http://packages.debian.org/file:/usr/sbin/sendmail
Дальше все пути и ключи команд приведены в расчёте на Debian, за исключением утилит для FreeBSD, отсутствующих в Linux.
Exim
/etc/aliases:
admins: root, admin@example.ru
Postfix
- /etc/postfix/main.cf:
virtual_alias_maps = hash:/etc/postfix/virtual
- /etc/postfix/virtual:
admins root admin@example.ru
- cd /etc/postfix && postmap virtual && cd /etc && postalias aliases && /etc/init.d/postfix restart
SSMTP, MSMTP, ESMTP
Формальные достоинства по сравнению с полноценным MTA:
- не занимают места в ОЗУ,
- проще в настройке,
- менее уязвимы, т.к. работают с правами вызвавшего пользователя и не принимают сетевых подключений.
Фактические недостатки:
- если в момент отправки письма по каким-то причинам нет связи с внешним SMTP-сервером, или SMTP-сервер отказался его принять, письмо пропадёт,
- адреса получателей иногда формируются по таким странным правилам, что SMTP-сервер не в состоянии правильно определить, кому и куда её следует доставить,
- см. выше соображения про редирект root@
Таким образом, единственное место, где imho имеет смысл их использовать — легковесные виртуальные контейнеры, для пересылки на SMTP-сервер, запущенный на Host OS.
Настройка служб мониторинга
Включение сервера
Даже о таком важном событии, как внеплановые перезагрузки, некоторые администраторы узнают, случайно проверив uptime или last. Немедленно быть в курсе событий поможет следующая строка над «exit» в /etc/rc.local:
M="Booting complete on $(hostname)."; echo $M | mail -s "$M" admins
Linux SoftRAID (mdraid)
- /etc/mdadm/mdadm.conf:
MAILADDR admins
- /etc/init.d/mdadm restart
SMART
- /etc/smartd.conf:
DEVICESCAN ... -m admins ...
- /etc/init.d/smartmontools restart
lm_sensors
- Запуск из rc.local:
/usr/local/sbin/healthd.sh &
- Код healthd.sh:
#!/bin/sh test -z "$(which sensors)" &while : ; do sensors | grep -q ALARM || { sleep 15; continue; } sensors | grep -q ALARM | logger -s -t "sensors" -p local0.crit sensors | mail -s "Hardware Health Warning" "admins" sleep 600 done
Другие варианты:
- healthd.sh — lm-sensors.org/browser/lm-sensors/trunk/prog/daemon/healthd.sh
- sensormon — www.lm-sensors.org/attachment/ticket/2133/sensormon
- lm-monitor — sourceforge.net/projects/lm-monitor/
Adaptec RAID
- Используется утилита arcconf (репозиторий с пакетом для Debian)
- Исходный текст: /usr/local/sbin/aacraid-check
- Ежедневный вызов через /etc/cron.daily/aacraid-check:
/usr/local/sbin/aacraid-check | mail -e -s 'RAID Alert' admins
Другие варианты:
- quad3datwork — www.sysadmintalk.net/forums/thread-1062.html
- aacraid-status — hwraid.le-vert.net/wiki/Adaptec#a3.3.aacraid-status
Intel MatrixRAID под FreeBSD
- Запуск: /usr/local/etc/periodic/daily/raidcheck
- Код:
#!/bin/sh cd /dev for n in ar?; do test "$n" = 'ar?' && exit # ..no ATA RAID #echo "Check $n..." atacontrol status $n | egrep -qv '(READY|ONLINE|subdisks:)' || continue atacontrol status $n | mail -s 'ATA RAID Warning' admins atacontrol status $n | logger -p local4.crit -t RAIDCheck -s done
OpenVZ
Ежедневная проверка переполнения квот в контейнерах – sources.homelink.ru/openvz/
P.S.
На 90% заметка представляет собой копипасту из локальной wiki. Если кому-то пригодится — хорошо. Не пригодится — ничего страшного ;-))
Автор: IlyaEvseev