GNU/Linux >> Tutoriels Linux >  >> Cent OS

Surveillance du serveur avec munin et monit sur CentOS 5.2

Dans cet article, je vais décrire comment vous pouvez surveiller votre serveur CentOS 5.2 avec munin et monit. munin produit de petits graphiques astucieux sur presque tous les aspects de votre serveur (moyenne de charge, utilisation de la mémoire, utilisation du processeur, débit MySQL, trafic eth0, etc.) sans trop de configuration, tandis que monit vérifie la disponibilité de services comme Apache, MySQL, Postfix et prend l'action appropriée telle qu'un redémarrage s'il détecte qu'un service ne se comporte pas comme prévu. La combinaison des deux vous offre une surveillance complète :des graphiques qui vous permettent de reconnaître les problèmes actuels ou à venir (comme "Nous avons besoin d'un serveur plus gros bientôt, notre charge moyenne augmente rapidement"), et un chien de garde qui assure la disponibilité des services surveillés .

Bien que munin vous permette de surveiller plus d'un serveur, nous ne discuterons ici que de la surveillance du système sur lequel il est installé.

Ce didacticiel a été écrit pour CentOS 5.2, mais la configuration devrait également s'appliquer à d'autres distributions avec peu de modifications.

Je veux d'abord dire que ce n'est pas la seule façon de mettre en place un tel système. Il existe de nombreuses façons d'atteindre cet objectif, mais c'est la voie que je prends. Je n'émets aucune garantie que cela fonctionnera pour vous !

1 Remarque préliminaire

Le nom d'hôte de notre système est server1.example.com, et nous avons un site Web www.example.com dessus avec la racine du document /var/www/www.example.com/web.

2 Activer le référentiel RPMforge

Sur CentOS 5.2, munin et monit ne sont pas disponibles dans les référentiels CentOS par défaut. Heureusement, nous pouvons les installer à partir du référentiel RPMforge. Pour activer le référentiel RPMforge, nous exécutons

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -Uvh rpmforge-release-0.3.6- 1.el5.rf.i386.rpm
rm -f rpmforge-release-0.3.6-1.el5.rf.i386.rpm

sur les hôtes i386 et

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rpm -Uvh rpmforge-release-0.3.6- 1.el5.rf.x86_64.rpm
rm -f rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

