état du serveur apache introuvable. vérifier si mod_status est activé

9

J'ai activé les apache_plugins sur un nœud munin:
ln -sv /usr/share/munin/plugins/apache_* /etc/munin/plugins/

Après avoir redémarré le nœud avec service munin-node restartvoici les erreurs que je reçois:

$ 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]

Cependant mod_statusest déjà activé:

$ a2enmod status
Module status already enabled

Et redémarrer apache ne fait aucune différence.

Si j'essaie d'exécuter les plugins manuellement, voici ce que j'obtiens (j'ai lu que l'obtention d'un U est une mauvaise nouvelle, donc au moins c'est cohérent).

$ 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

Est-ce que quelqu'un sait pourquoi je reçois toujours le server-status not foundmessage et comment je peux m'en débarrasser?

Réponse mise à jour 1

La suggestion de Shane était correcte sur la définition d'un gestionnaire de requêtes à l'aide de Locationet SetHandlerdans le site apache. Pour plus d'informations sur mod_statuss'il vous plaît se référer à cette page

Je pouvais vérifier que je muninfaisais effectivement les demandes appropriées en regardant /var/log/apache2/access.logoù j'obtenais ceci:

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

Dans mon cas, le réglage Locationn'était pas suffisant car je gère un Drupalsite et les .htaccesscombinés avec mod_rewriteréécrivaient les demandes. Pour le réparer, j'ai dû ajouter la ligne suivante à mon.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]

Veuillez noter que cela ne représente pas un problème de sécurité car l'accès à /server-statusest limité au 127.0.0.1site apache.

Réponse mise à jour 2

Il semble que l'ajout Locationde au site apache n'était pas nécessaire après tout, car cela est déjà défini dans /etc/apache2/mods-enabled/status.conf. Btw, si vous voulez ajouter la ExtendedStatus Ondirective, c'est dans ce fichier que vous devez le faire.

Max
la source

Réponses:

5

On dirait qu'il essaie réellement de faire des requêtes au module d'état. Avez-vous une configuration appropriée pour l'emplacement du statut dans votre VirtualHost? Quelque chose comme ça:

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>
Shane Madden
la source
Point valable en effet bien que dans mon cas j'ai aussi dû faire un peu de mod_rewritetravail (voir question mise à jour avec réponse)
Max
3

J'ai découvert que je pouvais courir

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

mais non

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

Le premier frappe le serveur par défaut, le second un serveur virtuel.

J'ai donc explicitement ajouté une section apache à /etc/munin/plugin-conf.d/munin-node

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

et obtenu mes graphiques munin apache.

Marji
la source
2

J'ai trouvé la solution de Many Ayromlou sur ce site :

Le problème est que ces règles .htaccess dans wordpress prennent en charge les URL info-serveur et statut serveur activées dans la configuration d'Apache et renvoient une erreur de page introuvable. Je suis tombé sur de nombreux sites qui ont suggéré d'ajouter une règle comme:

  RewriteCond %{REQUEST_URI} !=/server-status

Ça n'a pas marché pour moi. Je ne sais pas si la version multisite de wordpress (que j'utilise) est à l'origine de cela. La règle qui a fonctionné à merveille est la suivante:

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

Cette règle arrête le moteur de réécriture chaque fois que server-info ou server-status est analysé dans le cadre de l'URL.

janfai
la source
1

mod_status intégré au serveur Web Apache pour obtenir l'état du serveur à partir d'un navigateur Web. Avec ce module, nous pouvons facilement découvrir la performance du serveur. Tous les rapports sont générés au format html.

Étape 1. Vérifiez si le module d'état est activé ou non apache2ctl -M ou ls / etc / apache2 / sites-enabled

Étape 2. S'il n'est pas activé, activez-le par la commande,

statut sudo a2enmod

étape 3. Configurer l'accès,

Ouvrez /etc/apache2/mods-enabled/status.conf et commentez les lignes,

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

Et ajoutez la ligne suivante,

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

Nous pouvons restreindre l'accès à l'état du serveur pour des adresses IP particulières dans cette configuration en modifiant, Autoriser de our_public_ipaddress au lieu de Autoriser de tous

Enregistrez le fichier status.conf.

Étape 4. Redémarrez apache par la commande,

/etc/init.d/apache2 redémarrer

Étape 5. Vérifiez la page d'état du serveur dans le navigateur

http: // server-ip / server-status

J'espère que ce serait utile.

Amol
la source
0

J'avais le même problème. Voici quelques étapes de diagnostic supplémentaires. Essayez de faire

munin-run apache_processes autoconf

C'est un moyen plus direct de voir la même erreur " non (pas de statut de serveur apache sur les ports 80) "

Maintenant, essayez de faire

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

Pour moi, cela donne 403 Interdit .

Je voyais également «client refusé par la configuration du serveur: / var / www / server-status» dans mon journal des erreurs Apache principal

Obtenez-vous la même chose?

Pour moi, en fait, la réponse de Shane Madden l'a résolu.

Harry Wood
la source
Bonjour Harry, si vous rencontrez le même problème, veuillez voter pour la question car cela augmente la probabilité d'obtenir des réponses.
Max
Fera, dès que j'ai assez de réputation pour voter :-)
Harry Wood
0

Si / server-status est interdit uniquement à partir de 127.0.0.1, vous pouvez créer une configuration VirtualHost pour 127.0.0.1 avec le contenu suivant:

<VirtualHost *:80>
    ServerAdmin [email protected]
    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>

Voici une explication plus détaillée

druss
la source