Я включил 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
директива, которая находится в этом файле, и вы должны это сделать.
Похоже, он действительно пытается делать запросы к модулю статуса. Есть ли у вас правильная конфигурация для местоположения статуса в вашем VirtualHost
? Что-то вроде этого:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
Я узнал, что могу бежать
$ 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
и получил мои графики munin apache.
Я нашел решение от Many Ayromlou на этом сайте:
Проблема в том, что эти правила .htaccess в wordpress берут на себя информацию о сервере и URL-адреса сервера, активированные в конфигурации apache, и возвращают ошибку "страница не найдена". Я встречал множество сайтов, предлагавших добавить такое правило, как:
RewriteCond %{REQUEST_URI} !=/server-status
У меня это не сработало. Я не уверен, что причиной этого является многосайтовая версия wordpress (которую я использую). Правило, которое прекрасно сработало, выглядит следующим образом:
RewriteRule ^(server-info|server-status) - [L]
Это правило останавливает механизм перезаписи всякий раз, когда информация о сервере или статус сервера анализируются как часть URL-адреса.
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.
Шаг 4. Перезапустите apache командой,
/etc/init.d/apache2 перезапуск
Шаг 5. Проверьте страницу статуса сервера в браузере
http: // IP-адрес сервера / статус-сервера
Надеюсь, это будет полезно.
У меня была такая же проблема. Вот еще несколько диагностических шагов. Попробуйте сделать
munin-run apache_processes autoconf
Это более прямой способ увидеть ту же ошибку "нет (нет статуса сервера apache на 80 портах)"
Теперь попробуйте сделать
wget http://127.0.0.1/server-status?auto
Для меня это дает 403 Запрещено.
Я также видел 'клиент отклонен конфигурацией сервера: / var / www / server-status' в моем основном журнале ошибок apache
У тебя то же самое?
Для меня на самом деле ответ Шейна Мэддена решил это.
Если / 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>
Вот это более подробное объяснение