Superviser son blog avec Nagios

Date: 20/12/2010 | Catégories: Blog,Nagios,Open-source,Planet-libre,Reseau,Systeme,Web | Tags: ,,

Pour moi, la vraie révolution Internet de ces dernières années est l'apparition de blogs ayant petit à petit pris le relais des sites institutionnels pour diffuser de l'information. Souvent tenu à bout de bras par des particuliers, ils ne disposent pas d'une infrastructure informatique professionnelle.

Ainsi en cas de problème technique, l'administrateur est souvent prévenu par ses lecteurs...

Nous allons donc voir dans ce billet comment utiliser le logiciel libre de supervision Nagios pour surveiller automatiquement son blog.

Voilà ce que donnera le résultat dans l'interface Web de Nagios:

Contexte

Afin d'illustrer ce billet, nous allons partir sur l'hypothèse ou vous disposer d'un blog hébergé sur un serveur dédié ou virtuel sous Ubuntu Server 10.04 avec un accès SSH et un compte utilisateur avec les droits d'administration (sudo>r00t).

Aller on se connecte en SSH sur son serveur et on suit le guide.

Installation de Nagios

Nous allons utiliser le script d'installation automatique de Nagios (développé par votre serviteur).

On commence par le télécharger le script nagiosautoinstall-ubuntu.sh:

mkdir ~/monitoring/

cd ~/monitoring

wget https://raw.github.com/nicolargo/nagiosautoinstall/master/nagiosautoinstall-ubuntu.sh

chmod a+x nagiosautoinstall-ubuntu.sh

Puis on lance l'installation (il y a quelques questions auxquelles il faudra répondre) :

sudo ./nagiosautoinstall-ubuntu.sh

On devrait ensuite pourvoir accéder à l'interface Web de Nagios à partir de l'URL suivant: http://@IP/nagios/

Ou @IP est l'adresse IP de votre serveur.

Configuration de Nagios

Comme Nagios tourne sur la même machine que le serveur à superviser, toutes la configuration se fera dans le fichier de configuration localhost.cfg.

J'utilise deux plugins non inclus dans les plugins de bases de Nagios (mais installé automatiquement par le script nagiosautoinstall-ubuntu.sh):

On édite le fichier /usr/local/nagios/etc/objects/localhost.cfg (à adapter à votre configuration...):

#######################################################################

#

# Supervision du blog blog.nicolargo.com

#

#######################################################################

 

#######################################################################

#######################################################################

#

# HOST DEFINITION

#

#######################################################################

#######################################################################

 

# Define a host for the local machine

 

define host{

use linux-server

host_name blog

alias blog.nicolargo.com

address 127.0.0.1

}

 

#######################################################################

#######################################################################

#

# SERVICE DEFINITIONS

#

#######################################################################

#######################################################################

 

 

# Define a service to "ping" the local machine

 

define service{

use local-service

host_name blog

service_description PING

check_command check_ping!100.0,20%!500.0,60%

}

 

 

# Define a service to check the disk space of the root partition

# on the local machine. Warning if < 20% free, critical if

# < 10% free space on partition.

 

define service{

use local-service

host_name blog

service_description Root Partition

check_command check_local_disk!10%!5%!/

}

 

 

 

# Define a service to check the number of currently logged in

# users on the local machine. Warning if > 2 users, critical

# if > 3 users.

 

define service{

use local-service

host_name blog

service_description Current Users

check_command check_local_users!2!3

}

 

 

# Define a service to check the number of currently running procs

# on the local machine. Warning if > 250 processes, critical if

# > 400 processes.

 

define service{

use local-service

host_name blog

service_description Total Processes

check_command check_local_procs!250!400!RSZDT

}

 

# Check memoire avec script check_memory

# http://blog.nicolargo.com/2008/07/surveiller-la-memoire-de-vos-serveurs-avec-nagios.html

# -w 800000000 -c 900000000

 

define service{

use local-service

host_name blog

service_description Memory

check_command check_memory!800000000!900000000

}

 

# Define a service to check the load on the local machine.

 

define service{

use local-service

host_name blog

service_description Current Load

check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0

}

 

# Define a service to check the swap usage the local machine.

# Critical if less than 10% of swap is free, warning if less than 20% is free

 

define service{

use local-service

host_name blog

service_description Swap Usage

check_command check_local_swap!20!10

}

 

# Define a service to check SSH on the local machine.

# Disable notifications for this service by default, as not all users may have SSH enabled.

 

define service{

use local-service

host_name blog

service_description SSH

check_command check_ssh

#notifications_enabled 0

}

 

 

 

# Define a service to check HTTP on the local machine.

# Disable notifications for this service by default, as not all users may have HTTP enabled.

 

