Webminstats — один из вариантов удаленного мониторинга сервера

«Правильный» сервер предполагает наличие возможности удаленных администрирования и мониторинга. В качестве одного из способов управления своим «домашним сервером» я уже давно использую Webmin. HTML-интерфейс программы предоставляет на мой взгляд вполне удобный метод — с любого компьютера, подключённого к интернету, я могу управлять службами «сервера», просмотреть файлы протоколов и т. д. и т. п.

Первой программой, которую я использовал для мониторинга, была System Health Monitor. Следующей была программа Munin. Это были отдельные программы, генерировавшие веб-страницы, для моего веб-сервера (Apache).

Но вот на днях я нашел практически те же функции, но реализованные в виде дополнительного модуля к Webmin, что на мой взгляд, даже удобнее. Называется модуль Webminstats, его домашняя страница расположена тут: http://webminstats.sourceforge.net/, пример графика загрузки сервера выглядит так:

Образец графика загрузки сервера
Образец графика загрузки сервера

Удобство на мой взгляд заключается в следующем. Выкладывать статистику сервера открыто не стоит. По этому, страницы, генерируемые System Health Monitor и Munin приходится «закрывать» от посторонних глаз при помощи файлов .htaccess. А так — аутентификация осуществляется средствами Webmin-а. Да и не каждому серверу нужен свой веб-сервер…

Установить Webminstats проще всего, воспользовавшись встроенным в Webmin модулем управления модулями (извиняюсь за тавтологию). Для этого нужно зайти в Webmin и там в меню выбрать: «Webmin» -> «Настройка Webmin» -> «Модули Webmin«. Следствием будет вот такая страница управления модулями:

webmin_module_install
Управление модулями Webmin

На этой странице нужно выбрать закладку «Install» в ней отметить пункт «С ftp или http URL«, в поле напротив него ввести адрес файла-архива с модулем (как показано на рис. выше)  и нажать кнопку «Установить модуль«.

И еще. При установке модуля на одном из компьютеров я получил сообщение об ошибке — в системе не был установлен пакет RRDTool. А на другом (с Debian 6.0.7) пришлось установить не только пакет rrdtool, но еще и пакет librrds-perl

Как я устанавливал Alfresco

Решил я установить на свой «сервер» программу Alfresco. Почитать «что такое Alfresco и с чем его едят» на русском языке можно, например, в Википедии. Также, можно почитать про Alfresco, например тут

Далее. На сайте компании-разработчика — http://www.alfresco.com/ присутствуют как коммерческая так и бесплатная версия программы. Коммерческую версию можно бесплатно использовать (пробовать) 30 дней. Бесплатная (или же т. н. Community) версия программы отличается в первую очередь отсутствием поддержки и не рекомендуется для использования «в ответственных случаях». В моем случае — я сам себе «ответственный», «энтерпрайз» мой невелик, и денег на поддержку мне жалко. Короче говоря, скачал я себе бесплатную Community-версию. На всякий случай, копию инсталятора сложил и к себе на ftp. Скачать ее с моего ftp-сервера можно по вот этой ссылке (учтите лишь, что размер файла Alfresco-Labs-3b-Linux-x86-Install составляет примерно 120 Мб, а скорость скачивания с моего сервенра неважненькая).

Ну чтож, скачал. Запустил консоль, переключился в режим администратора (ввел команду su и затем пароль root-а). Перешел в папку, в которую скачал инсталятор. Запустил команду:

chmod +x Alfresco-Labs-3b-Linux-x86-Install

(это я сделал для того, чтобы файл инсталятора стал исполняемым). Затем запустил сам инсталятор. Запустилась утилита установки. Графическая!!! Первым делом спросила меня про язык. В списке для выбора был в том числе и русский. Его и выбрал. Но, как показали итоги установки, данный факт самому интерфейсу уже установленной программы русского языка не прибавил, но вот вся моя дальнейшая установка проходила в режиме «угадай, что это за «бНОПНЯ!» (как я понимаю, сообщения в том инсталяторе под ср1251 писаны). Посему, мой совет — выбирайте «родной английский» и устанавливайте программу, а уж русифицируем мы ее позже…

