Состояние сервера Apache не найдено. проверить, включен ли mod_status

9

Я включил apache_плагины на узле munin:
ln -sv /usr/share/munin/plugins/apache_* /etc/munin/plugins/

После перезапуска узла service munin-node restartвот ошибки, которые я получаю:

$ munin-node-configure --suggest 2>/dev/null | grep "apache\|Plugin\|------"
Plugin                     | Used | Suggestions                            
------                     | ---- | -----------                            
apache_accesses            | yes  | no [apache server-status not found. check if mod_status is enabled]
apache_processes           | yes  | no [apache server-status not found. check if mod_status is enabled]
apache_volume              | yes  | no [apache server-status not found. check if mod_status is enabled]

Однако mod_statusуже включен:

$ a2enmod status
Module status already enabled

И перезапуск apache не имеет значения.

Если я попытаюсь запустить плагины вручную, вот что я получаю (я читал, что получение U - плохая новость, так что, по крайней мере, это соответствует).

$ munin-run apache_accesses --debug
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
# Set /rgid/ruid/egid/euid/ to /110/65534/110 110 /65534/
# Setting up environment
# About to run '/etc/munin/plugins/apache_accesses'
accesses80.value U

$ munin-run apache_processes --debug
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
# Set /rgid/ruid/egid/euid/ to /110/65534/110 110 /65534/
# Setting up environment
# About to run '/etc/munin/plugins/apache_processes'
busy80.value U
idle80.value U
free80.value U

$ munin-run apache_volume --debug
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
# Set /rgid/ruid/egid/euid/ to /110/65534/110 110 /65534/
# Setting up environment
# About to run '/etc/munin/plugins/apache_volume'
volume80.value U

Кто-нибудь знает, почему я все еще получаю server-status not foundсообщение и как я могу от него избавиться?

Обновленный ответ 1

Предложение Шейна было правильным относительно настройки обработчика запросов с помощью Locationи SetHandlerна сайте apache. Для получения дополнительной информации, mod_statusпожалуйста, обратитесь к этой странице

Я мог убедиться, что muninэто эффективно делает соответствующие запросы, посмотрев, /var/log/apache2/access.logгде я получаю это:

127.0.0.1 - - [10/Nov/2011:07:24:15 +0000] "GET /server-status?auto HTTP/1.1" 404 7774 "-" "libwww-perl/5.834

В моем случае настройки Locationбыло недостаточно, так как я управляю Drupalсайтом, а в .htaccessсочетании с mod_rewriteпереписываем запросы. Чтобы это исправить, мне пришлось добавить следующую строку в мой.htaccess

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteCond %{REQUEST_URI} !=/server-status  # <= added this line
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Обратите внимание, что это не представляет проблемы безопасности, так как доступ к нему /server-statusограничен на 127.0.0.1сайте apache.

Обновленный ответ 2

Похоже, что добавление Locationна сайт apache не было необходимости, поскольку это уже определено в /etc/apache2/mods-enabled/status.conf. Кстати, если вы хотите добавить ExtendedStatus Onдирективу, это в том файле, что вы должны сделать это.

Максимум
источник

Ответы:

5

Похоже, он пытается сделать запросы к модулю статуса. У вас есть правильная конфигурация для местоположения статуса в вашем VirtualHost? Что-то вроде этого:

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>
Шейн Мэдден
источник
Действительно, верная точка зрения, хотя в моем случае мне также пришлось проделать определенную mod_rewriteработу (см. Обновленный вопрос с ответом)
Макс
3

Я узнал, что могу бежать

$ wget http://localhost/server-status?auto

но нет

$ wget http://127.0.0.1/server-status?auto

Первый работает с сервером по умолчанию, второй - с виртуальным сервером.

Поэтому я явно добавил раздел apache в /etc/munin/plugin-conf.d/munin-node

[apache_*]
env.url   http://localhost:%d/server-status?auto
env.ports 80

и получил мои графики Муни Apache.

Marji
источник
2

Я нашел решение от многих Ayromlou на этом сайте :

Проблема заключается в том, что эти правила .htaccess в WordPress принимают информацию о сервере и URL-адреса состояния сервера, активированные в конфигурации apache, и возвращают страницу с ошибкой. Я сталкивался с многочисленными сайтами, которые предлагали добавить правило вроде:

  RewriteCond %{REQUEST_URI} !=/server-status

Это не сработало для меня. Я не уверен, что причиной этого является многосайтовая версия WordPress (которую я использую). Правило, которое работало прекрасно, таково:

  RewriteRule ^(server-info|server-status) - [L]

Это правило останавливает механизм перезаписи, когда информация сервера или состояние сервера анализируется как часть URL.

janfai
источник
1

Модуль mod_status встроен в веб-сервер Apache для получения статуса сервера из веб-браузера. С помощью этого модуля мы можем легко узнать, насколько хорошо работает сервер. Все отчеты генерируются в формате html.

Шаг 1. Проверьте, включен ли модуль состояния или нет apache2ctl -M или ls / etc / apache2 / sites-enabled

Шаг 2. Если не включено, включите его командой

статус sudo a2enmod

шаг 3. Настроить доступ,

Откройте /etc/apache2/mods-enabled/status.conf и прокомментируйте строки,

        #<Location /server-status>
        #    SetHandler server-status
        #    Require local
        #Require ip 192.0.2.0/24
        #</Location>

И добавьте следующую строку,

        <Location /server-status>
        SetHandler server-status
        Order deny,allow
        Allow from all
        </Location>

Мы можем ограничить доступ к состоянию сервера для определенных IP-адресов в этой конфигурации, отредактировав «Разрешить из нашего_публикации_адрес» вместо «Разрешить для всех».

Сохраните файл status.conf.

Step4. Перезапустите Apache по команде,

/etc/init.d/apache2 restart

Step5. Проверьте страницу состояния сервера в браузере

HTTP: // сервер-IP / сервер-статус

Надеюсь, это будет полезно.

Amol
источник
0

У меня была такая же проблема. Вот еще несколько диагностических шагов. Попробуй сделать

munin-run apache_processes autoconf

Это более прямой способ увидеть ту же ошибку « нет (нет состояния сервера apache на портах 80) »

Теперь попробуйте сделать

wget http://127.0.0.1/server-status?auto

Для меня это дает 403 Запрещено .

Я также видел «клиент отклонен конфигурацией сервера: / var / www / server-status» в моем основном журнале ошибок apache

Вы получаете то же самое?

Для меня фактически ответ Шейна Мэддена решил это.

Гарри Вуд
источник
Привет, Гарри, если у тебя такая же проблема, тогда, пожалуйста, проголосуй за вопрос, так как это увеличивает вероятность получения ответов.
Макс
Сделаем, как только у меня будет достаточно репутации, чтобы проголосовать :-)
Harry Wood
0

Если / server-status запрещен только с 127.0.0.1, вы можете создать конфигурацию VirtualHost для 127.0.0.1 со следующим содержимым:

<VirtualHost *:80>
    ServerAdmin superadmin@somemail.com
    ServerName 127.0.0.1
    DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            AllowOverride All
    </Directory>
    <Directory /var/www>
      Options +FollowSymLinks
      AllowOverride None
      order allow,deny
      allow from all
    </Directory>
</VirtualHost>

Вот более подробное объяснение

дресвы
источник