11 Configuration Centreon
Votre supervision étant installée, nous allons passer à la configuration. La première partie de cet article est axé sur l’installation des extensions, ensuite nous partirons de zéro pour installer une nouvelle configuration basée sur la maquette Duchmol à l’aide des commandes Clapi. Le but de cet article est de vous donner des outils pour ensuite configurer votre propre supervision. Nous n’aborderons pas les notifications, les ACL et les widgets. Lisez l’article sur la maquette duchmol pour obtenir des informations complémentaires.
11.1 Installation des extensions
11.1a Centreon-Clapi
Ce module nous permettra de réaliser notre configuration en ligne de commande plus rapidement qu'avec l'interface Web. Continuez la lecture de cet article pour l’installation de Centreon-Clapi.
11.1b Les widgets
Profitez-en pour installer les widgets que vous trouverez sur cette page Les Widgets.
11.2 Suppression de la configuration de base
Pour supprimer toute la configuration par défaut, nous utiliserons un script bash utilisant les fonctionnalités de Centreon-Clapi. Nous l’appellerons delete_config.sh
#!/bin/bash # delete_config.sh # delete conf centreon VERT="\\033[1;32m" NORMAL="\\033[0;39m" ROUGE="\\033[1;31m" ROSE="\\033[1;35m" BLEU="\\033[1;34m" BLANC="\\033[0;02m" BLANCLAIR="\\033[1;08m" JAUNE="\\033[1;33m" CYAN="\\033[1;36m" # Parameter CLAPI_DIR=/usr/local/centreon/www/modules/centreon-clapi/core USER_CENTREON=admin PWD_CENTREON=password #***************************************************************** #* Delete Host Groups #***************************************************************** $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o HG -a show -v | while read line do ID_NAME=`echo $line | cut -d";" -f2 ` if [ "$ID_NAME" != "name" ] then echo "delete Host Group : "$ID_NAME $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o HG -a del -v "$ID_NAME" fi done #***************************************************************** #* Delete Hosts #***************************************************************** $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o HOST -a show -v | while read line do ID_NAME=`echo $line | cut -d";" -f2 ` if [ "$ID_NAME" != "name" ] then echo "delete host : "$ID_NAME $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o HOST -a del -v "$ID_NAME" fi done #***************************************************************** #* Delete Hosts Templates #***************************************************************** $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o HTPL -a show -v | while read line do ID_NAME=`echo $line | cut -d";" -f2 ` if [ "$ID_NAME" != "name" ] then echo "delete Host template : "$ID_NAME $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o HTPL -a del -v "$ID_NAME" fi done #***************************************************************** #* Delete Services Templates #***************************************************************** $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o STPL -a show -v | while read line do ID_NAME=`echo $line | cut -d";" -f2 ` if [ "$ID_NAME" != "description" ] then echo "delete Service Template : "$ID_NAME $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o STPL -a del -v "$ID_NAME" fi done #***************************************************************** #* Delete Services Categories #***************************************************************** $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o SC -a show -v | while read line do ID_NAME=`echo $line | cut -d";" -f2 ` if [ "$ID_NAME" != "name" ] then echo "delete Service categories : "$ID_NAME $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o SC -a del -v "$ID_NAME" fi done #***************************************************************** #* Delete Checks Command #***************************************************************** $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o CMD -a show -v | while read line do ID_NAME=`echo $line | cut -d";" -f2 ` ID_TYPE=`echo $line | cut -d";" -f3 ` if [[ "$ID_NAME" != "name" && "$ID_TYPE" == "check" ]] then echo "delete check command : "$ID_NAME $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o CMD -a del -v "$ID_NAME" fi done #***************************************************************** #* Delete Resource #***************************************************************** $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o RESOURCECFG -a show -v "$NAME" | while read line do ID=`echo $line | cut -d";" -f1 ` echo "delete custom macro : "$ID $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o RESOURCECFG -a del -v "$ID" done
N’oubliez pas de rendre le script exécutable, attention ce script est irréversible. Il supprime toute la configuration des macros personnalisées, des commandes, des hôtes et services.
11.3 Application de la nouvelle configuration
Nous utiliserons la maquette de base Duchmol pour appliquer notre configuration. Elle est composée de notre serveur de supervision, d’un serveur Lamp sous Debian et d’un serveur DNS-LDAP-MAIL sous Debian. le serveur weblamp utilise le SNMP V3 pour communiquer avec la supervision.
Pour gérer le SNMP V3 nous utiliserons les macros personnalisées dans les modèles d’hôtes. Il faut s’assurer que toutes les commandes utilisées soient compatibles avec le SNMP V3 avec la macro OPTIONV3.
11.3a Script chargement de la configuration
Je vous propose un script qui vous permettra de charger une configuration Centreon en paramétrant un fichier texte. Celui-ci contiendra les commandes clapi à la manière du fichier d’exportation créé par l’option -e de Centreon-Clapi. Voici le script que vous nommerez create_conf.sh
#!/bin/bash # create_conf.sh # create conf centreon # version 1.01 # Date 27/01/2015 # Eric Coquard # parameter $1 : file conf VERT="\\033[1;32m" NORMAL="\\033[0;39m" ROUGE="\\033[1;31m" ROSE="\\033[1;35m" BLEU="\\033[1;34m" BLANC="\\033[0;02m" BLANCLAIR="\\033[1;08m" JAUNE="\\033[1;33m" CYAN="\\033[1;36m" # Parameter CLAPI_DIR=/usr/local/centreon/www/modules/centreon-clapi/core USER_CENTREON=admin PWD_CENTREON=password STATE_OK=0 while read LINE do # comments if [ `expr index "$LINE" "#"` == 1 ] then continue fi OIFS=$IFS IFS=';' LINE_BLANK=$LINE unset PARAM for X in $LINE_BLANK do PARAM=("${PARAM[@]}" "$X") done #${PARAM[0]} OBJECT #${PARAM[1]} ACTION #${PARAM[2]} name #${PARAM[3]} PARAM1 #${PARAM[4]} PARAM2 #${PARAM[5]} PARAM3 #${PARAM[6]} PARAM4 #${PARAM[7]} PARAM5 # parameter ligne end if [ "${LINE: -1}" == ";" ] then PARAM=("${PARAM[@]}" "") fi IFS=$OIFS if [ $((${#PARAM[@]}-3)) == "0" ] then echo "Command Clapi ${PARAM[0]} : ${PARAM[1]} name : ${PARAM[2]} " RESULT=`$CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o ${PARAM[0]} -a ${PARAM[1]} -v "${PARAM[2]}"` elif [ $((${#PARAM[@]}-3)) == "1" ] then echo "Command Clapi ${PARAM[0]} : ${PARAM[1]} name : ${PARAM[2]} 1: ${PARAM[3]} " RESULT=`$CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o ${PARAM[0]} -a ${PARAM[1]} -v "${PARAM[2]};${PARAM[3]}"` elif [ $((${#PARAM[@]}-3)) == "2" ] then if [ ${PARAM[0]} == "RESOURCECFG" ] then $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o ${PARAM[0]} -a show -v "${PARAM[2]}" | while read LINE_ID do ID=`echo $LINE_ID | cut -d";" -f1 ` #echo $ID if [ "$ID" != "id" ] then echo "Command Clapi ${PARAM[0]} : ${PARAM[1]} name : $ID 1: ${PARAM[3]} 2: ${PARAM[4]}" RESULT=`$CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o ${PARAM[0]} -a ${PARAM[1]} -v "$ID;${PARAM[3]};${PARAM[4]}"` fi done else echo "Command Clapi ${PARAM[0]} : ${PARAM[1]} name : ${PARAM[2]} 1: ${PARAM[3]} 2: ${PARAM[4]}" RESULT=`$CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o ${PARAM[0]} -a ${PARAM[1]} -v "${PARAM[2]};${PARAM[3]};${PARAM[4]}"` fi elif [ $((${#PARAM[@]}-3)) == "3" ] then echo "Command Clapi ${PARAM[0]} : ${PARAM[1]} name : ${PARAM[2]} 1: ${PARAM[3]} 2: ${PARAM[4]} 3: ${PARAM[5]}" RESULT=`$CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o ${PARAM[0]} -a ${PARAM[1]} -v "${PARAM[2]};${PARAM[3]};${PARAM[4]};${PARAM[5]}"` elif [ $((${#PARAM[@]}-3)) == "4" ] then echo "Command Clapi ${PARAM[0]} : ${PARAM[1]} name : ${PARAM[2]} 1: ${PARAM[3]} 2: ${PARAM[4]} 3: ${PARAM[5]} 4: ${PARAM[6]}" RESULT=`$CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o ${PARAM[0]} -a ${PARAM[1]} -v "${PARAM[2]};${PARAM[3]};${PARAM[4]};${PARAM[5]};${PARAM[6]}"` else echo "Command Clapi ${PARAM[0]} : ${PARAM[1]} name : ${PARAM[2]} 1: ${PARAM[3]} 2: ${PARAM[4]} 3: ${PARAM[5]} 4: ${PARAM[6]} 5: ${PARAM[7]}" RESULT=`$CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o ${PARAM[0]} -a ${PARAM[1]} -v "${PARAM[2]};${PARAM[3]};${PARAM[4]};${PARAM[5]};${PARAM[6]};${PARAM[7]}"` fi STATE=$? if [ "$STATE" != "$STATE_OK" ] then echo -e "* ""$ROUGE""Erreur: "$RESULT"$NORMAL" fi done < $1
N’oubliez pas de rendre le script exécutable. A l’exécution, nous passerons le fichier de configuration en paramètre.
11.3b le fichier de configuration
Le fichier de configuration est composé d’une série de commandes Clapi et ses paramètres associés. Les commentaires sont précédés par la touche dièse ou hashtag. Attention le script n’aime pas les lignes vides. Voici un exemple de configuration que vous nommerez centreon.conf.
# Resources Macro # PATH Plugins RESOURCECFG;ADD;USER1;/usr/local/plugins/libexec;Central;path to the plugins # HOST Macro # SNMP VERSION RESOURCECFG;ADD;_HOSTSNMPVERSION;2c;Central;Custom Macro RESOURCECFG;setparam;_HOSTSNMPVERSION;activate;0 # SNMP COMMUNITY RESOURCECFG;ADD;_HOSTSNMPCOMMUNITY;duchmol72;Central;Custom Macro RESOURCECFG;setparam;_HOSTSNMPCOMMUNITY;activate;0 # SNMP V3 RESOURCECFG;ADD;_HOSTOPTIONV3;0;Central;Custom Macro RESOURCECFG;setparam;_HOSTOPTIONV3;activate;0 # THRESHOLD RESOURCECFG;ADD;_SERVICEWARNING;0;Central;Custom Macro RESOURCECFG;setparam;_SERVICEWARNING;activate;0 RESOURCECFG;ADD;_SERVICECRITICAL;0;Central;Custom Macro RESOURCECFG;setparam;_SERVICECRITICAL;activate;0 # SPEED (networks) RESOURCECFG;ADD;_SERVICESPEED;0;Central;Custom Macro RESOURCECFG;setparam;_SERVICESPEED;activate;0 # Number PACKET (icmp) RESOURCECFG;ADD;_SERVICEPACKETNUMBER;0;Central;Custom Macro RESOURCECFG;setparam;_SERVICEPACKETNUMBER;activate;0 # Process RESOURCECFG;ADD;_SERVICEPROCESS;0;Central;Custom Macro RESOURCECFG;setparam;_SERVICEPROCESS;activate;0 # Interface RESOURCECFG;ADD;_SERVICEINTERFACE;0;Central;Custom Macro RESOURCECFG;setparam;_SERVICEINTERFACE;activate;0 # Username / Password RESOURCECFG;ADD;_SERVICEPASSWORD;0;Central;Custom Macro RESOURCECFG;setparam;_SERVICEPASSWORD;activate;0 RESOURCECFG;ADD;_SERVICEUSERNAME;0;Central;Custom Macro RESOURCECFG;setparam;_SERVICEUSERNAME;activate;0 # Mysql RESOURCECFG;ADD;_SERVICEMODE_MYSQL;0;Central;Custom Macro RESOURCECFG;setparam;_SERVICEMODE_MYSQL;activate;0 # Port RESOURCECFG;ADD;_SERVICEPORT;0;Central;Custom Macro RESOURCECFG;setparam;_SERVICEPORT;activate;0 # Disk RESOURCECFG;ADD;_SERVICEDISK;0;Central;Custom Macro RESOURCECFG;setparam;_SERVICEDISK;activate;0 # Plugin centreon RESOURCECFG;ADD;_SERVICEMODE;0;Central;Custom Macro RESOURCECFG;setparam;_SERVICEMODE;activate;0 RESOURCECFG;ADD;_SERVICEPLUGIN;0;Central;Custom Macro RESOURCECFG;setparam;_SERVICEPLUGIN;activate;0 RESOURCECFG;ADD;_SERVICEOPTION;0;Central;Custom Macro RESOURCECFG;setparam;_SERVICEOPTION;activate;0 # Commands CMD;ADD;check_host_alive;check;$USER1$/check_icmp -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 1 CMD;setparam;check_host_alive;enable_shell;0 CMD;ADD;check_ping;check;$USER1$/check_icmp -H $HOSTADDRESS$ -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$ -p $_SERVICEPACKETNUMBER$ CMD;setparam;check_ping;enable_shell;0 #Dummy CMD;ADD;check_centreon_dummy;check;$USER1$/check_centreon_dummy -s $ARG1$ -o $ARG2$ # Services Templates # active STPL;ADD;Model-service-active;Model-service-active; STPL;setparam;Model-service-active;check_period;24x7 STPL;setparam;Model-service-active;notification_period;24x7 STPL;setparam;Model-service-active;is_volatile;0 STPL;setparam;Model-service-active;max_check_attempts;3 STPL;setparam;Model-service-active;normal_check_interval;5 STPL;setparam;Model-service-active;retry_check_interval;2 STPL;setparam;Model-service-active;active_checks_enabled;1 STPL;setparam;Model-service-active;passive_checks_enabled;0 STPL;setparam;Model-service-active;notification_interval;0 STPL;setparam;Model-service-active;notification_options;w,c,r,f,s STPL;setparam;Model-service-active;notifications_enabled;1 STPL;setparam;Model-service-active;first_notification_delay;0 STPL;addcontactgroup;Model-service-active;Supervisors # passif STPL;ADD;Model-service-passif;Model-service-passif; STPL;setparam;Model-service-passif;check_period;24x7 STPL;setparam;Model-service-passif;check_command;check_centreon_dummy STPL;setparam;Model-service-passif;check_command_arguments;!0!OK STPL;setparam;Model-service-passif;notification_period;24x7 STPL;setparam;Model-service-passif;is_volatile;0 STPL;setparam;Model-service-passif;max_check_attempts;1 STPL;setparam;Model-service-passif;normal_check_interval;1 STPL;setparam;Model-service-passif;retry_check_interval;1 STPL;setparam;Model-service-passif;active_checks_enabled;0 STPL;setparam;Model-service-passif;passive_checks_enabled;1 STPL;setparam;Model-service-passif;notification_interval;0 STPL;setparam;Model-service-passif;notification_options;w,c,r,f,s STPL;setparam;Model-service-passif;notifications_enabled;1 STPL;setparam;Model-service-passif;first_notification_delay;0 STPL;setparam;Model-service-passif;service_check_freshness;1 STPL;setparam;Model-service-passif;service_freshness_threshold;300 STPL;addcontactgroup;Model-service-passif;Supervisors # Service PING STPL;ADD;Ping-Model-Service;Ping-Model-Service;Model-service-active; STPL;setparam;Ping-Model-Service;check_command;check_ping STPL;setmacro;Ping-Model-Service;PACKETNUMBER;3 STPL;ADD;Ping-Lan-Model-Service;Ping-Lan;Ping-Model-Service; STPL;setmacro;Ping-Lan-Model-Service;WARNING;200,20% STPL;setmacro;Ping-Lan-Model-Service;CRITICAL;400,50% STPL;ADD;Ping-Wan-Model-Service;Ping-Wan;Ping-Model-Service; STPL;setmacro;Ping-Wan-Model-Service;WARNING;400,20% STPL;setmacro;Ping-Wan-Model-Service;CRITICAL;600,50% # Hosts Templates HTPL;ADD;generic-host;generic-host;;;; HTPL;setparam;generic-host;check_command;check_host_alive HTPL;setparam;generic-host;check_period;24x7 HTPL;setparam;generic-host;notification_period;24x7 HTPL;setparam;generic-host;host_max_check_attempts;5 HTPL;setparam;generic-host;host_active_checks_enabled;1 HTPL;setparam;generic-host;host_passive_checks_enabled;0 HTPL;setparam;generic-host;host_checks_enabled;2 HTPL;setparam;generic-host;host_obsess_over_host;2 HTPL;setparam;generic-host;host_check_freshness;2 HTPL;setparam;generic-host;host_event_handler_enabled;2 HTPL;setparam;generic-host;host_flap_detection_enabled;2 HTPL;setparam;generic-host;host_process_perf_data;2 HTPL;setparam;generic-host;host_retain_status_information;2 HTPL;setparam;generic-host;host_retain_nonstatus_information;2 HTPL;setparam;generic-host;host_notification_interval;0 HTPL;setparam;generic-host;host_notification_options;d,r HTPL;setparam;generic-host;host_notifications_enabled;0 HTPL;setparam;generic-host;host_snmp_community;duchmol72 HTPL;setparam;generic-host;host_location;0 HTPL;setparam;generic-host;host_register;0 HTPL;setparam;generic-host;host_activate;1 STPL;addhost;Ping-Lan-Model-Service;generic-host # Commands Plugins # Plugin local Linux # Disk CMD;ADD;check_disk_SNMP;check;$USER1$/check_centreon_snmp_remote_storage -H $HOSTADDRESS$ -n -d $_SERVICEDISK$ -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$ $_HOSTOPTIONV3$ -v $_HOSTSNMPVERSION$ -C $_HOSTSNMPCOMMUNITY$ CMD;setparam;check_disk_SNMP;graph;Storage #Load CMD;ADD;check_snmp_load;check;$USER1$/check_centreon_snmp_loadaverage -H $HOSTADDRESS$ $_HOSTOPTIONV3$ -v $_HOSTSNMPVERSION$ -C $_HOSTSNMPCOMMUNITY$ -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$ CMD;setparam;check_snmp_load;graph;Load_Average #Cpu CMD;ADD;check_snmp_cpu;check;$USER1$/check_centreon_snmp_cpu -H $HOSTADDRESS$ -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$ $_HOSTOPTIONV3$ -v $_HOSTSNMPVERSION$ -C $_HOSTSNMPCOMMUNITY$ CMD;setparam;check_snmp_cpu;graph;CPU #Process CMD;ADD;check_snmp_process;check;$USER1$/check_centreon_snmp_process -H $HOSTADDRESS$ $_HOSTOPTIONV3$ -C $_HOSTSNMPCOMMUNITY$ -v $_HOSTSNMPVERSION$ -p $_SERVICEPROCESS$ #Process multiple CMD;ADD;check_snmp_process_multiple;check;$USER1$/check_centreon_snmp_process -H $HOSTADDRESS$ $_HOSTOPTIONV3$ -v $_HOSTSNMPVERSION$ -C $_HOSTSNMPCOMMUNITY$ -n -p $_SERVICEPROCESS$ -w $_SERVICECRITICAL$ -c $_SERVICECRITICAL$ #Traffic CMD;ADD;check_traffic;check;$USER1$/check_centreon_snmp_traffic -H $HOSTADDRESS$ -n -i $_SERVICEINTERFACE$ -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$ $_HOSTOPTIONV3$ -v $_HOSTSNMPVERSION$ -C $_HOSTSNMPCOMMUNITY$ CMD;setparam;check_traffic;graph;Traffic #Tcp CMD;ADD;check_tcp;check;$USER1$/check_tcp -H $HOSTADDRESS$ -p $_SERVICEPORT$ -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$ CMD;setparam;check_tcp;graph;Latency # Services Templates Linux-Local # TRAP STPL;ADD;Modele_Trap_Linux;TRAP_LINUX;Model-service-passif STPL;addtrap;Modele_Trap_Linux;linkDown STPL;addtrap;Modele_Trap_Linux;linkUp STPL;addtrap;Modele_Trap_Linux;warmStart STPL;addtrap;Modele_Trap_Linux;coldStart # CPU STPL;ADD;modele cpu snmp;CPU_snmp;Model-service-active STPL;setparam;modele cpu snmp;check_command;check_snmp_cpu STPL;setmacro;modele cpu snmp;WARNING;80 STPL;setmacro;modele cpu snmp;CRITICAL;90 # LOAD STPL;ADD;modele load snmp;LOAD_snmp;Model-service-active STPL;setparam;modele load snmp;check_command;check_snmp_load STPL;setmacro;modele load snmp;WARNING;4,3,2 STPL;setmacro;modele load snmp;CRITICAL;6,5,4 # TRAFFIC STPL;ADD;modele Traffic;Traffic;Model-service-active STPL;setparam;modele Traffic;check_command;check_traffic STPL;setmacro;modele Traffic;WARNING;80 STPL;setmacro;modele Traffic;CRITICAL;90 STPL;ADD;modele Traffic eth0;Traffic eth0;modele Traffic STPL;setmacro;modele Traffic eth0;INTERFACE;eth0 #DISK STPL;ADD;modele disque SNMP;Disk_SNMP;Model-service-active STPL;setparam;modele disque SNMP;check_command;check_disk_SNMP STPL;setmacro;modele disque SNMP;WARNING;80 STPL;setmacro;modele disque SNMP;CRITICAL;90 STPL;ADD;modele disque SNMP root;Disk_SNMP_root;modele disque SNMP STPL;setmacro;modele disque SNMP root;DISK;/ STPL;ADD;modele disque SNMP boot;Disk_SNMP_boot;modele disque SNMP STPL;setmacro;modele disque SNMP boot;DISK;/boot STPL;ADD;modele disque SNMP var;Disk_SNMP_var;modele disque SNMP STPL;setmacro;modele disque SNMP var;DISK;/var STPL;ADD;modele disque SNMP tmp;Disk_SNMP_tmp;modele disque SNMP STPL;setmacro;modele disque SNMP tmp;DISK;/tmp STPL;ADD;modele disque SNMP usr;Disk_SNMP_usr;modele disque SNMP STPL;setmacro;modele disque SNMP usr;DISK;/usr STPL;ADD;modele disque SNMP home;Disk_SNMP_home;modele disque SNMP STPL;setmacro;modele disque SNMP home;DISK;/home STPL;setmacro;modele disque SNMP home;WARNING;80 STPL;setmacro;modele disque SNMP home;CRITICAL;90 # Model TCP STPL;ADD;modele TCP;TCP;Model-service-active STPL;setparam;modele TCP;check_command;check_tcp STPL;setmacro;modele TCP;WARNING;0,5 STPL;setmacro;modele TCP;CRITICAL;1 STPL;ADD;modele TCP apache 80;TCP Apache 80;modele TCP STPL;setmacro;modele TCP apache 80;PORT;80 STPL;ADD;modele TCP MYSQL;TCP MYSQL;modele TCP STPL;setmacro;modele TCP MYSQL;PORT;3306 STPL;ADD;modele TCP DNS;TCP DNS;modele TCP STPL;setmacro;modele TCP DNS;PORT;53 STPL;ADD;modele TCP LDAP;TCP LDAP;modele TCP STPL;setmacro;modele TCP LDAP;PORT;389 STPL;ADD;modele TCP SMTP;TCP SMTP;modele TCP STPL;setmacro;modele TCP SMTP;PORT;25 STPL;ADD;modele TCP POP3;TCP POP3;modele TCP STPL;setmacro;modele TCP POP3;PORT;110 STPL;ADD;modele TCP IMAP;TCP IMAP;modele TCP STPL;setmacro;modele TCP IMAP;PORT;143 # MODEL PROCESS STPL;ADD;modele Process SNMP;Process SNMP;Model-service-active STPL;setparam;modele Process SNMP;check_command;check_snmp_process STPL;ADD;modele Process SNMP multiple;Process SNMP multiple;Model-service-active STPL;setparam;modele Process SNMP multiple;check_command;check_snmp_process_multiple STPL;setmacro;modele Process SNMP multiple;WARNING;10 STPL;setmacro;modele Process SNMP multiple;CRITICAL;20 STPL;ADD;modele Process DNS;Process DNS;modele Process SNMP STPL;setmacro;modele Process DNS;PROCESS;named STPL;ADD;modele Process MYSQL;Process MYSQL;modele Process SNMP STPL;setmacro;modele Process MYSQL;PROCESS;mysqld STPL;ADD;modele Process Apache2;Process Apache2;modele Process SNMP multiple STPL;setmacro;modele Process Apache2;PROCESS;apache2 # HOSTS MODEL OS-Linux-Debian7-SNMPV2 HTPL;ADD;OS-Linux-Debian7;Modele OS Linux Debian 7;;;Central; HTPL;setparam;OS-Linux-Debian7;host_snmp_version;2c STPL;addhost;Modele_Trap_Linux;OS-Linux-Debian7 STPL;addhost;modele disque SNMP boot;OS-Linux-Debian7 STPL;addhost;modele disque SNMP home;OS-Linux-Debian7 STPL;addhost;modele disque SNMP root;OS-Linux-Debian7 STPL;addhost;modele disque SNMP usr;OS-Linux-Debian7 STPL;addhost;modele disque SNMP var;OS-Linux-Debian7 STPL;addhost;modele cpu snmp;OS-Linux-Debian7 STPL;addhost;modele load snmp;OS-Linux-Debian7 STPL;addhost;modele Traffic eth0;OS-Linux-Debian7 # HOSTS MODEL OS-Linux-Debian7-SNMPV3 HTPL;ADD;OS-Linux-Debian7-V3;Modele OS Linux Debian 7 V3;;;Central; HTPL;setparam;OS-Linux-Debian7-V3;host_snmp_version;3 HTPL;setmacro;OS-Linux-Debian7-V3;OPTIONV3;--username netadmin --password azerty98 --privpassword duchmol72 --authprotocol MD5 --privprotocol DES STPL;addhost;Modele_Trap_Linux;OS-Linux-Debian7-V3 STPL;addhost;modele disque SNMP boot;OS-Linux-Debian7-V3 STPL;addhost;modele disque SNMP home;OS-Linux-Debian7-V3 STPL;addhost;modele disque SNMP root;OS-Linux-Debian7-V3 STPL;addhost;modele disque SNMP usr;OS-Linux-Debian7-V3 STPL;addhost;modele disque SNMP var;OS-Linux-Debian7-V3 STPL;addhost;modele cpu snmp;OS-Linux-Debian7-V3 STPL;addhost;modele load snmp;OS-Linux-Debian7-V3 STPL;addhost;modele Traffic eth0;OS-Linux-Debian7-V3 # HOSTS MODEL OS-Linux-vagrant-V2 HTPL;ADD;OS-Linux-vagrant;Modele OS Linux vagrant;;;Central; HTPL;setparam;OS-Linux-vagrant;host_snmp_version;2c STPL;addhost;Modele_Trap_Linux;OS-Linux-vagrant STPL;addhost;modele disque SNMP boot;OS-Linux-vagrant STPL;addhost;modele disque SNMP root;OS-Linux-vagrant STPL;addhost;modele cpu snmp;OS-Linux-vagrant STPL;addhost;modele load snmp;OS-Linux-vagrant STPL;addhost;modele Traffic eth0;OS-Linux-vagrant # HOSTS MODEL application HTPL;ADD;Linux-WEB;Modele Web Linux;;;Central; STPL;addhost;modele Process Apache2;Linux-WEB STPL;addhost;modele TCP apache 80;Linux-WEB HTPL;ADD;Linux-MySQL;Modele MySQL;;;Central; STPL;addhost;modele Process MYSQL;Linux-MySQL STPL;addhost;modele TCP MYSQL;Linux-MySQL HTPL;ADD;Linux-DNS;Modele Linux DNS;;;Central; STPL;addhost;modele Process DNS;Linux-DNS STPL;addhost;modele TCP DNS;Linux-DNS HTPL;ADD;Linux-LDAP;Modele Linux LDAP;;;Central; STPL;addhost;modele TCP LDAP;Linux-LDAP HTPL;ADD;Linux-MAIL;Modele Linux MAIL;;;Central; STPL;addhost;modele TCP SMTP;Linux-MAIL STPL;addhost;modele TCP POP3;Linux-MAIL STPL;addhost;modele TCP IMAP;Linux-MAIL # HOSTS GROUP HG;ADD;Linux-Servers;All linux servers HG;setparam;Linux-Servers;hg_activate;1 # HOSTS # supervision HOST;ADD;supervision;serveur supervision;127.0.0.1;generic-host;Central;Linux-servers HOST;addtemplate;supervision;OS-Linux-vagrant|Linux-WEB|Linux-MySQL HOST;setparam;supervision;host_snmp_community;duchmol72 HOST;setparam;supervision;host_snmp_version;2c HOST;applytpl;supervision # debdns HOST;ADD;debdns;serveur DNS-LDAP-MAIL;10.0.0.10;generic-host;Central;Linux-servers HOST;addtemplate;debdns;OS-Linux-vagrant|Linux-DNS|Linux-LDAP|Linux-MAIL HOST;setparam;debdns;host_snmp_community;duchmol72 HOST;setparam;debdns;host_snmp_version;2c HOST;applytpl;debdns # weblamp HOST;ADD;weblamp;serveur Web;10.0.0.51;generic-host;Central;Linux-servers HOST;addtemplate;weblamp;OS-Linux-Debian7-V3|Linux-WEB|Linux-MySQL HOST;setparam;weblamp;host_snmp_community;duchmol72 HOST;setparam;weblamp;host_snmp_version;3 HOST;applytpl;weblamp #activate Trap TRAP;setparam;linkDown;traps_submit_result_enable;1 TRAP;setparam;linkUp;traps_submit_result_enable;1 TRAP;setparam;warmStart;traps_submit_result_enable;1 TRAP;setparam;coldStart;traps_submit_result_enable;1
Appliquez la nouvelle configuration
./create_conf.sh centreon.conf
Les éventuelles erreurs seront affichées en rouge. Ensuite chargez la nouvelle configuration dans notre supervision. Utilisez l’alias clapi vu dans l’article de Centreon-Clapi.
clapi -a POLLERGENERATE -v 1
clapi -a CFGMOVE -v 1
Si Engine est démarré, privilégiez la commande POLLERRELOAD.
clapi -a POLLERRESTART -v 1
11.4 Vérification de notre configuration
Maintenant il reste à vérifier notre supervision en se connectant à l’interface Web.
Au bout de quelques minutes, vous devriez avoir tous vos services au vert comme l’image ci-dessous.
Après la configuration de votre supervision, vérifiez le fonctionnement des commandes externes avec l’ajout de commentaires. Si les commentaires n’apparaissent pas après quelques secondes, vérifiez les log de centcore situés normalement dans /usr/local/centreon/log/centcore.log. Si vous avez ce type de message :
2015-02-11 07:38:03 - Cannot write external command on central server : "[1423636652] ADD_SVC_COMMENT;debdns;TRAP_LINUX;1;admin;essai
vérifiez que l’utilisateur centreon ait le droit d’écrire dans /var/lib/centreon-engine/rw. Pour information, j’ai modifié les droits de /var/lib/centreon-engine avec la commande suivante :
chmod 755 /var/lib/centreon-engine
12 Configurez Iptables avec Centreon
Maintenant que notre supervision est fonctionnelle, il serait dommage de ne pas utiliser iptables pour sécuriser notre serveur. Souvenez-vous, nous avions arrêter le service du pare-feu pour réaliser notre installation. Nous nous intéresserons au trafic entrant. La configuration ci-dessous est une configuration très simple. Nous utiliserons que la table par défaut FILTER et la chaine d’entrée INPUT. Nous autoriserons en entrées les protocoles SNMP, SSH et HTTP.
12.1 Configuration d’iptables
Si comme moi, vous utilisez une machine virtuelle et une connexion ssh, assurez-vous que le service iptables est arrêté. Commençons à effacer toute trace de règles de filtrage.
iptables -t filter -F
iptables -t filter -X
Vérifiez les tables en mémoire
iptables -t filter -L
Vous devez obtenir ceci
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Les trois chaînes sont vides. On commence par autoriser le protocole ssh pour la connexion avec un terminal.
iptables -t filter -A OUTPUT -p tcp --dport ssh -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport ssh -j ACCEPT
Ensuite, on autorise les connexions déjà établies et les nouvelles pour les trap SNMP en Ouptut
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
On autorise la boucle locale.
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
A partir de ce point, nous pouvons interdire toutes les autres connexions qui ne sont pas connues explicitement.
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
Maintenant il faut autoriser les protocoles nécessaires au bon fonctionnement de notre supervision. Nous commencerons par le protocole http pour l’interface Web.
iptables -t filter -A OUTPUT -p tcp --dport http -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport http -j ACCEPT
Nous vérifions maintenant l’interface de Centreon. Il reste à autoriser les différents ports pour mener à bien notre supervision.
Continuons par le protocole ICMP qui permet de vérifier les hôtes.
iptables -A INPUT -p icmp -j ACCEPT
Nous autoriserons le protocole SNMP afin de permettre le fonctionnement des plugins. Les deux services à inclure sont les requêtes (161) et les traps (162). Il faut autoriser les ports TCP et UPD.
iptables -t filter -A OUTPUT -p tcp --dport snmp -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport snmp -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport snmp -j ACCEPT
iptables -t filter -A INPUT -p udp --dport snmp -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport snmptrap -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport snmptrap -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport snmptrap -j ACCEPT
iptables -t filter -A INPUT -p udp --dport snmptrap -j ACCEPT
Nous autorisons les différents ports pour les check_tcp en sortie seulement.
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport smtp -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport imap -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport pop3 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport ldap -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport mysql -j ACCEPT
On autorisera aussi le protocole ntp pour la synchronisation horaire.
iptables -t filter -A OUTPUT -p tcp --dport ntp -j ACCEPT
Vérifions nos tables en mémoire, vous pouvez utiliser l’option n permettant l’affichage en décimal pointé pour les adresses.
iptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:161
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:161
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:162
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:162
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:161
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:161
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:162
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:162
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:143
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:389
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:110
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
Pour terminer, sauvegardons notre configuration.
iptables-save | tee /etc/sysconfig/iptables
Nous pourrons activer de nouveau le service iptables.
service iptables start
chkconfig iptables on
Cet article est terminé. Bonne supervision.