Первый мой «затык» в установке был связан с отсутствием установленного на моем «сервере» пакета Java DK. То есть, JRE (Java Runtime Environment) был, а вот JDK (Java Development Kit) — не было. Чтож, прервал установку, пошел в Центр управления устанавливать пакеты. Для моей Mandriva 2008.0 это оказался пакет java-1.6.0-sun-devel (после всех обновлений — стала версия 1.6.0.06-2mdv2008.0). Его и установил. Тем кто не пользуется репозиториями дистрибутива, следует искать Java на сервере Sun. Впоследствии, при установке Alfresco, нужно будет указать путь к Java DK. Решил я посмотреть, где же он живет. Оказалось — в папке /usr/lib/jvm. Посмотрел я на ее содержимое:

~java
~java-1.6.0
~java-1.6.0-sun
/java-1.6.0-sun-1.6.0.02
/java-1.6.0-sun-1.6.0.04
/java-1.6.0-sun-1.6.0.06
~java-sun
~jre
~jre-1.6.0
~jre-1.6.0-sun
~jre-sun

И увидел три реальные папки и кучу симлинков. В двух папках (/java-1.6.0-sun-1.6.0.02 и /java-1.6.0-sun-1.6.0.04) было уже пусто — как видно, обновлялось. А в папке /java-1.6.0-sun-1.6.0.06 была как раз Java DK последней версии. Проверка же симлинков показала, что все они так или иначе приводят меня именно в эту папку. Зачем я так подробно? Затем, что впоследствии при настройке Alfresco нам потребуется указать путь к Java DK…

Чтож, с JDK разобрался. Опять запустил установку Alfresco. Про Java вопросов больше не возникло. Программа установки поинтересовалась, куда устанавливать Alfresco. Выбрал путь, предложенный по умолчанию — /opt/Alfresco. Потом инсталятор поинтересовался, где у меня живет Openoffice. Я кинулся указывать ему путь непосредственно к самому исполняемому файлу — /opt/openoffice.org2.4/program/soffice.bin. «Программа не найдена!» — сказал инсталятор!!! Ладно, указал просто путь к папке — /opt/openoffice.org2.4/program/. Ответ инсталятора был тот же — «Программа не найдена!» Где-то в интернете прочел, что мол, «…инсталятор 3-й версии ищет файл soffice.exe а не soffice.bin«… Чтобы «ублажить» инсталятор, там же рекомендовалось скопировать файл soffice.bin в файл soffice.exe. Скопировал (командой cp soffice.bin soffice.exe). Указал инсталятору на результат. «Программа не найдена!» — сказал инсталятор!!! В конечном итоге, методом «проб и ошибок» ответ был найден — инсталятору нужно было всего-лишь указать на каталог (папку) /opt/openoffice.org2.4/. И всё… Инсталятор остается доволен таким ответом. Но, как показал в дальнейшем анализ логов, для реального запуска Openoffice этого недостаточно. Подробнее читаем тут.

После того, как установка завершена, нужно запустить Alfresco. Переходим в папку, которую мы ранее выбрали для установки программы (/opt/Alfresco). В ней присутствуют два исполняемых файла — ./alf_start.sh и ./alf_stop.sh — предназначенных для запуска и остановки Alfresco соответственно. Просмотр их содержимого показал, что на самом деле они всего лишь запускают выполнение другого файла — ./alfresco.sh — но с различными ключами (start и stop, соответственно). В итоге, консольная команда запуска Alfresco выглядит так:

./alfresco.sh start

А команда остановки — вот так:

./alfresco.sh stop

Перед запуском я бы порекомендовал открыть файл ./alfresco.sh в редакторе и проверить, а в случае необходимости и подкорректировать значение переменной JAVA_HOME. В файле должно быть указано, где расположены файлы JDK (Java Development Kit). Указывает этот параметр строка:

export JAVA_HOME="/usr/lib/jvm/java"

(Увы, я уже не помню, что там было прописано изначально. В приведенном выше примере прописано уже откорректированное мной значение). Есть простой способ проверить, что значение переменной JAVA_HOME указано корректно. Для этого в консоли нужно запустить команду:

./alfresco.sh stop

Если путь к Java-машине указано неверно, Вы тут же получите сообщение о том, что «нет такого файла или каталога». В противном случае — получите целую кучу сообщений от самой Java-машины, которую мы пытаемся заставить остановить не запущенный процесс…

