Вопрос или проблема
Я новичок в Linux и установил Ubuntu 12.04 на Digital Ocean.
Я установил Monit и настроил мониторинг MySQL с уведомлением по электронной почте.
Я хочу мониторить Apache2 также, но не могу найти файл httpd.pid
, который нужно указать в файле monitrc.
Я могу запустить Apache2 с помощью команды: /etc/init.d/apache2 start
Я могу остановить Apache2 с помощью команды: /etc/init.d/apache2 stop
Я могу перезапустить Apache2 с помощью команды: /etc/init.d/apache2 restart
Какие еще способы есть для мониторинга Apache2 в Monit без файла httpd.pid?
Если вы посмотрите в скрипт инициализации, он использует значение $APACHE_PID_FILE
, которое он читает из файла, определенного как $APACHE_ENVVARS
, которое, я думаю, по умолчанию указывает на /etc/apache2/envvars
PIDFILE=$(. $APACHE_ENVVARS && echo $APACHE_PID_FILE)
В файле envvars
PIDFILE
определяется как
APACHE_PID_FILE=/var/run/apache2$SUFFIX.pid
Если вы не запускаете несколько экземпляров apache2, $SUFFIX
скорее всего будет ""
, поэтому значение $APACHE_PID_FILE
будет
/var/run/apache2.pid
но вы должны быть в состоянии выполнить
echo $(. /etc/apache2/envvars && echo $APACHE_PID_FILE)
и получить значение, которое считает ваша система.
На Centos, есть большая вероятность, что используется утилита “service” для управления демонами. Сервисы настроены в директории: /etc/init.d/
В файле /etc/init.d/httpd
вы найдете местоположение файла pid. Я вижу что-то вроде pidfile=${PIDFILE-/var/run/httpd/${prog}.pid}
Таким образом, оказывается, что мой pid-файл расположен по адресу /var/run/httpd/httpd.pid
Попробовал бы два варианта:
- Посмотрите, можете ли вы настроить Apache на создание PID-файла. Ссылка: http://httpd.apache.org/docs/2.2/mod/mpm_common.html#pidfile
- Модифицируйте скрипт запуска/остановки apache2, чтобы создать PID-файл во время запуска/остановки с использованием команды
pgrep
. Ссылка: http://mmonit.com/wiki/Monit/ConfigurationExamples
Если вы устанавливаете Apache 2.4 или через chef cookbook(https://github.com/sous-chefs/apache2), то местоположение будет /var/run/apache2/apache2.pid
.
Ответ или решение
Разберемся с вашей проблемой мониторинга Apache с помощью Monit. Проблемы с поиском файла httpd.pid часто возникают из-за недопонимания работы сервисов и системных переменных в Linux. Давайте детально рассмотрим, как решить вашу задачу и настроить мониторинг Apache2 без наличия очевидного httpd.pid файла.
Теоретические основы
Во-первых, давайте углубимся в то, как Linux инициализирует процессы и как они создают PID-файлы. PID-файл (из "Process Identifier") — это текстовый файл, содержащий идентификатор процесса, который используется для управления демоном простым способом через его идентификатор. Такой файл нужен для управления процессами, например, для их перезапуска или остановки.
В случае Apache2, стандартный путь, где должен находиться PID-файл — это /var/run/apache2.pid
или /var/run/apache2/apache2.pid
, как собственно у вас и должно быть, если вы используете стандартные механизмы управления.
Практическое применение
Расположение PID-файла
-
Проверка конфигурации:
- Для начала проверьте файл
/etc/apache2/envvars
, который управляет различными параметрами среды для Apache2. В этом файле задается переменнаяAPACHE_PID_FILE
, которая определяет, где именно будет создан PID-файл. - Используйте команду:
echo $(. /etc/apache2/envvars && echo $APACHE_PID_FILE)
чтобы убедиться, что путь к PID-файлу подтвержден системой. Это важно, чтобы избежать возможных ошибок из-за различий в наименованиях переменных или путей.
- Для начала проверьте файл
-
Создание PID-файла:
- Если файл не создается, убедитесь, что Apache запущен с достаточными правами и что директория
/var/run/
доступна для записи. Возможно, потребуется вручную создать файл с необходимыми правами доступа.
- Если файл не создается, убедитесь, что Apache запущен с достаточными правами и что директория
Конфигурация Monit
-
Определение правил в Monit:
-
Обновите файл конфигурации Monit (
/etc/monit/monitrc
), добавив секцию для мониторинга Apache2. Например:check process apache with pidfile /var/run/apache2/apache2.pid start program = "/etc/init.d/apache2 start" stop program = "/etc/init.d/apache2 stop" if failed port 80 protocol http then restart if 5 restarts within 5 cycles then timeout
-
-
Перезагрузка Monit:
- Примените изменения, перезагрузив Monit:
sudo service monit restart
- Примените изменения, перезагрузив Monit:
Альтернативные подходы
-
Обновление версий:
- Возможно, вы используете довольно устаревшую версию Ubuntu (12.04). Рассмотрите обновление до более актуальной версии, так как старые дистрибутивы могут иметь специфическое поведение и недостаточную поддержку.
-
Настройка альтернативных путей:
- В некоторых случаях, если вы запускали Apache через специфические скрипты или конфигурации (например, через Chef), файл PID может быть создан в другом месте, как
/var/run/httpd/httpd.pid
.
- В некоторых случаях, если вы запускали Apache через специфические скрипты или конфигурации (например, через Chef), файл PID может быть создан в другом месте, как
Заключение
Разобравшись с тем, как именно создаются и управляются PID-файлы, вы можете более уверенно настроить мониторинг Apache с помощью Monit. Следуя указанным выше рекомендациям, вы сможете находить и управлять PID-файлами без особых усилий, а также обеспечивать стабильную работу вашей веб-службы. Не забывайте о регулярных обновлениях вашей системы и инструментов, чтобы избежать подобных проблем в дальнейшем.