define service{

use local-service

host_name blog

service_description HTTP

check_command check_http

#notifications_enabled 0

}

 

# Define a service to check URL

# http://blog.nicolargo.com/google89d0cf0b89815a2a.html

 

define service{

use local-service

host_name blog

service_description URL Google check file

check_command check_url!http://blog.nicolargo.com/googl

e89d0cf0b89815a2a.html

}

 

# Define a service to check URL

# http://blog.nicolargo.com/sitemap.xml.gz

 

define service{

use local-service

host_name blog

service_description URL Sitemap

check_command check_url!http://blog.nicolargo.com/sitem

ap.xml.gz

}

 

# Define a DDOS detection service

# http://blog.nicolargo.com/?p=4100

# Warning: >50 SYN_RECV

# Critical: >70 SYN_RECV

 

define service{

use local-service

host_name blog

service_description DDOS detect

check_command check_ddos!50!70

}

Ce fichier de configuration va permettre de superviser les choses suivantes:

  • état du serveur (réponse au ping en moins de 500ms et 60% de paquets perdus)
  • espace disque disponible > 5% de la taille totale (10% pour un warning)
  • pas plus de 3 personnes connectés en même temps sur le serveur (2 pour un warning)
  • pas plus de 400 processus lancés en parallèle (250 pour un warning)
  • mémoire disponible (basée sur RAM 1 Go) > 10% de la mémoire totale (20% pour un warning)
  • charge (CPU) moyenne sur 5 minutes < 10% (5% pour un warning)
  • espace de swap disponible > 10% de la taille totale du swap (20% pur warning)
  • Port SSH en écoute
  • Port HTTP en écoute
  • Vérification de l'existence du fichier de check de Google
  • Vérification de l'existence du fichier sitemap.xml (référencement dans moteur de recherche)

Il y a surement plein d'autres choses à vérifier...

A vos claviers pour nous dire cela dans les commentaire.

  • Pingback: Tweets that mention Superviser son blog avec Nagios -- Topsy.com()

  • Salut,
    le lien « check_memory: Pour surveiller l’occupation mémoire des serveurs GNU/Linux. » ne pointe pas vers le bon article je pense.

    Je suis intéressé par ton script sur la mémoire, je n’en ai pas trouvé un qui me convienne pour l’instant !

  • SVP … je pensais me prendre une machine dédiée chez ILIAd pour faire tourner un centreon/nagios pour monitorirer des sites web et serveurs … me faut un UNBUNTU workstation ou serveur ??? ^^

    J’utiliserai ensuite ton script d’auto-install ^^

    Merci d’avance pour la réponse et pour tout le boulot,
    IZ

    • Serveur c’est mieux et si possible une version LTS. Par exemple Ubuntu Server 10.04 LTS.

  • Merci bcp pour l’info ^^

    Ton script n’installe pas la partie centreon ?? si ?? (j’utilise actuellement FAN sur 3 VM)

    Merci encore ^^

    • « Seulement » la partie Nagios, sans Centreon.

  • Pingback: links for 2010-12-29 « SILOPOLIS Blog()

  • audriano2006

    Bonjour Nicolago et merci encore pour ces tuto, j’aimerai avoir la procédure complète à suivre pour faire un monnitoring de l’internet. je veux savoir par exemple quand internet est coupé et quand ca revient.

  • Hello un petit renseignement..Pour des cours j’aimerai maquetter la même chose en cent OS ..Comment faire pour récupérer les plugins manquant que tu as scripté dans ton install ?
    Bye Merci

  • ayoub_ice

    Bonjour,Je viens de commencer de lire le livre Performance PHP : Audit et optimisation LAMP. J’ai du mal à télécharger le script d’installation de Nagios. Apparament c’est le même que vous utlisez dans ce billet.
    pouvez vous re-uploader le script ? pour que je puisse terminer la lecture :D.

    • Pour être tout à fait exact c’est les auteurs du livre « Performance PHP : Audit et optimisation LAMP » qui utilisent mon script (vu que j’ai participé à la rédaction de cet ouvrage).

      Je viens de changer le lien pour télécharge le script qui est hébergé sur GitHub:

      https://raw.github.com/nicolargo/nagiosautoinstall/master/nagiosautoinstall-ubuntu.sh

      Bonne continuation !

      • ayoub_ice

        Merci beaucoup.
        C’est vraiment bien dommage qu’ils ne l’ont pas mentionné dans livre.

  • mati

    Alerte……bonsoir a tous je travail sur mon projet tutore qui porte sur la supervision d# un reseau avec un serveur nagios ,
    le pb est que je suis bloque au niveau de la creation du compte utilisateur pour l#interface web qui est selon le tuto source, la commande est la suivante # usermod -G nagcmd wwwrun .
    merci davance