Если путь к Java-машине прописан верно, самое время запустить Alfresco . Вводим команду:

./alfresco.sh start

Потом запускаем свой любимый браузер (любой) и в поле адреса вводим:

http://localhost:8080/alfresco/

Итог выглядит примерно так:

Alfresco - first looks
Alfresco — first looks
  • Первое и самое важное — в адресе использован «нестандартный» номер порта — 8080. Следовательно, чтобы иметь доступ к программе извне (с других компьютеров) нужно «открыть» соответствующий порт в файерволе.
  • Как видим, на данном этапе приложение стартует с английским языком интерфейса…
  • Если что-то «пошло не так», то Вы получите сообщение «Error 400» (приложение не найдено) от Tomcat. Чаще всего эта ошибка означает, что не запустилась Java-машина. Тогда возвращаетесь к редактированию файла ./alfresco.sh на предмет правильного указания значения переменной JAVA_HOME…

Заметил, что попадают на мою эту заметку и люди с вопросом про пароль. Уж не помню, где я это брал. Но тем не менее

The default administrator user of the Alfresco application is:
LOGIN: admin
PASSWORD: admin

Естественное, пароль затем рекомендуется сменить на свой.

Есть в такой работе Alfresco еще одно «непрофессиональное» обстоятельство — при работе приложения используется «встроенная» база данных (Derby). Правда, кругом пишут о том, что по умолчанию используется HSQL, но в моем случае оказалось, что приложение настроено на использование именно базы Derby. Отчего такое не соответствие, я не знаю. Возможно, это отличие дистрибутива 3-й версии от более ранней 2-й (описаний которой в интернете как раз подавляющее большинство). Решил я воспользоваться инструкциями по настройке использования в качестве базы данных MySQL, коих в интернете превеликое множество. Но, настроить «с пол-пинка» лично у меня не вышло, и поэтому отложил я этот вопрос «до лучших времен». И дело даже не в моей привычке откладывать на потом то, что не вышло сделать за пять минут. Просто мне не терпелось русифицировать интерфейс…

Ох уж эта мне локализация интерфейсов! В принципе, согласно информации, найденной в интернете, данный вопрос не должен был вызвать у меня никаких проблем. «Все просто!», «Все очень просто!», написано, например, в Wiki-Alfresco. Достаточно всего лишь найти файл (путь указан с учетом моей установки) /opt/Alfresco/tomcat/shared/classes/alfresco/extension/web-client-config-custom.xml, а в нем — раздел Languages, выглядящий следующим образом:

  <!--
<config evaluator="string-compare" condition="Languages">
<languages>
<language locale="fr_FR">French</language>
<language locale="de_DE">German</language>
<language locale="ja_JP">Japanese</language>
</languages>
</config>
  -->

И затем в разделе этом нужно лишь убрать строки с «лишними» языками интерфейса, а оставить с «нужными» (в моем случае — с русским). И будет Вам счастье! Но не тут то было… По мере моей возни с данной программой я все больше укреплялся во мнении, что 2-й Alfresco, описанный везде и кругом, и 3-й Alfresco, с которым возился лично я, как говорят в Одессе, «две большие разницы».

Например, в указанном разделе указанного файла НЕ БЫЛО строки про русский язык интерфейса! Пришлось её дописывать руками:

<language locale="ru_RU">Russian</language>

И что это мне дало? Да ничего! Перезапустил Alfresco, а у интерфейса как был только английский язык и отсутствовала возможность выбрать русский, так всё и осталось!

На первую подсказку меня натолкнул … встроенный текстовый редактор менеджера Midnight Commander. Точнее — его (редактора) автоматическое расцвечивание синтаксиса. А еще точнее — его (расцвечивания) отсутствие в случае именно тех строк, которые должны были управлять выбором языка интерфейса. Проверка закравшегося сомнения много времени не заняла. Первый же найденный справочник по синтаксису языка подтвердил мои опасения. О чем я? Согласно справочнику, текст между тегами <!- — и — -> является КОММЕНТАРИЕМ!!! Да, да! В приведенной выше цитате из файла web-client-config-custom.xml ВЕСЬ модуль инструкций по выбору языка является ИМЕННО комментарием!!! А чтобы он стал директивой, метки коментария (теги <!- — в начале , и — -> в конце) НЕОБХОДИМО УБРАТЬ!!!

