Не удается настроить /server-status для Apache Exporter на Ubuntu, ошибка 404.

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

Я пытаюсь настроить Apache Exporter на своем сервере Ubuntu для сбора метрик, но не могу правильно сконфигурировать /server-status. Когда я вручную запрашиваю конечную точку с помощью:

curl localhost/server-status?auto

Я получаю следующий ответ:
enter image description here

Вот подробности моей настройки:

Среда:

  • Версия Apache: Apache/2.4.46 (Ubuntu)
  • ОС: Ubuntu 21.04
  • Экспортер: Apache Exporter для Prometheus

Принятые шаги:

  • Включен mod_status:
sudo a2enmod status

Включение модуля status само по себе недостаточно (думаю, даже по умолчанию он включен).

Необходимо явно настроить путь в конфигурации вашего сервера или виртуального хоста для отображения статистики.

Эту информацию можно найти в документации модуля с примером конфигурации.

<Location "/server-status">
    SetHandler server-status
    Require host example.com
</Location>

Также вы можете быть более строгими. Например, сделать доступным только с определенных IP-адресов

<Location "/server-status">
    SetHandler server-status
    Require ip x.x.x.x
</Location>

Спасибо всем за внимание. Я выявил причину проблемы — она была связана с файлом .htaccess.

Проблема заключалась в том, что в корневом каталоге HTML находился файл .htaccess, который перехватывал и перенаправлял запросы на index.php, когда запрашиваемый URL не соответствовал ни существующему файлу, ни каталогу.

Так как конечная точка server-status не имела соответствующего файла или каталога, она перенаправлялась на index.php.

И index.php, куда должны были направляться все перехваченные запросы, отсутствовал, что заставляло Apache возвращать ошибку 404.

Я изменил данный файл .htaccess, чтобы игнорировать все запросы, исходящие от локального сервера к server-status, тем самым прекратив перенаправление.

Обновленный код:

# Игнорировать запросы /server-status с локальных адресов (IPv4 и IPv6)
RewriteCond %{REMOTE_ADDR} ^127\.0\.0\.1$ [OR]
RewriteCond %{REMOTE_ADDR} ^::1$
RewriteCond %{REQUEST_URI} ^/server-status$
RewriteRule .* - [L]

# Существующие правила перезаписи
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

После внесения этого изменения я теперь получаю результаты своего запроса.

Result of running curl now

.

Ответ или решение

Настройка /server-status для Apache Exporter на Ubuntu является важной задачей, позволяющей собирать метрики для мониторинга. Если при попытке настроить этот функционал вы сталкиваетесь с ошибкой 404, необходимо последовательно разобраться с причиной. Рассмотрим подробнее, как решить эту проблему.

Проблема

При попытке запроса к /server-status вы получаете ответ 404. Основная причина этого может заключаться в неправильной настройке устройств или маршрутизации запросов в исходной конфигурации.

Решение

Шаг 1: Активируйте mod_status

Вы уже активировали модуль mod_status с помощью команды:

sudo a2enmod status

Но необходимо убедиться, что этот модуль корректно настроен в конфигурационных файлах.

Шаг 2: Настройка конфигурационного файла Apache

Вам нужно добавить или модифицировать блок <Location> в конфигурационном файле Apache, чтобы правильно обрабатывать запросы на /server-status.

Пример конфигурации:

<Location "/server-status">
    SetHandler server-status
    Require host ваш-домен-или-айпи
</Location>

Этот блок должен быть добавлен в файл конфигурации Apache (например, 000-default.conf, находящийся в /etc/apache2/sites-available/), и после этого следует перезапустить сервис Apache:

sudo systemctl restart apache2

Шаг 3: Измените .htaccess для исключения перенаправления

Вы установили, что проблема связана с файлом .htaccess, который перенаправляет все неопознанные запросы на index.php. Чтобы исправить это, внесите изменения в .htaccess, как показано ниже:

# Исключение запросов к /server-status от локальных адресов
RewriteCond %{REMOTE_ADDR} ^127\.0\.0\.1$ [OR]
RewriteCond %{REMOTE_ADDR} ^::1$
RewriteCond %{REQUEST_URI} ^/server-status$
RewriteRule .* - [L]

# Уже существующие правила перенаправления
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Этот код исключает /server-status из перенаправления запросов на index.php.

Заключение

После внесения всех изменений перезапустите Apache ещё раз и проверьте доступ к /server-status.

Настройка мониторинга с использованием Apache Exporter — это важный шаг для управления системными ресурсами и отслеживания производительности. Бесперебойная работа этой функции обеспечит ценную аналитическую информацию и повысит надежность вашей инфраструктуры.

Ключевые слова: Apache, Ubuntu, модуль mod_status, конфигурация сервера, .htaccess, мониторинг.

Понимание и внедрение всех описанных шагов помогут вам устранить ошибку 404 и оптимизировать сервер для сбора метрик.

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

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