Не удается найти httpd.pid для использования в мониторинге apache2 с помощью Monit.

Вопрос или проблема

Я новичок в 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

Попробовал бы два варианта:

  1. Посмотрите, можете ли вы настроить Apache на создание PID-файла. Ссылка: http://httpd.apache.org/docs/2.2/mod/mpm_common.html#pidfile
  2. Модифицируйте скрипт запуска/остановки 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-файла

  1. Проверка конфигурации:

    • Для начала проверьте файл /etc/apache2/envvars, который управляет различными параметрами среды для Apache2. В этом файле задается переменная APACHE_PID_FILE, которая определяет, где именно будет создан PID-файл.
    • Используйте команду:
      echo $(. /etc/apache2/envvars && echo $APACHE_PID_FILE)

      чтобы убедиться, что путь к PID-файлу подтвержден системой. Это важно, чтобы избежать возможных ошибок из-за различий в наименованиях переменных или путей.

  2. Создание PID-файла:

    • Если файл не создается, убедитесь, что Apache запущен с достаточными правами и что директория /var/run/ доступна для записи. Возможно, потребуется вручную создать файл с необходимыми правами доступа.

Конфигурация Monit

  1. Определение правил в 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
  2. Перезагрузка Monit:

    • Примените изменения, перезагрузив Monit:
      sudo service monit restart

Альтернативные подходы

  1. Обновление версий:

    • Возможно, вы используете довольно устаревшую версию Ubuntu (12.04). Рассмотрите обновление до более актуальной версии, так как старые дистрибутивы могут иметь специфическое поведение и недостаточную поддержку.
  2. Настройка альтернативных путей:

    • В некоторых случаях, если вы запускали Apache через специфические скрипты или конфигурации (например, через Chef), файл PID может быть создан в другом месте, как /var/run/httpd/httpd.pid.

Заключение

Разобравшись с тем, как именно создаются и управляются PID-файлы, вы можете более уверенно настроить мониторинг Apache с помощью Monit. Следуя указанным выше рекомендациям, вы сможете находить и управлять PID-файлами без особых усилий, а также обеспечивать стабильную работу вашей веб-службы. Не забывайте о регулярных обновлениях вашей системы и инструментов, чтобы избежать подобных проблем в дальнейшем.

Оцените материал
Добавить комментарий

Капча загружается...