Убрал. Сохранил. Перезапустил Alfresco. В меню появилась возможость выбора (пункт «Russian»). Но!.. Но не сам русский язык интерфейса…

А дело оставалось за малым. Я-то «прикрутил» возможность выбора сообщений (интерфейса) на русском языке. Но, как оказалось, не было в инсталяторе Alfresco 3-й версии самих этих сообщений-то. То есть, в папке (путь указан с учетом моей установки) /opt/Alfresco/tomcat/shared/classes/alfresco/messages/ должны были находиться файлы, в имени которых присутствует ru_RU. Вот в них как раз и находятся те самые сообщения на русском языке. Но файлов этих там, увы, не было… На одном из форумов прочел, что 3-й Alfresco еще не переведен. Там же давался совет «скопировать файлы английского интерфейса, давши им новые имена с ru_RU внутри, а потом в этих файлах самостоятельно перевести все сообщения на русский». Хороший совет, но не для таких лентяев как я. Чтоб не переводить 3-й Alfresco «руками», погуглив самую малость, нашел я страницу проекта по русификации интерфейса Alfresco. На странице этой можно взять архив уже готовых переведенных файлов сообщений. (Кстати, копия этого архива (на всякий случай) лежит у меня тут).
И пусть не смущает номер версии (архива). У меня пристегнулось на ура! Распаковал содержимое архива в папку /opt/Alfresco/tomcat/shared/classes/alfresco/messages/. Перезапустил Alfresco. Вуаля! Есть русский язык! Результат видно на картинке:

Alfresco - русский интерфейс
Alfresco — русский интерфейс

ЗЫ. Кто знает, может и не было бы всей этой эквилибристики, если бы я скачал и установил Alfresco 2-й версии. Но так уж вышло…

Еще об Alfresco

Проблемы с FTP доступом из «домашней сети»

Подключили «тут как-то раз» наш рабочий сервер к интернету через «домовую сеть». Точнее, не только сервер, а всю сеть офиса. После этого моя Filezilla, которая до этого с работы прекрасно логинилась в мой домашний ftp-сервер, вдруг начала вываливаться по таймауту. Причем, проблема возникала именно при попытке войти (а) не анонимно в мой сервер (б) с любой машины в офисе. Лог Filezilla-ы при этом выглядел так:

Статус: Соединяюсь с 92.110.99.222:21...
Статус: Соединение установлено, ожидание приглашения...
Ответ: 220 ProFTPD 1.3.1 Server (My FTP Server) [192.168.1.1]
Команда: USER dmitry
Ответ: 331 Password required for dmitry
Команда: PASS ********
Ошибка: Превышено время ожидания соединения
Ошибка: Невозможно подключиться к серверу

При этом в логе самого ftp-сервера было все красиво:

Oct 02 18:07:39 smb-svr proftpd[24896] smb-svr (ofice.zssm.zp.ua[212.8.55.50]): FTP session opened.
Oct 02 18:07:39 proftpd[24896] smb-svr (ofice.zssm.zp.ua[212.118.55.50]): ANON dmitry: Login successful.
Oct 02 18:07:39 proftpd[24896] smb-svr (ofice.zssm.zp.ua[212.118.55.50]): Preparing to chroot to directory '/var/ftp/pub'
Oct 02 18:12:41 proftpd[24896] smb-svr (ofice.zssm.zp.ua[212.118.55.50]): FTP no transfer timeout, disconnected
Oct 02 18:12:41 proftpd[24896] smb-svr (ofice.zssm.zp.ua[212.118.55.50]): FTP session closed.

Попробовал запустить «Мастер настройки сети» программы Filezilla. Тест также завершился неудачей. Но подсказал, что существует проблема в связке IP-адреса и доменного имени, выданного нашей сети провайдером (домашней сетью). Естественно, «порулить» домашнюю сеть мне никто не даст, да и не того уровня я специалист. Поэтому решил я отключить проверку «правильности» IP-адреса у своего ftp-сервера. Для этого я в файле /etc/proftpd.conf строку:

UseReverseDNS on

заменил на:

UseReverseDNS off

Проблема ушла…