- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF104:Ответы
Материал из Linuxformat.
Oтветы
- Есть вопрос по Open Source? Пишите нам по адресу: answers@linuxformat.ru
Мониторим сервер
В: У меня три сервера на Ubuntu, где запущены различные сервисы (Apache, MySQL, FTP, и т.д.). Начинка у этих компьютеров не очень надежная, вот я и думаю, нет ли какого-нибудь открытого ПО, способного наблюдать за несколькими серверами. Хорошо бы оно выводило результат на сайт, чтобы я мог получать доступ к нему с КПК через интернет.
Надо ли мне самому писать код, или уже есть что-то готовое?
Боб [Bob]
О: Существует множество программ, делающих то, что Вы хотите, с различной степенью сложности. Самая суровая в этом списке – Nagios (http://www.nagios.org), но для Ваших нужд будет вполне достаточно чего-нибудь попроще.
Monit (http://www.tildeslash.com/monit) в основном предназначена для мониторинга программ на локальной машине, но может наблюдать и за удаленными серверами. Лучше запускать ее не на той машине, которую надо контролировать, поскольку проблемы с сервером «уронят» также и монитор, а Вы будете продолжать думать, что все в порядке. Можно указать Monit, какие сервисы тестировать и что делать, если сервиc рухнул. Чтобы не пришлось лихорадочно вспоминать, проверили ли Вы web-страницу на предмет новых проблем – Monit может известить Вас по электронной почте. Вдобавок она умеет выполнять внешние программы или перезапускать службы. Последний вариант предназначен для локальных сервисов, но можно сделать перезапуск командой
ssh remote.server /etc/init.d/service restart
при условии, что Вы настроили SSH-аутентификацию по ключу и вводить пароль не придется. Возможны и другие внешние действия – например, при помощи скрипта xsend из xmpppy (http://xmpppy.sourceforge.net) отправить мгновенное сообщение на Ваш карманный компьютер и дать Вам знать немедленно, или отправить электронной почтой письмо на SMS-шлюз, уведомив Вас текстовым сообщением. Все зависит от того, насколько срочно Вам нужно знать, что возникла проблема, и каким образом Вы хотите узнавать об этом.
Вот выжимки из рабочего файла конфигурации:
set mailserver mail.example.com set alert me@example.com set httpd port 2812 and allow admin:monit check host slartibartfast with address 192.168.13.27 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://example.com then alert
Первая часть задает глобальные настройки – адрес получателя письма-предупреждения и включение web-интерфейса. Это позволяет соединяться отовсюду, но контролируется именем учетной записи, так что можете использовать КПК, где бы Вы ни были. Второй блок производит три теста на удаленном хосте и посылает письмо с предупреждением при любых сбоях. Если вы хотите, чтобы Monit перезапускала сервисы, добавьте по блоку на каждый сервис, по следующему образцу:
check host example.com with address 192.168.1.27 if failed port 3306 protocol mysql with timeout 15 seconds then exec “/usr/bin/ssh root@example.com /etc/init.d/mysql restart”
Команда exec тоже посылает предупреждение, и Вы узнаете, если сервис потерпит крах и будет перезапущен.
У Monit также есть web-интерфейс, так что можете время от времени выполнять проверку и убеждаться, что все работает. Monit не просто приглядывет за серверами: она может проверить нагрузку на процессор или свободное дисковое пространство или отследить изменения в содержании или атрибутах файлов и каталогов. Примерный файл конфигурации охватывает самое основное – просто раскомментируйте и отредактируйте те части, которые хотите использовать. MС
Автомонтирование с Udev
В: У меня есть автомобильный компьютер с USB-портом на передней панели, и я загрузил на него облегченную версию PCLinuxOS. Мне хотелось бы, чтобы Udev (на init level 3) автоматически монтировал USB-накопители, подключаемые к USB-порту в /media/removable. Я попытался написать следующее правило, но оно не работает:
SUBSYSTEMS==”usb”, ATTRS{product}==”Mass Storage Device”, SYMLINK:=”removable”, RUN+=”/bin/mount /dev/removable /media/removable”
Вы видите какие-нибудь ошибки в правиле? Я перечитал несколько учебников про Udev, которые привели меня к выводу, что это должно работать, но /dev/removable не создается.
Ноэль [Noel]
О: Первый шаг – попробовать правило без команды RUN, чтобы убедиться в его работоспособности. Только когда /dev/removable будет создан, и Вы сможете запустить команду mount вручную, можно добавить ее в правило. Udev умеет применять изменения в файле правил без рестарта, поэтому достачно держать файл открытым в текстовом редакторе и модернизировать правила, без отключения и подключения устройства.
Когда Вы пишете правила Udev, помните, что атрибуты, которые Вы применяете, должны браться теми же самыми, которые выводит udevinfo. Если Вы хотите использовать USB-устройства хранения данных (которые не все имеют одинаковые атрибуты продукта), попробуйте
SUBSYSTEMS==”scsi”, KERNEL==”sd[a-h]1”, SYMLINK:=”removable”, RUN+=”/bin/mount /dev/removable /media/removable”
Это правило смонтирует первый раздел любого USB-накопителя при подсоединении. Вам не надо создавать символическую ссылку с /dev/removable в правиле, которое монтирует устройство, хотя ее можно применять в других случаях, так что Ваше правило упрощается до
SUBSYSTEMS==”scsi”, KERNEL==”sd[a-h]1”, RUN+=”/bin/mount /dev/%k /media/removable”
потому что %k содержит имя, определенное ядром для этого устройства, например, sda1.
Если Ваша система использует слой SСSI для жестких дисков, данное правило заодно обнаружит при загрузке Ваш жесткий диск. Чтобы избежать этого, исключите жесткий диск из правила в явном виде. Запустив udevinfo, скопируйте атрибуты модели, затем добавьте в правило нечто вроде
ATTRS{model}!=”superduper 500G”
Большинство USB-устройств хранения данных, особенно флэш-брелки и карты памяти, имеют одиночный раздел, так что это для них подойдет. Если же Вы захотите подключить нечто вроде жесткого диска USB со множеством разделов, Вам необходимо что-то поумнее, типа
SUBSYSTEMS==”scsi”, KERNEL==”sd[a-h][0-9]”, SYMLINK:=”removable%n”, RUN+=”/usr/bin/pmount /dev/removable%n”
Это правило использует не программу mount, а более сложную pmount, применяемую большинством автомонтировщиков. Одно из ее преимуществ – в качестве аргумента ей нужен только узел устройства, и она создает точку монтирования в /media автоматически. Ее коллега, pumount, удаляет точку монтирования при размонтировании, сохраняя /media в чистоте. %n в вышеуказанном правиле заменяется на число, определенное ядром, так что третий раздел (sda3) будет смонтирован в /media/removable3. НБ