sur les hôtes x86_64 (veuillez consulter https://rpmrepo.org/RPMforge/Using pour les dernières versions).

3 Installer et configurer munin

Pour installer munin sur CentOS 5.2, nous procédons comme suit :

yum installer munin munin-node

Ensuite, nous créons les liens de démarrage du système pour munin et le démarrons :

chkconfig --levels 235 munin-node on
/etc/init.d/munin-node start

Ensuite, nous devons éditer le fichier de configuration munin /etc/munin/munin.conf. Nous voulons que munin place sa sortie dans le répertoire /var/www/www.example.com/web/monitoring, donc nous changeons la valeur de htmldir, et nous voulons qu'il utilise le nom server1.example.com au lieu de localhost. localdomain dans la sortie HTML, nous remplaçons donc localhost.localdomain par server1.example.com. Sans les commentaires, le fichier modifié ressemble à ceci :

vi /etc/munin/munin.conf
[...]dbdir /var/lib/muninhtmldir /var/www/www.example.com/web/monitoringlogdir /var/log/ muninrundir /var/run/munin# Où chercher le modèle HTMLstmpldir /etc/munin/templates[...]# une arborescence d'hôtes simple[server1.example.com] adresse 127.0.0.1 use_node_name yes[...] 

Ensuite, nous créons le répertoire /var/www/www.example.com/web/monitoring et changeons sa propriété en utilisateur et groupe munin, sinon munin ne peut pas placer sa sortie dans ce répertoire. Ensuite, nous redémarrons munin :

mkdir -p /var/www/www.example.com/web/monitoring
chown munin:munin /var/www/www.example.com/web/monitoring
/etc/init .d/munin-node restart

Attendez maintenant quelques minutes pour que munin puisse produire sa première sortie, puis allez sur http://www.example.com/monitoring/ dans votre navigateur, et vous verrez les premières statistiques. Après quelques jours, cela pourrait ressembler à ceci :

(Ceci n'est qu'un petit extrait des nombreux graphiques que munin produit...)

4 Protection par mot de passe du répertoire de sortie munin (facultatif)

Maintenant, c'est une bonne idée de protéger par mot de passe le répertoire /var/www/www.example.com/web/monitoring à moins que vous ne vouliez que tout le monde puisse voir toutes les petites statistiques sur votre serveur.

Pour cela, nous créons un fichier .htaccess dans /var/www/www.example.com/web/monitoring :

vi /var/www/www.example.com/web/monitoring/.htaccess
AuthType BasicAuthName "Members Only"AuthUserFile /var/www/www.example.com/.htpasswdrequire valid-user

Ensuite, nous devons créer le fichier de mots de passe /var/www/www.example.com/.htpasswd. Nous voulons nous connecter avec le nom d'utilisateur admin, nous faisons donc ceci :

htpasswd -c /var/www/www.example.com/.htpasswd admin

Entrez un mot de passe pour l'administrateur, et vous avez terminé !

5 Installer et configurer monit

Ensuite, nous installons monit :

moniteur d'installation yum

Ensuite, nous créons les liens de démarrage du système pour monit :

chkconfig --levels 235 surveiller sur

Le fichier de configuration par défaut de monit est /etc/monit.conf où vous pouvez trouver des exemples de configuration (vous pouvez trouver plus d'exemples de configuration sur http://mmonit.com/wiki/Monit/ConfigurationExamples) qui sont tous commentés, mais cela indique à monit de chercher aussi dans le répertoire /etc/monit.d les fichiers de configuration, donc au lieu de modifier /etc/monit.conf, on crée un nouveau fichier de configuration /etc/monit.d/monitrc. Dans mon cas, je veux surveiller proftpd, sshd, mysql, apache et postfix, je veux activer l'interface Web monit sur le port 2812, je veux une interface Web https, je veux me connecter dans l'interface Web avec le nom d'utilisateur admin et le test de mot de passe, et je veux que monit envoie des alertes par e-mail à [email protected], donc mon fichier ressemble à ceci :

vi /etc/monit.d/monitrc
set daemon 60set logfile syslog facility log_daemonset mailserver localhostset mail-format { from:[email protected] }set alert [email protected]set httpd port 2812 and SSL ENABLE PEMFILE /var/certs/monit.pem allow admin:testcheck process proftpd with pidfile /var/run/proftpd.pid start program ="/etc/init.d/proftpd start" stop program ="/etc/init. d/proftpd stop" si échec port 21 protocole ftp puis redémarrage si 5 redémarre dans les 5 cycles puis timeoutcheck processus sshd avec pidfile /var/run/sshd.pid start program "/etc/init.d/sshd start" stop program "/ etc/init.d/sshd stop" en cas d'échec du protocole ssh du port 22, puis redémarrez si 5 redémarre dans les 5 cycles, puis timeoutcheck traite mysql avec pidfile /var/run/mysqld/mysqld.pid groupe database start program ="/etc/init. d/mysqld start" stop program ="/etc/init.d/mysqld stop" en cas d'échec de l'hôte 127.0.0.1 port 3306 puis redémarrage si 5 redémarre dans les 5 cycles puis timeoutcheck p processus apache avec pidfile /var/run/httpd.pid groupe www start program ="/etc/init.d/httpd start" stop program ="/etc/init.d/httpd stop" en cas d'échec host www.example.com port 80 protocole http et requête "/monit/token" puis redémarrage si cpu est supérieur à 60% pendant 2 cycles puis alerte si cpu> 80% pendant 5 cycles puis redémarrage si totalmem> 500 Mo pendant 5 cycles puis redémarrage si enfants> 250 puis redémarrez si loadavg(5min) supérieur à 10 pendant 8 cycles puis arrêtez si 3 redémarre dans les 5 cycles puis timeoutcheck process postfix with pidfile /var/spool/postfix/pid/master.pid group mail start program ="/etc/init. d/postfix start" stop program ="/etc/init.d/postfix stop" si échec port 25 protocole smtp puis redémarrage si 5 redémarre dans les 5 cycles puis timeout

(Veuillez vous assurer que vous ne vérifiez que les processus qui existent réellement sur votre serveur - sinon monit ne démarrera pas. Par exemple, si vous dites à monit de vérifier Postfix, mais que Postfix n'est pas installé sur le système, monit ne démarrera pas.)

Le fichier de configuration est assez explicite; si vous n'êtes pas sûr d'une option, consultez la documentation de monit :http://mmonit.com/monit/documentation/monit.html

Dans la partie apache de la configuration de monit vous trouvez ceci :

 en cas d'échec de l'hôte www.example.com port 80 protocole http et requête "/monit/token" puis redémarrage

ce qui signifie que monit essaie de se connecter à www.example.com sur le port 80 et essaie d'accéder au fichier /monit/token qui est /var/www/www.example.com/web/monit/token parce que la racine du document de notre site Web est /var/www/www.example.com/web. Si monit ne réussit pas, cela signifie qu'Apache n'est pas en cours d'exécution et que monit va le redémarrer. Nous devons maintenant créer le fichier /var/www/www.example.com/web/monit/token et y écrire une chaîne aléatoire :

mkdir /var/www/www.example.com/web/monit
echo "hello"> /var/www/www.example.com/web/monit/token

Ensuite, nous créons le certificat pem (/var/certs/monit.pem) dont nous avons besoin pour l'interface Web monit cryptée SSL :

mkdir /var/certs
cd /var/certs

Nous avons besoin d'un fichier de configuration OpenSSL pour créer notre certificat. Cela peut ressembler à ceci :

vi /var/certs/monit.cnf
# créer des certificats RSA - ServerRANDFILE =./openssl.rnd[ req ]default_bits =1024encrypt_key =yesdistinguished_name =req_dnx509_extensions =cert_type[ req_dn ]countryName =nom du pays (code à 2 lettres)countryName_default =MOstateOrProvinceName =Nom de l'État ou de la province (nom complet)stateOrProvinceName_default =MonitorialocalityName =Nom de la localité (par exemple, ville)localityName_default =MonittownorganizationName =Nom de l'organisation (par exemple, société)organizationName_default =Monit Inc.organizationalUnitName =Nom de l'unité organisationnelle ( par exemple, section)organizationalUnitName_default =Dept. of Monitoring TechnologiescommonName =Common Name (FQDN de votre serveur)commonName_default =server.monit.moemailAddress =Email AddressemailAddress_default =[email protected][ cert_type ]nsCertType =server

Maintenant, nous créons le certificat comme ceci :

openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pem
openssl gendh 512>> /var/certs/monit.pem
openssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pem
chmod 700 /var/certs/monit.pem

Enfin, nous pouvons lancer la surveillance :

/etc/init.d/monit start

Pointez maintenant votre navigateur sur https://www.example.com:2812/ (assurez-vous que le port 2812 n'est pas bloqué par votre pare-feu), connectez-vous avec admin et testez, et vous devriez voir l'interface Web monit. Cela devrait ressembler à ceci :

(Écran principal)

(Page d'état d'Apache)

En fonction de votre configuration dans /etc/monit.d/monitrc, monit redémarrera vos services en cas d'échec et enverra des e-mails de notification si les ID de processus des services changent, etc.

Amusez-vous !

  • munin :http://munin.projects.linpro.no
  • moniteur :http://mmonit.com/monit
  • CentOS :http://www.centos.org
  • RPMforge :https://rpmrepo.org/RPMforge

Cent OS
  1. Surveillance de serveur avec Icinga 2 et Icingaweb 2 sur CentOS 7

  2. Configuration d'un serveur et d'un client NFS sur CentOS 7.2

  3. Surveillez et gérez vos services avec Monit sur CentOS 6 / RHEL 6

  4. Comment surveiller l'utilisation des ressources de votre serveur avec Munin sur CentOS 6

  5. Installez Zenario avec Apache, PHP et MariaDB sur CentOS 7

Surveillance de serveur avec Munin et Monit sur Debian 10

Surveillance de serveur avec Munin et Monit sur Debian 8 (Jessie)

Surveillance de serveur avec Munin et Monit sur CentOS 7

Surveillance de serveur avec Munin et Monit sur CentOS 7.2

Surveillance du serveur avec munin et monit sur Fedora 7

Configurer un serveur OpenVPN avec CentOS et Viscosity