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

Surveillance de serveur avec Munin et Monit sur CentOS 7

Dans cet article, je vais décrire comment vous pouvez surveiller votre serveur CentOS 7 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 7, mais la configuration devrait également s'appliquer à d'autres distributions telles que RHEL et Scientific Linux.

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/html.

2 Activer le référentiel EPEL

Sur CentOS 7, 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 EPEL. Pour activer le référentiel EPEL, nous exécutons :

yum install epel-release

Importez la clé GPG EPEL :

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

puis lancez :

yum update

pour s'assurer que le système est à jour et que la liste des paquets d'EPEL est chargée avant de commencer à installer munin.

2 Installer le serveur Web Apache

Munin nécessite un serveur Web pour servir et afficher ses fichiers de statistiques. Je vais installer le serveur apache httpd ici :

yum install httpd

Démarrez apache et activez-le pour qu'il soit lancé automatiquement au démarrage.

systemctl enable httpd
systemctl start httpd

4 Installer et configurer Munin

Pour installer Munin sur CentOS 7, nous procédons comme suit :

yum install munin munin-node

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

systemctl enable munin-node
systemctl start munin-node

Ensuite, nous devons éditer le fichier de configuration de Munin /etc/munin/munin.conf.

nano /etc/munin/munin.conf

Nous voulons que munin utilise le nom server1.example.com au lieu de localhost dans la sortie HTML, nous remplaçons donc localhost par server1.example.com. Sans les commentaires, le fichier modifié ressemble à ceci :

[...]
# a simple host tree
[server1.example.com]
    address 127.0.0.1
    use_node_name yes
[...]

Les statistiques munin sont protégées par un nom d'utilisateur et un mot de passe (Apache basic auth). À l'étape suivante, nous ajoutons un nouvel utilisateur et un nouveau mot de passe au fichier /etc/munin/munin-htpasswd.

htpassd /etc/munin/munin-htpasswd admin

La commande ajoutera un nouvel utilisateur avec le nom "admin" et demandera deux fois le nouveau mot de passe.

Attendez maintenant quelques minutes pour que munin puisse produire sa première sortie, puis allez sur http://server1.example.com/munin/ dans votre navigateur, et vous verrez les premières statistiques.

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

5 Installer et configurer Monit

Ensuite, nous allons installer Monit :

yum install monit

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

systemctl enable monit
systemctl start monit

Le fichier de configuration par défaut de Monit est /etc/monitrc 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 il indique également à monit regardez dans le répertoire /etc/monit.d pour les fichiers de configuration.

Dans ce cas, je veux surveiller :

  • proftpd
  • sshd
  • mysql
  • apache
  • suffixe

De plus, je vais configurer ces paramètres pour Monit :

  • Activer l'interface Web Monit sur le port 2812.
  • Utilisez HTTPS pour l'interface Web au lieu de HTTP.
  • Configurer une connexion protégée par mot de passe pour l'interface Web.
  • Monit enverra des alertes par e-mail à [email protected]

Je vais d'abord configurer les paramètres d'authentification. Ouvrez le fichier /etc/monit.d/monitrc

nano /etc/monit.d/monitrc

Et faites défiler vers le bas jusqu'à ce que vous trouviez cette section :

set httpd port 2812 and
use address localhost # only accept connection from localhost
allow localhost # allow localhost to connect to the server and
allow admin:monit # require user 'admin' with password 'monit'
allow @monit # allow users of group 'monit' to connect (rw)
allow @users readonly # allow users of group 'users' to connect readonly

Remplacez-le par les paramètres suivants :

set httpd port 2812 and
use address 0.0.0.0
SSL ENABLE
PEMFILE /var/certs/monit.pem
allow admin:test

Le mot "test" est le mot de passe, veuillez le remplacer par un mot de passe sécurisé et vous pouvez également changer le nom d'utilisateur "admin" en un nom qui ne peut pas être deviné facilement.

Nous ajoutons maintenant la configuration des services surveillés. Au lieu de modifier /etc/monitrc, nous créons un nouveau fichier de configuration /etc/monit.d/monitrc.

Mon fichier ressemble à ceci :

nano /etc/monit.d/monitrc
set logfile syslog facility log_daemon

# Send emails trough this mailserver
set mailserver localhost
# Set the From address of the alert emails
set mail-format { from: [email protected] }
# Send alerts to this address
set alert [email protected]
# Monitor the Proftpd service check process proftpd with pidfile /var/run/proftpd/proftpd.pid start program = "/usr/bin/systemctl start proftpd" stop program = "/usr/bin/systemctl stop proftpd" if failed port 21 protocol ftp then restart if 5 restarts within 5 cycles then timeout
# Monitor the SSH service check process sshd with pidfile /var/run/sshd.pid start program "/usr/bin/systemctl start sshd" stop program "/usr/bin/systemctl stop sshd" if failed port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout
# Monitor MySQL check process mysql with pidfile /var/run/mysqld/mysqld.pid group database start program = "/usr/bin/systemctl start mysqld" stop program = "/usr/bin/systemctl stop mysqld" if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout
# Monitor the apache webserver check process apache with pidfile /var/run/httpd/httpd.pid group www start program = "/usr/bin/systemctl start httpd" stop program = "/usr/bin/systemctl stop httpd" if failed host localhost port 80 protocol http and request "/monit_token" then restart if cpu is greater than 60% for 2 cycles then alert if cpu > 80% for 5 cycles then restart if totalmem > 500 MB for 5 cycles then restart if children > 250 then restart if loadavg(5min) greater than 10 for 8 cycles then stop if 3 restarts within 5 cycles then timeout
# Monitor postfix mailserver check process postfix with pidfile /var/spool/postfix/pid/master.pid group mail start program = "/usr/bin/systemctl start postfix" stop program = "/usr/bin/systemctl stop postfix" if failed port 25 protocol smtp then restart if 5 restarts within 5 cycles then 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 :

   if failed host localhost port 80 protocol http
      and request "/monit_token" then restart

ce qui signifie que monit essaie de se connecter à localhost sur le port 80 et essaie d'accéder au fichier /monit_token qui est /var/www/html/monit_token car la racine du document de notre site Web est /var/www/html. 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/html/monit_token et y écrire une chaîne aléatoire :

touch /var/www/html/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 :

nano /var/certs/monit.cnf
# create RSA certs - Server

RANDFILE = ./openssl.rnd

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type

[ req_dn ]
countryName = Country Name (2 letter code)
countryName_default = MO

stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = Monitoria

localityName                    = Locality Name (eg, city)
localityName_default            = Monittown

organizationName                = Organization Name (eg, company)
organizationName_default        = Monit Inc.

organizationalUnitName          = Organizational Unit Name (eg, section)
organizationalUnitName_default  = Dept. of Monitoring Technologies

commonName                      = Common Name (FQDN of your server)
commonName_default              = server.monit.mo

emailAddress                    = Email Address
emailAddress_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 :

systemctl restart monit

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.

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

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 du serveur avec munin et monit sur CentOS 5.2

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