Pimped Apache Status

De Wiki de Jordan LE NUFF
Sauter à la navigation Sauter à la recherche

Présentation

Cette section a pour objet de regrouper les sujets liés à l'utilisation de l'outil Pimped Apache Status.

Plus d'informations sur le site de l'éditeur : https://www.axel-hahn.de/docs/apachestatus/index.htm.

Installation

Prérequis

Serveur maître

  • Serveur web
    • N'importe quel serveur web avec PHP 7 - jusqu'à 7.3 (cela peut fonctionner avec PHP 5.3, mais il n'y aucun support pour les version de PHP5)
  • Extension PHP
    • php-curl
    • php-xml (optional; for xml exports)
  • Pas de base de données nécessaire

Serveurs supervisés

  • Versions
    • Apache 2.x
  • Modules activés
    • mod_status
    • ExtendedStatus
  • Accès
    • Autoriser le serveur maître d'accéder à l'alias /server-status

S'aider de la page Apache mettre en place ces prérequis.

Déploiement

Serveur maître

Dossier applicatif

Se connecter en SSH sur le serveur maître et télécharger la dernière version de pimped-apache-status (la 2.03.03 à ce jour) :

wget -O ~/downloads/pimped-apache-status-2.03.03.zip https://github.com/axelhahn/pimped-apache-status/archive/master.zip

Se rendre dans le dossier /data/www :

cd /data/www/PimpedApacheStatus

Définir temporairement un umask à 0002 :

umask 0002

Décompresser l'archive :

unzip ~/downloads/pimped-apache-status-2.03.03.zip -d /data/www/PimpedApacheStatus/

Renommer le dossier décompresser avec le numéro de la version téléchargée :

mv pimped-apache-status-master pimped-apache-status-2.03.03

Faire pointer le lien symbolique /data/www/PimpedApacheStatus/current vers le dossier de la version à installer :

ln -s /data/www/PimpedApacheStatus/pimped-apache-status-2.03.03 /data/www/PimpedApacheStatus/current

Donner les droits à tous les fichiers à l'utilisateur Apache :

chown -R www:www /data/www/PimpedApacheStatus

Redéfinir le umask par défaut :

. /etc/profile
Configuration PHP

Créer le dossier de logs /data/logs/pimpedapachestatus et donner les droits à l'utilisateur www :

mkdir /data/logs/pimpedapachestatus
chown www:www /data/logs/pimpedapachestatus

Créer un fichier /local/php/php7/etc/php-fpm.d/pimpedapachestatus.conf et y ajouter les lignes suivantes :

[pimpedapachestatus]
user = php-fpm
group = php-fpm

; Socket Unix dédié à PimpedApacheStatus
listen = /local/php/sockets/php7_$pool.sock

; Donner à Apache (www) les droits d'accès au socket
listen.owner = www
listen.group = www

; Définition du chemin d'accès des logs
access.log = /data/logs/$pool/$pool_php7.access.log
slowlog = /data/logs/$pool/$pool_php7.log.slow
php_admin_value[error_log] = /data/logs/$pool/$pool_php7.log
php_admin_flag[log_errors] = on
; https://www.php.net/manual/fr/errorfunc.constants.php
php_admin_value[error_reporting] = E_NOTICE

; Tuning du pool php-fpm
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.status_path = /status
ping.path = /ping

Redémarrer PHP pour prise en compte :

systemctl restart php7-fpm.service
Configuration Apache

Dans le fichier /local/www/current/conf/sites/myserver.conf, ajouter les lignes suivantes :

# Configuration du module mod_status
<Location /server-status>
	SetHandler server-status
	Require ip X.X.X.X
</Location>
<Location /server-info>
	SetHandler server-info
	Require ip X.X.X.X
</Location>
# Fin de configuration du module mod_status

# Configuration PimpedApacheStatus
Alias /pas /data/www/PimpedApacheStatus/current
<Directory "/data/www/PimpedApacheStatus/current">
	Options FollowSymLinks
	DirectoryIndex index.php
	AllowOverride All
	Require all granted
	<FilesMatch \.php$>
		SetHandler "proxy:unix:/local/php/sockets/php7_pimpedapachestatus.sock|fcgi://localhost/"
	</FilesMatch>
</Directory>
# Fin de configuration PimpedApacheStatus

Dans le fichier /local/www/current/conf/httpd.conf, ajouter la directive suivante :

ExtendedStatus On

Redémarrer Apache pour prise en compte :

systemctl restart http.service

Serveurs supervisés

Configuration Apache

Pour chaque serveur à superviser, il faudra identifier la localisation des binaires d'Apache avec la commande suivante :

httpd -V|grep HTTPD_ROOT|awk -F\" '{print $2}'

Par exemple, sur un serveur, cela donnerait le résultat /local/www/2.4.12.

Ainsi, dans le fichier /local/www/2.4.12/conf/httpd.conf, ajouter la directive suivante :

ExtendedStatus On

Il faudra également identifier le fichier contenant la configuration du vhost ayant pour ServerName le nom du serveur à superviser.

Par exemple, un serveur nommé myserver, en lançant la commande :

httpd -S

dont le retour est le suivant :

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server un.autre.site.com (/local/www/2.4.12/conf/extra/httpd-vhosts.conf:26)
         port 80 namevhost un.autre.site.com (/local/www/2.4.12/conf/extra/httpd-vhosts.conf:95)
         port 80 namevhost un.site.fr (/local/www/2.4.12/conf/extra/httpd-vhosts.conf:134)
         port 80 namevhost myserver (/local/www/2.4.12/conf/extra/httpd-vhosts.conf:152)
ServerRoot: "/local/www/2.4.12"
Main DocumentRoot: "/data/www"
Main ErrorLog: "/data/logs/default_error.log"
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/local/www/2.4.12/logs/" mechanism=default
Mutex rewrite-map: using_defaults
PidFile: "/local/www/2.4.12/logs/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www" id=1001
Group: name="www" id=8

On constate que, sur le port 80, le fichier de configuration du vhost ayant pour ServerName myserver est le fichier /local/www/2.4.12/conf/extra/httpd-vhosts.conf, dont la configuration débute à la ligne 152.

Dans ce fichier, dans la section du vhost précédemment identifié, insérer les lignes suivantes :

# Configuration du module mod_status
<Location /server-status>
	SetHandler server-status
	Require ip X.X.X.X
</Location>
<Location /server-info>
	SetHandler server-info
	Require ip X.X.X.X
</Location>
# Fin de configuration du module mod_status

Attention ! Il faudra remplacer la directive Require ip X.X.X.X par :

Order allow,deny
Allow from X.X.X.X

selon la configuration du serveur Apache.

Redémarrer Apache pour prise en compte :

systemctl restart http.service

Configuration

Serveur maître

Désactivation du message d'erreur SSL

Dans les fichiers suivants :

  • /data/www/PimpedApacheStatus/current/views/install.php
  • /data/www/PimpedApacheStatus/current/views/login.php
  • /data/www/PimpedApacheStatus/current/views/admin/settings.php
  • /data/www/PimpedApacheStatus/current/views/admin/servers.php

Localiser la section suivante :

if (!isset($_SERVER['HTTPS'])){
    $oMsg->add($aLangTxt['error-no-ssl'], 'error');
}

Et la commenter comme ceci :

// Désactivation du message d'erreur lié à l'absence d'utilisation du SSL
//if (!isset($_SERVER['HTTPS'])){
//    $oMsg->add($aLangTxt['error-no-ssl'], 'error');
//}
Création du fichier de configuration

En ligne de commande, générer le hash d'un mot de passe avec la commande md5sum. Par exemple, pour un mot de passe "unsupermotdepasse", passer la commande suivante :

echo -n unsupermotdepasse|md5sum|awk '{print $1}'

Cela générera le hash suivant :

f0d4908a4c4465fe1e447650132012c9

Se rendre à l'URL http://myserver/pas/admin/?&action=settings et renseigner dans la section config_user le code suivant en incluant le hash généré précédemment :

{
    "auth": {
        "user": "myuser",
        "password": "f0d4908a4c4465fe1e447650132012c9"
    },
    "selfurl": "/pas"
}

Valider la modification en cliquant sur OK.

Modifier l'hôte par défaut

Se rendre dans la section "Servers" :

Section serveurs

Modifier le serveur nommé localhost en cliquant sur "Edit" :

Modification serveur

Renseigner les champs comme ceci :

Cliquer en validant sur OK. Un message s'affiche pour confirmer la mise à jour :

Serveur modifié

Serveurs supervisés

Pour ajouter un serveur supervisé, s'assurer de lui avoir déployé la configuration Apache au préalable. Ensuite, se rendre dans la section "Servers" :

Section serveurs

Cliquer sur "Add server" :

Ajout serveur

Renseigner les champs suivants, par exemple pour le serveur mysecondserver :

Cliquer en validant sur OK. Un message s'affiche pour confirmer l'ajout :

Serveur ajouté

Administration

Verrouiller/déverrouiller la configuration

Dans la mesure où Pimped Apache Status n'a, à ce jour, aucune moyen d'authentification auprès d'un annuaire, il n'est possible de ne configurer qu'un seul identifiant.

De ce fait, afin de partager la solution auprès de différents utilisateurs, l'identifiant et le mot de passe leur seront communiqués.

Afin de protéger les fichiers de configuration de toute modification malencontreuse, il va falloir les mettre en lecture seule. Ainsi, il ne sera plus possible d'appliquer les modifications au travers de l'interface web.

Verrouiller la configuration

Pour verrouiller la configuration, se connecter en SSH sur le serveur maître et lancer la commande suivante :

chmod ug-w /data/www/PimpedApacheStatus/current/config/config_servers.json /data/www/PimpedApacheStatus/current/config/config_user.json

Déverrouiller la configuration

Pour déverrouiller la configuration, se connecter en SSH sur le serveur maître et lancer la commande suivante :

chmod ug+w /data/www/PimpedApacheStatus/current/config/config_servers.json /data/www/PimpedApacheStatus/current/config/config_user.json

Alternative

Si l'on souhaite modifier la configuration de Pimped Apache Status sans passer les fichiers de configuration en écriture, il est possible de les éditer directement en SSH avec l'utilisateur root.

Utilisation