Installation d'une architecture virtualisé pour mascarille ********************************************************** L'objectif de ce tutorial est d'obtenir l'architecture suivante .. image:: data/mascarille_ip.png .. .. aafig:: /----------------\ /----------------\ | 'DEBIANMV' | | 'FreeBox' | +----------------+ +----------------+ | '192.168.0.50' | | '88.163.16.98' | +----------------+ /----------->+ '192.168.0.253'| | 'VMWARE' | | +----------------+ \-------+--------/ | | '(ssh:65022)' | | | \----------------/ | | | | /-------+--------\ | /----------------\ | 'IPCOP' | | | 'SRVWEB' | +----------------+ | +----------------+ | '192.168.0.51' +--/ +------>+ '192.168.2.90' | | '192.168.2.254'+<------+ +----------------+ +----------------+ | | 'Apache' | | | | \----------------/ \----------------/ | | | /----------------\ | | 'SRVMYSQL' | | +----------------+ \------>+ '192.168.2.91' | | +----------------+ | | 'Mysql' | | \----------------/ | | | /----------------\ | | 'SRVNAGIOS' | | +----------------+ \------>+ '192.168.2.92' | | +----------------+ | | 'nagios' | | | 'influxdb' | | | 'grafana' | | \----------------/ | | | /----------------\ | | 'SRVPIWIK' | | +----------------+ \------>+ '192.168.2.93' | | +----------------+ | | 'Mysql' | | | 'Apache' | | \----------------/ | | | /----------------\ | | 'SRVCLOUD' | | +----------------+ \------>+ '192.168.2.94' | +----------------+ | 'Owncloud' | | 'Apache' | \----------------/ Installation du client VMWare ============================= Présentation ~~~~~~~~~~~~ VMWare Player est un logiciel de virtualisation proposé gratuitement pour une utilisation non commerciale . Il permet rapidement de créer un machine virtuel fonctionnant avec certains paramètres systèmes (réseau, processeurs, ...) pouvant être modifiés. .. figure:: data/emile_00.png Installation ~~~~~~~~~~~~ Pour windows il s'agit simplement d'un exe à lancer Pour linux il faut télécharger le fichier bundle VMware depuis le site wmware.com. Rendre le fichier exécutable puis le lancer .. code-block:: apacheconf chmod +x VMware-Player-*.bundle ./VMware-Player-*.bundle l'installation des vmware-tools pour les machines virtuelles sous linux .. code-block:: apacheconf apt-get install autoconf gcc-4.3* make psmisc linux-headers-$(uname -r) mount /media/cdrom cp /media/cdrom/VMwareTools-9.2.2-893683.tar.gz /usr/local/src cd /usr/local/src tar xzf /usr/local/src/VMwareTools-9.2.2-893683.tar.gz cd /usr/local/src/vmware-tools-distrib/ ./vmware-install.pl -d Fonctionnement du réseau ~~~~~~~~~~~~~~~~~~~~~~~~ Si il est assez simple d'imaginer comment fonctionne une machine virtuelle, le réseau virtuel est plus compliqué car il nous est permis de faire plusieurs choses totalement différents. Lors de l'installation de vmware, deux cartes réseau virtuelles sont ajoutées: * VMnet1 * VMnet8 Lors de la configuration d'une interface réseau, VMWare Player propose 3 types de connections: * Bridged * NAT * Host-only Réseau *bridged*: la machine virtuelle est connectée au même réseau physique que la machine hôte. .. figure:: data/emile_34.png Réseau *NAT*: Dans ce mode, la machine virtuelle est connectée à un réseau virtuel. La machine hôte est connectée à ce même réseau virtuel par l'intermédiaire de la carte réseau VMnet8. Valeurs par défaut : * L'adresse de ce réseau virtuel est 192.168.220.0/24. * L'adresse IP de la carte VMnet8 est 192.168.220.1. * L'adresse IP du routeur NAT est 192.168.220.2. * Ce réseau dispose également d'un serveur DHCP virtuel dont le pool va de 192.168.220.128 à 192.168.220.254 .. figure:: data/emile_31.png Réseau *Host-only* Dans ce mode, la machine virtuelle est connectée à un réseau virtuel. La machine hôte est connectée à ce même réseau virtuel par l'intermédiaire de la carte réseau VMnet1. La seule différence avec le mode "NAT" est l'absence de routeur. Les ordinateurs virtuels présents sur ce réseau ne pourront pas accéder à internet (à moins d'activer le routage sur l'ordinateur hôte). Valeurs par défaut : * L'adresse de ce réseau virtuel est 192.168.177.0/24. * L'adresse IP de la carte VMnet1 est 192.168.177.1. * Ce réseau dispose également d'un serveur DHCP virtuel dont le pool va de 192.168.177.128 à 192.168.177.254. .. figure:: data/emile_32.png Il est possible de changer le comportement de VMnet1 et 8 ou d'ajouter d'autres reseaux virtuelles en lançant l'utilitaire Virtual Network Editor .. figure:: data/emile_33.png Pour cela il faut extraire le fichier wmnetcfg.exe et vmnetcfglib.dll de l'outil vmware workstation (source sur url http://www.eightforums.com/virtualization/5137-how-add-virtual-network-editor-vmware-player-2.html#post275406 ) Pour Linux, il faut aussi installer l'outil vmware workstation et récupérer /usr/bin/vmware-netcfg et /usr/lib/vmware/bin/vmware-netcfg (source sur url https://communities.vmware.com/thread/270128 ) .. attention:: quid de la pérennité du vmware player ? Installation d'un système Debian ================================ Installation ~~~~~~~~~~~~ L'installation d'un système linux est assez simple (virtualisé ou non). Il faut simplement avoir identifié - nom de la machine - information réseau (dhcp, domaine) - mot de passe de root - utilisateur classique (login et mot de passe) .. figure:: data/emile_08.png .. figure:: data/emile_09.png .. figure:: data/emile_10.png .. figure:: data/emile_11.png .. figure:: data/emile_12.png .. figure:: data/emile_13.png .. figure:: data/emile_14.png .. figure:: data/emile_15.png .. figure:: data/emile_16.png .. figure:: data/emile_17.png .. figure:: data/emile_18.png .. figure:: data/emile_19.png .. figure:: data/emile_20.png .. figure:: data/emile_21.png .. figure:: data/emile_22.png .. figure:: data/emile_23.png .. figure:: data/emile_24.png .. figure:: data/emile_25.png .. figure:: data/emile_26.png .. figure:: data/emile_27.png .. figure:: data/emile_28.png .. figure:: data/emile_29.png vous avez maintenant une machine prête qui est accesible via SSH. Optimisation / Modification ~~~~~~~~~~~~~~~~~~~~~~~~~~~ A la suite d'une installation on peut réaliser les actions suivantes - renommage de la machine .. code-block:: apacheconf vi /etc/hostname vi /etc/hosts reboot - identification de la source des paquets .. code-block:: apacheconf vi /etc/apt/sources.list - mise à jour de la liste des paquets .. code-block:: apacheconf apt-get update - mise à jour globale du système .. code-block:: apacheconf apt-get upgrade - installation de vim, unzip , rsync et nfs-common pour la sauvegarde .. code-block:: apacheconf apt-get install vim unzip rsync nfs-common - modification du .bashrc .. code-block:: apacheconf vi /root/.bashrc Pour obtenir .. code-block:: bash export LS_OPTIONS='--color=auto' eval "`dircolors`" alias ls='ls $LS_OPTIONS' alias ll='ls $LS_OPTIONS -l' alias l='ls $LS_OPTIONS -lA' #ADD BY FAO alias vi=vim - paramétrage réseau .. code-block:: apacheconf vi /etc/network/interfaces exemple de configuration dhcp .. code-block:: bash allow-hotplug eth0 #activation de eth0 a chaud iface eth0 inet dhcp #activation dhcp exemple de configuration complète .. code-block:: bash allow-hotplug eth0 iface eth0 inet static address 192.168.11.100 netmask 255.255.255.0 gateway 192.168.11.1 dns-domain example.com dns-nameservers 192.168.11.1 - paramétrage des serveurs DNS .. code-block:: apacheconf vi /etc/resolv.conf exemple de configuration .. code-block:: bash nameserver 192.168.1.1 domain example.com - pour activer / désactiver une interface réseau .. code-block:: apacheconf ifup eth0 ifdown eth0 - pour arrêter la machine .. code-block:: apacheconf shutdown -h now - pour redémarrer la machine .. code-block:: apacheconf reboot A priori pour la sauvegarde des serveurs on peut utiliser rsync sur un montage nfs (correspondant au synology) .. code-block:: apacheconf mkdir /synology vi /etc/fstab .. code-block:: bash 192.168.1.100:/Répertoire_à_partager_sur_Serveur /synology nfs user,noauto 0 0 et pour faire une sauvegarde .. code-block:: bash rsync -av /var/www /synology pour autoriser l'utilisateur root a ce connecter via l'interface graphique gnome .. code-block:: apacheconf vi /etc/pam.d/gdm3 puis commenter cette ligne .. code-block:: bash #auth required pam_succeed_if.so user != root quiet_success Création d'une machine virtuelle Debian ======================================= il faut: - télécharger l'iso d'installation par net sur http://www.debian.org/CD/http-ftp/#stable - ouvrir vmwplayer et créer une nouvelle machine .. figure:: data/emile_02.png .. figure:: data/emile_03.png .. figure:: data/emile_04.png .. figure:: data/emile_05.png .. figure:: data/emile_06.png .. figure:: data/emile_07.png .. note:: dans cet exemple nous utilisons au niveau réseau une carte virtuelle nous pouvons choisir d'autres solutions Puis ce laisser guider par l'installation debian A la fin on peut supprimer le service qui vérifie le raid (cela ne sert à rien en virtualisé) .. code-block:: bash apt-get remove mpt-status Installation IPCOP ================== Préparation de la machine virtuelle ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Pour un firewall IPCOP il faut au moins trouver sur notre machine - une carte réseau en bridged (*RED*) - une carte réseau en bridged ou autre mode (*GREEN*) - un disque *IDE* - le fichier iso d'IPCOP en boot sur le lecteur CD virtuel .. figure:: data/emile_35.png .. figure:: data/emile_36.png .. figure:: data/emile_42.png Installation ~~~~~~~~~~~~ IPCOP possède un outil d'installation qu'il faut suivre pas à pas .. figure:: data/emile_37.png .. figure:: data/emile_38.png .. figure:: data/emile_39.png .. figure:: data/emile_41.png .. figure:: data/emile_43.png .. figure:: data/emile_44.png .. figure:: data/emile_45.png .. figure:: data/emile_46.png .. figure:: data/emile_47.png .. figure:: data/emile_48.png .. figure:: data/emile_49.png .. figure:: data/emile_50.png .. figure:: data/emile_51.png .. figure:: data/emile_52.png .. figure:: data/emile_53.png .. figure:: data/emile_54.png .. figure:: data/emile_55.png .. figure:: data/emile_56.png .. figure:: data/emile_57.png .. figure:: data/emile_58.png .. figure:: data/emile_59.png .. figure:: data/emile_60.png .. figure:: data/emile_61.png .. figure:: data/emile_62.png .. figure:: data/emile_63.png Mise en place de l'architecture cible ===================================== IPCOP ~~~~~ Information sur le serveur ================== ========================================================== Système IPCOP Disque 1 10GB Type Disque 1 IDE Montage Disque 1 / Network GREEN VMnet1 IP GREEN 192.168.2.254 Network RED Bridged IP RED DHCP DHCP START GREEN 192.168.2.1 DHCP STOP GREEN 192.168.2.253 user root root / systemlx user ipcop admin /et1000 clé cryptage et1000 ================== ========================================================== Règle de NAT ========== ================== ================================================== Source Destination Remarque ========== ================== ================================================== RED:80 192.168.2.90:82 permet l'accès au site web depuis l'exterieur RED:22 192.168.2.90:20 permet l'accès en ssh depuis l'exterieur RED:8443 192.168.2.254:8443 permet l'acces de l'interface d'admin depuis ext. RED:8086 192.168.2.92:8086 permet l'accès à la base influxdb depuis l'ext. RED:8083 192.168.2.92:8083 permet l'accès à la base minfluxdb depuis l'ext. ========== ================== ================================================== .. figure:: data/emile_64.png .. note:: il peut paraître étrange d'autoriser l'accès à l'interface d'admin d'ipcop depuis le réseau rouge. Mais le port d'admin (8443) n'est pas ouvert sur la box ... ce qui rend l'interface accessible que depuis le réseau local .. note:: sur la box on ouvre le port 65022 pour le faire router sur le port 22 d'IPCOP et donc le port 22 du serveur srvweb SRVNAGIOS ~~~~~~~~~ Information sur le serveur ================== ========================================================== Système DEBIAN 7 Disque 1 20GB Type Disque 1 SCSI Montage Disque 1 / Network VMnet1 IP 192.168.2.92 NETMASK 255.255.255.0 GATEWAY 192.168.2.254 DNS 192.168.0.253 user root root / systemlx nagios admin nagiosadmin / nagiosadmin ================== ========================================================== installation complémentaire du serveur .. code-block:: apacheconf apt-get install nagios3 pnp4nagios nagios-nrpe-plugin ssmtp sysstat chmod -R g+x /var/lib/nagios3/rw /etc/init.d/nagios3 restart configuration de ssmtp .. code-block:: apacheconf vi /etc/ssmtp/ssmtp.conf .. code-block:: bash root=zeizig@gmail.com mailhub=smtp.gmail.com:587 hostname=zeizig@gmail.com AuthUser=zeizig@gmail.com AuthPass=??????????????? FromLineOverride=YES UseSTARTTLS=YES UseTLS=YES AuthMethod=LOGIN .. code-block:: apacheconf vi /etc/ssmtp/revaliases .. code-block:: bash root:zeizig@gmail.com:smtp.gmail.com:587 nagios:zeizig@gmail.com:smtp.gmail.com:587 mail:zeizig@gmail.com:smtp.gmail.com:587 userlx:zeizig@gmail.com:smtp.gmail.com:587 remplacement du mailer par défaut .. code-block:: apacheconf unlink /usr/bin/mail ln -s /usr/sbin/ssmtp /usr/bin/mail test d'envoi de mail .. code-block:: apacheconf echo "Contenu du mail" | mail -s "Test mail" zeizig@neuf.fr Intégration des graphiques de performance dans l'interface nagios .. code-block:: apacheconf mkdir /var/local/pnp4nagios/ mkdir /var/local/pnp4nagios/var chmod 777 /var/local/pnp4nagios .. code-block:: apacheconf vi /etc/nagios3/nagios.cfg .. code-block:: bash check_external_commands=1 process_performance_data=1 #host_perfdata_command=process-host-perfdata #service_perfdata_command=process-service-perfdata host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tHOSTOUTPUT::$HOSTOUTPUT$ service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$\tSERVICEOUTPUT::$SERVICEOUTPUT$ host_perfdata_file_mode=a service_perfdata_file_mode=a host_perfdata_file_processing_interval=15 service_perfdata_file_processing_interval=15 host_perfdata_file_processing_command=process-host-perfdata-file service_perfdata_file_processing_command=process-service-perfdata-file .. code-block:: apacheconf dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3 chmod 2770 /var/lib/nagios3/rw /etc/init.d/nagios3 stop apache2ctl restart /etc/init.d/nagios3 start .. code-block:: apacheconf vi /etc/nagios3/conf.d/generic-host_nagios2.cfg .. code-block:: bash define host { .... action_url /pnp4nagios/graph?host=$HOSTNAME$' class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=_HOST_ } .. code-block:: apacheconf vi /etc/nagios3/conf.d/generic-service_nagios2.cfg .. code-block:: bash define service { ... notifications_enabled 0 ... action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=$SERVICEDESC$ } .. code-block:: apacheconf vi /etc/nagios3/command.cfg .. code-block:: bash define command { command_name process-service-perfdata-file command_line /usr/lib/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/service-perfdata } define command { command_name process-host-perfdata-file command_line /usr/lib/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/host-perfdata } define command{ command_name check_mascarille command_line /usr/lib/nagios/plugins/check_http -I mascarille.com $ARG1$ } define command{ command_name check_jlat command_line /usr/lib/nagios/plugins/check_http -I auteursdetheatre.org $ARG1$ } .. code-block:: apacheconf nagios3 -v /etc/nagios3/nagios.cfg /etc/init.d/nagios3 restart L'interface web est accessible via l'url http://ipcop:8008/nagios3 (via l'interface red) ou http://192.168.2.92/nagios3 (via l'interface green) Ajout de la supervision des autres machines de l'architecture .. code-block:: apacheconf vi /etc/nagios3/nagios.cfg .. code-block:: bash cfg_dir=/etc/nagios3/conf.d .. code-block:: apacheconf vi /ect/nagios3/conf.d/contacts_nagios2.cfg .. code-block:: bash define contact { contact_name root .... email zeizig@neuf.fr } .. note:: il aurait été plus propre de créer le contact "emile" mais pour un utilisation simple avec un seul contact on peut se permettre d'utiliser le contact root .. code-block:: apacheconf vi /etc/nagios3/conf.d/SRVMYSQL.cfg .. code-block:: bash define host{ use generic-host host_name SRVMYSQL alias SRVMYSQL address 192.168.2.91 } define service{ use generic-service host_name SRVMYSQL service_description PING check_command check_ping!100.0,20%!500.0,60% } define service{ use generic-service host_name SRVMYSQL service_description Sda1 check_command check_nrpe_1arg!check_sda1 } define service{ use generic-service host_name SRVMYSQL service_description Users check_command check_nrpe_1arg!check_users } define service{ use generic-service host_name SRVMYSQL service_description Load check_command check_nrpe_1arg!check_load } define service{ use generic-service host_name SRVMYSQL service_description Total Procs check_command check_nrpe_1arg!check_total_procs } define service{ use generic-service host_name SRVMYSQL service_description MYSQL check_command check_mysql_cmdlinecred!mascarille!et1000! } define service{ use generic-service host_name SRVMYSQL service_description MEMOIRE check_command check_nrpe_1arg!check_mem } define service{ use generic-service host_name SRVMYSQL service_description CPU-STATS check_command check_nrpe_1arg!check_cpu } define service{ use generic-service host_name SRVMYSQL service_description BACKUP check_command check_nrpe_1arg!check_backup } .. code-block:: apacheconf vi /etc/nagios3/conf.d/SRVWEB.cfg .. code-block:: bash define host{ use generic-host host_name SRVWEB alias SRVWEB address 192.168.2.90 } define service{ use generic-service host_name SRVWEB service_description PING check_command check_ping!100.0,20%!500.0,60% } define service{ use generic-service host_name SRVWEB service_description Sda1 check_command check_nrpe_1arg!check_sda1 } define service{ use generic-service host_name SRVWEB service_description Sda2 check_command check_nrpe_1arg!check_sda2 } define service{ use generic-service host_name SRVWEB service_description Users check_command check_nrpe_1arg!check_users } define service{ use generic-service host_name SRVWEB service_description Load check_command check_nrpe_1arg!check_load } define service{ use generic-service host_name SRVWEB service_description Total Procs check_command check_nrpe_1arg!check_total_procs } define service{ use generic-service host_name SRVWEB service_description Load check_command check_http } define service{ use generic-service host_name SRVWEB service_description MEMOIRE check_command check_nrpe_1arg!check_mem } define service{ use generic-service host_name SRVWEB service_description CPU-STATS check_command check_nrpe_1arg!check_cpu } .. code-block:: apacheconf vi /etc/nagios3/conf.d/IPCOP.cfg .. code-block:: bash define host{ use generic-host host_name IPCOP alias IPCOP address 192.168.2.254 } define service{ use generic-service host_name IPCOP service_description PING check_command check_ping!100.0,20%!500.0,60% } ajout pour localhost .. code-block:: apacheconf vi /etc/nagios3/conf.d/localhost_nagios2.cfg .. code-block:: bash define service{ use generic-service host_name localhost service_description MASCARILLE.COM check_command check_mascarille } define service{ use generic-service host_name localhost service_description AUTHEURDETHEATRE.ORG check_command check_jlat } .. code-block:: apacheconf vi /etc/nagios3/conf.d/DEBIANMV.cfg .. code-block:: bash define host{ use generic-host host_name DEBIANMV alias DEBIANMV address 192.168.1.50 } define service{ use generic-service host_name DEBIANMV service_description PING check_command check_ping!100.0,20%!500.0,60% } define service{ use generic-service host_name DEBIANMV service_description Sda2 check_command check_nrpe_1arg!check_sda2 } define service{ use generic-service host_name DEBIANMV service_description Sdb2 check_command check_nrpe_1arg!check_sdb2 } define service{ use generic-service host_name DEBIANMV service_description Sdd1 check_command check_nrpe_1arg!check_sdd1 } define service{ use generic-service host_name DEBIANMV service_description Sdbc check_command check_nrpe_1arg!check_sdc } define service{ use generic-service host_name DEBIANMV service_description Users check_command check_nrpe_1arg!check_users } define service{ use generic-service host_name DEBIANMV service_description Load check_command check_nrpe_1arg!check_load } define service{ use generic-service host_name DEBIANMV service_description Total Procs check_command check_nrpe_1arg!check_total_procs } define service{ use generic-service host_name DEBIANMV service_description MEMOIRE check_command check_nrpe_1arg!check_mem } define service{ use generic-service host_name DEBIANMV service_description CPU-STATS check_command check_nrpe_1arg!check_cpu } define service{ use generic-service host_name DEBIANMV service_description TEMPERATURE check_command check_nrpe_1arg!check_sensor } .. note:: afin d'avoir l'info de température il faut installer sur le serveur le paquet lm-sensors et ajouter dans la configuration de nrpe command[check_sensor]=/usr/lib/nagios/plugins/check_lm_sensors --high temp1=50,60 .. code-block:: apacheconf nagios3 -v /etc/nagios3/nagios.cfg /etc/init.d/nagios3 restart .. note:: le load résulte d'une serie de calculs mathématiques prenant en compte différents paramètre (cpu, I/O, etc ..) Ce qui faut retenir c'est que le load est le paramètre reflétant la charge d'un OS linux et qu il ne s'exprime pas en pourcentage. Arrêt redémarrage du service nagios .. code-block:: apacheconf /etc/init.d/nagios3 stop /etc/init.d/nagios3 start /etc/init.d/nagios3 restart Pour surveiller les logs d'apache j'utilise goaccess deux solutions pour l'installation .. code-block:: bash apt-get install goaccess # ou apt-get install libncursesw5-dev libglib2.0-dev libgeoip-dev libtokyocabinet-dev cd mkdir tmp cd tmp wget http://tar.goaccess.io/goaccess-0.9.2.tar.gz tar -xzvf goaccess-0.9.2.tar.gz cd goaccess-0.9.2/ ./configure --enable-geoip --enable-utf8 make make install puis vous pouvez lancer .. code-block:: bash goaccess -f myfile.log # pour la sortie web goaccess -f myfile.log > report.html vous pouvez modifier les paramètres via le fichier de conf goacess.conf ou par la ligne de commande .. code-block:: bash goaccess --log-format="%h %^[%d:%^] \"%r\" %s %b \"%R\" \"%u\"" --date-format=%d/%b/%Y --time-format %H:%M:%S -f /var/log/mascarille-2015_07_11_00_00.log SRVMYSQL ~~~~~~~~ Information sur le serveur ================== ========================================================== Système DEBIAN 7 Disque 20GB Type Disque 1 SCSI Montage Disque 1 / Network VMnet1 IP 192.168.2.91 NETMASK 255.255.255.0 GATEWAY 192.168.2.254 DNS 192.168.0.253 user root root / systemlx user root mysql root / systemmysql user mysql mascarille / et1000 ================== ========================================================== installation complémentaire du serveur .. code-block:: apacheconf apt-get install mysql-server nagios-nrpe-server sysstat La configuration de base est stockée dans /etc/mysql/my.cnf .. code-block:: apacheconf vi /etc/mysql/my.cnf .. code-block:: bash #bind-address = 127.0.0.1 bind-address = 192.168.2.91 .. code-block:: apacheconf /etc/init.d/mysql restart Sécurisation de la base .. code-block:: bash mysql_secure_installation Set root password ? Y Remove anonymous users ? Y Disallow root login remotely ? Y Remove test database and access to it ? Y Reload privilege tables now ? Y Création d'un super utilisateur mascarille .. code-block:: bash mysql -u login -p GRANT ALL PRIVILEGES ON *.* TO 'mascarille'@'%' IDENTIFIED BY 'et1000' WITH GRANT OPTION; Récupération d'une sauvegarde de la base .. code-block:: bash C:\>sftp psftp: no hostname specified; use "open host.name" to connect psftp> open 192.168.1.20 login as: root root@192.168.1.20's password: Remote working directory is /root psftp> put mysql_20131117.zip local:mysql_20131117.zip => remote:/root/mysql_20131117.zip Importation de la sauvegarde .. code-block:: apacheconf unzip mysql_20131117.zip mysql -umascarille -pet1000 fichier.sql # Exporte la base nom_base vers fichier.sql mysqldump -ulogin -pmotdepasse --all-databases --opt >fichier.sql # Exporte toutes les bases vers fichier.sql mysql -ulogin -pmotdepasse ") (options, args) = parser.parse_args() if len(args) != 1: parser.print_help(file=sys.stderr) sys.exit(1) file = args[0] if not os.path.isfile(file): print('no file log') sys.exit(NAGIOS_STATUS['OK']) fichier= open(file,'r') txt = '' for i in fichier.readlines(): txt = txt + i fichier.close() if len(txt) == 0: print('not error') sys.exit(NAGIOS_STATUS['OK']) for e in SEARCH_ERROR: if e in txt: print('find %s' % e) sys.exit(NAGIOS_STATUS['CRITICAL']) for e in SEARCH_WARNING: if e in txt: print('find %s' % e) sys.exit(NAGIOS_STATUS['WARNING']) print('file is not null') sys.exit(NAGIOS_STATUS['UNKNOWN']) .. code-block:: apacheconf chmod 777 /usr/lib/nagios/plugins/check_logfile.py vi /etc/nagios/nrpe.cfg .. code-block:: bash allowed_hosts=192.168.2.92 command[check_sda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/disk/by-uuid/1edfe8e1-0a9e-4df9-93fd-1e4fb501db5b command[check_mem]=/usr/lib/nagios/plugins/check_mem.pl -w 99 -c 100 command[check_cpu]=/usr/lib/nagios/plugins/check_cpu_stats.sh -w 10 -c 20 command[check_backup]=/usr/lib/nagios/plugins/check_logfile.py /var/log/backup.log .. note:: le uuid du disque 1 est récupéré via la commande df -k .. code-block:: apacheconf /etc/init.d/nagios-nrpe-server restart Arrêt redémarrage du service mysql .. code-block:: apacheconf /etc/init.d/mysql stop /etc/init.d/mysql start /etc/init.d/mysql restart Ajout d'une tâche de sauvegarde .. code-block:: apacheconf vi /root/backup.sh mkdir /root/backup .. code-block:: bash #!/bin/bash cd /root date=`date "+%Y-%m-%d"` mkdir $date cd $date mysqldump -umascarille -pet1000 --all-databases --opt >alldatabase.sql 2>/var/log/backup.log cd .. tar -cjf mysql_$date.tar.gz $date rm -R $date mv mysql_$date.tar.gz /root/backup find /root/backup -type f -mtime +30 -exec rm -f {} \; # rsync #rsync -av /root/backup /synology .. code-block:: apacheconf chmod +x /root/backup.sh automatisation via contrab (tout les jours à minuit) .. code-block:: apacheconf crontab -e .. code-block:: bash 0 0 * * * /root/backup.sh .. note:: cette sauvegarde est monitoré par NAGIOS via python. cela est un simple exemple mais nagios via python peut contrôler tout et n'importe quoi SRVWEB ~~~~~~ Information sur le serveur ================== ========================================================== Système DEBIAN 7 Disque 1 20GB Type Disque 1 SCSI Montage Disque 1 / Disque 2 2To Type Disque 2 SCSI Montage Disque 2 /var/www Network VMnet1 IP 192.168.2.90 NETMASK 255.255.255.0 GATEWAY 192.168.2.254 DNS 192.168.0.253 user root root / systemlx user piwigo zeizig / et1000&& apache version 2.2.22 php version 5.4.4-14 ================== ========================================================== installation complémentaire du serveur .. code-block:: apacheconf apt-get install apache2 install php5 php-pear php5-mysql mysql-client nagios-nrpe-server imagemagick sysstat php5-gd .. note:: le package mysql-client n'est pas obligatoire, mais cela va permettre de vérifier que le server SRVMYSQL est accessible par le serveur SRVWEB Verification de la connexion à la base de donnée .. code-block:: apacheconf mysql -h 192.168.2.91 -u mascarille -p Ajout d'un nouveau disque: * identification du disque .. code-block:: apacheconf fdisk -l # pour nous /dev/sdb * création d'une partition primaire .. code-block:: apacheconf cfdisk /dev/sdb # Nouveau / Primaire/ Ecrire/ Quitter fdisk -l * formatage de la partition .. code-block:: apacheconf mkfs -t ext3 /dev/sdb1 * vérification des données .. code-block:: apacheconf fsck -f -y /dev/sdb1 * monter la partition .. code-block:: apacheconf vi /etc/fstab .. code-block:: bash /dev/sdb1 /var/www ext3 defaults 0 2 .. code-block:: apacheconf reboot -n * vérification .. code-block:: apacheconf df -k il sera par la suite possible d'agrandir une partition. Pour cela il faut * arrêter la machine virtuelle * ajouter via vmware player de l'espace disque .. figure:: data/emile_65.png * redémarrer la machine virtuelle * évaluer le résultat avant agrandissement :: root@SRVWEB:~# df -k Sys. fich. 1K-blocks Util. Disponible Uti% Montée sur rootfs 19751804 1301656 17446784 7% / udev 10240 0 10240 0% /dev tmpfs 51440 256 51184 1% /run /dev/disk/by-uuid/1edfe8e1-0a9e-4df9-93fd-1e4fb501db5b 19751804 1301656 17446784 7% / tmpfs 5120 0 5120 0% /run/lock tmpfs 283100 0 283100 0% /run/shm /dev/sdb1 10321176 180328 9616564 2% /var/www * demonter la partition .. code-block:: apacheconf unmount /dev/sdb1 * suppression de la partition à agrandir et re création .. code-block:: apacheconf cfdisk /dev/sdb * redimensionnement de la partition .. code-block:: apacheconf resize2fs /dev/sdb1 * monter la partition .. code-block:: apacheconf mount /dev/sdb1 * vérification :: root@SRVWEB:/var/www# df -k Sys. fich. 1K-blocks Util. Disponible Uti% Montée sur rootfs 19751804 1303232 17445208 7% / udev 10240 0 10240 0% /dev tmpfs 51440 256 51184 1% /run /dev/disk/by-uuid/1edfe8e1-0a9e-4df9-93fd-1e4fb501db5b 19751804 1303232 17445208 7% / tmpfs 5120 0 5120 0% /run/lock tmpfs 283100 0 283100 0% /run/shm /dev/sdb1 20642396 185396 19408432 1% /var/www Paramétrage du serveur web: l'ensemble des paramètres sont situés :: /etc /apache2 apache2.conf ports.conf /mod-enabled *.load *.conf /conf.d *.* /sites-enabled mascarille.conf auteursdetheatre.conf /php5 /apache2 php.ini /var /www /mascarille /auteursdetheatre création des répertoires contenant les sites web .. code-block:: apacheconf mkdir /var/www/mascarille mkdir /var/www/auteursdetheatre rm /etc/apache2/sites-enabled/* paramétrage php .. code-block:: apacheconf vi /etc/php5/apache2/php.ini .. code-block:: bash max_input_vars = 5000 upload_max_filesize = 24M post_max_size = 24M max_execution_time = 300 paramètrage des sites .. code-block:: apacheconf vi /etc/apache2/sites-enabled/mascarille.conf .. code-block:: apacheconf # conf/site-available/mascarille.conf ServerAdmin zeizig@neuf.fr ServerName www.mascarille.com ServerAlias mascarille.com DocumentRoot "/var/www/mascarille" ErrorDocument 404 /galerie ErrorLog /var/log/mascarille.log LogLevel info DirectoryIndex index.html index.php Order Allow,Deny Deny from all Order Allow,Deny Deny from all Order Allow,Deny Deny from all Order Allow,Deny Deny from all Options Indexes AllowOverride none Order allow,deny Allow from all ErrorDocument 404 /galerie Options Indexes AllowOverride none Order allow,deny Allow from all ErrorDocument 404 /galerie24 Options Indexes AllowOverride none Order allow,deny Allow from all ErrorDocument 404 /tdm Options Indexes AllowOverride none Order allow,deny Allow from all ErrorDocument 404 /mjv Alias "/jlat" "/var/www/auteursdetheatre" Options Indexes AllowOverride none Order allow,deny Allow from all ErrorDocument 404 /jlat DirectoryIndex index.html LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog "|/usr/sbin/rotatelogs /var/log/mascarille-%Y_%m_%d_%H_%M.log 86400" common .. code-block:: apacheconf vi /etc/apache2/sites-enabled/auteursdetheatre.conf .. code-block:: apacheconf # conf/site-available/auteursdetheatre.conf ServerAdmin zeizig@neuf.fr ServerName www.auteursdetheatre.org ServerAlias auteursdetheatre.org DocumentRoot "/var/www/auteursdetheatre" ErrorDocument 404 /galerie ErrorLog /var/log/auteursdetheatre.log LogLevel info DirectoryIndex index.html index.php Options Indexes AllowOverride none Order allow,deny Allow from all ErrorDocument 404 /galerie DirectoryIndex index.html LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog "|/usr/sbin/rotatelogs /var/log/auteursdetheatre-%Y_%m_%d_%H_%M.log 86400" common Arrêt redémarrage du service apache .. code-block:: apacheconf /etc/init.d/apache2 stop /etc/init.d/apache2 start /etc/init.d/apache2 restart .. note:: chaque sites web possèdent son propre fichier log avec un système de rotation qui fait que les fichiers logs ne devraient pas grossir. Si on souhaite effacer des logs il ne faut pas supprimer le fichier de log mais le vider via la commande "> /var/log/mon_fichier_log.log" configuration du nrpe pour la supervision .. code-block:: apacheconf cd /usr/lib/nagios/plugins wget "http://exchange.nagios.org/components/com_mtree/attachment.php?link_id=608&cf_id=30" mv attachement* check_cpu_stats.sh chmod 777 check_cpu_stats.sh wget https://raw.github.com/justintime/nagios-plugins/master/check_mem/check_mem.pl chmod 777 check_mem.pl .. code-block:: apacheconf vi /etc/nagios/nrpe.cfg .. code-block:: bash allowed_hosts=192.168.2.92 command[check_sda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/disk/by-uuid/1edfe8e1-0a9e-4df9-93fd-1e4fb501db5b command[check_sda2]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sdb1 command[check_mem]=/usr/lib/nagios/plugins/check_mem.pl -w 99 -c 100 command[check_cpu]=/usr/lib/nagios/plugins/check_cpu_stats.sh -w 10 -c 20 .. note:: le uuid du disque 1 est récupéré via la commande df -k .. code-block:: apacheconf /etc/init.d/nagios-nrpe-server restart Intégration des sites de l'ancien serveur sur SRVWEB ============= ============================ Source Destination ============= ============================ E:/jlat /var/www/auteursdetheatre C:/mascarille /var/www/mascarille P:/Galerie24 /var/www/mascarille/galerie P:/mjv /var/www/mascarille/mjv P:/tdm /var/www/mascarille/tdm E:/ajv /var/www/mascarille/ajv E:/fred /var/www/mascarille/fred E/woocom /var/www/mascarille/woo ============= ============================ .. note:: devons nous garder fred et woo? .. note:: a la suite des copies si il y a des soucis de droit il suffit de lancer .. code-block:: bash chmod a+rX -R /var/www création des dossiers cibles .. code-block:: apacheconf mkdir /var/www/mascarille/galerie mkdir /var/www/mascarille/mjv mkdir /var/www/mascarille/ajv mkdir /var/www/mascarille/fred mkdir /var/www/mascarille/woo afin de garder active l'url www.mascarille.cm/jlat on déclare dans la configuration de mascarille l'alias jlat et le répertoire /var/www/auteurdetheatre .. note:: a priori auteurdetheatre.org a besoin de mascarille.com pour fonctionner Par exemple la banniere jlat est avec une adresse macarille.com/jlat ce qui est anormale (puisqu'un problème sur mascarille.com impact auteurdetheatre.org). Modification des fichiers de configuration pour wordpress .. code-block:: apacheconf vi wp-config.php .. code-block:: bash define('DB_NAME', 'joulyon'); define('DB_USER', 'mascarille'); define('DB_PASSWORD', 'et1000'); define('DB_HOST', '192.168.2.91'); .. attention:: contrairement à windows, linux est sensible à la case notament pour les informations de connexions (nom de base, id, password, ...) et pour les paths il faut donc renommer Blogzeizig en blogzeigi ... .. code-block:: bash mv /var/www/mascarille/Blog /var/www/mascarille/blog mv /var/www/mascarille/Blogzeizig /var/www/mascarille/blogzeizig de plus il faut ajouter un full droit sur le dossier _data de chaque site piwigo .. code-block:: apacheconf chmod 777 -R /var/www/mascarille/blog/wp-content chmod 777 -R /var/www/mascarille/blogzeizig/wordpress/wp-content chmod 777 -R /var/www/auteursdetheatre/wp-content Modification des fichiers de configuration pour piwigo .. code-block:: apacheconf vi local/config/database.inc.php .. code-block:: bash $conf['db_base'] = 'galerie24'; $conf['db_user'] = 'zeizig'; $conf['db_password'] = 'et1000'; $conf['db_host'] = '192.168.2.91'; de plus il faut ajouter un full droit sur le dossier _data et upload de chaque site piwigo .. code-block:: apacheconf chmod 777 -R _data chmod 777 -R upload chmod 777 -R plugins chmod 777 -R galleries SRVPIWIK ~~~~~~~~ Information sur le serveur ================== ========================================================== Système DEBIAN 7 Disque 20GB Type Disque 1 SCSI Montage Disque 1 / Network VMnet1 IP 192.168.2.93 NETMASK 255.255.255.0 GATEWAY 192.168.2.254 DNS 192.168.0.253 user root root / systemlx user root mysql root / systemmysql user mysql piwik / pi1000 ================== ========================================================== installation complémentaire du serveur .. code-block:: apacheconf apt-get install apache2 php5 php-pear php5-mysql mysql-client nagios-nrpe-server mysql-server sysstat php5-gd La configuration de base est stockée dans /etc/mysql/my.cnf .. code-block:: apacheconf vi /etc/mysql/my.cnf .. code-block:: bash #bind-address = 127.0.0.1 bind-address = 192.168.2.93 .. code-block:: apacheconf /etc/init.d/mysql restart Sécurisation de la base .. code-block:: bash mysql_secure_installation Set root password ? Y Remove anonymous users ? Y Disallow root login remotely ? Y Remove test database and access to it ? Y Reload privilege tables now ? Y Création d'un super utilisateur piwik et de la base PIWIK .. code-block:: bash mysql -u root -p GRANT ALL PRIVILEGES ON *.* TO 'piwik'@'%' IDENTIFIED BY 'pi1000' WITH GRANT OPTION; CREATE DATABASE piwik; configuration du nrpe pour la supervision .. code-block:: apacheconf cd /usr/lib/nagios/plugins wget "http://exchange.nagios.org/components/com_mtree/attachment.php?link_id=608&cf_id=30" mv attachement* check_cpu_stats.sh chmod 777 check_cpu_stats.sh wget https://raw.github.com/justintime/nagios-plugins/master/check_mem/check_mem.pl chmod 777 check_mem.pl .. code-block:: apacheconf vi /usr/lib/nagios/plugins/check_logfile.py .. code-block:: python #! /usr/bin/python import optparse import os, os.path import re import sys import time NAGIOS_STATUS = { "OK": 0, "WARNING": 1, "CRITICAL": 2, "UNKNOWN": 3 } SEARCH_WARNING = ['Warning','WARNING'] SEARCH_ERROR = ['Error','ERROR'] parser = optparse.OptionParser() parser.set_usage("%prog ") (options, args) = parser.parse_args() if len(args) != 1: parser.print_help(file=sys.stderr) sys.exit(1) file = args[0] if not os.path.isfile(file): print('no file log') sys.exit(NAGIOS_STATUS['OK']) fichier= open(file,'r') txt = '' for i in fichier.readlines(): txt = txt + i fichier.close() if len(txt) == 0: print('not error') sys.exit(NAGIOS_STATUS['OK']) for e in SEARCH_ERROR: if e in txt: print('find %s' % e) sys.exit(NAGIOS_STATUS['CRITICAL']) for e in SEARCH_WARNING: if e in txt: print('find %s' % e) sys.exit(NAGIOS_STATUS['WARNING']) print('file is not null') sys.exit(NAGIOS_STATUS['UNKNOWN']) .. code-block:: apacheconf chmod 777 /usr/lib/nagios/plugins/check_logfile.py vi /etc/nagios/nrpe.cfg .. code-block:: bash allowed_hosts=192.168.2.92 command[check_sda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/disk/by-uuid/e400f532-47de-47b5-a5c3-fbd683a7eda4 command[check_mem]=/usr/lib/nagios/plugins/check_mem.pl -w 99 -c 100 command[check_cpu]=/usr/lib/nagios/plugins/check_cpu_stats.sh -w 10 -c 20 command[check_backup]=/usr/lib/nagios/plugins/check_logfile.py /var/log/backup.log .. note:: le uuid du disque 1 est récupéré via la commande df -k .. code-block:: apacheconf /etc/init.d/nagios-nrpe-server restart Arrêt redémarrage du service mysql .. code-block:: apacheconf /etc/init.d/mysql stop /etc/init.d/mysql start /etc/init.d/mysql restart Ajout d'une tâche de sauvegarde .. code-block:: apacheconf vi /root/backup.sh mkdir /root/backup .. code-block:: bash #!/bin/bash cd /root date=`date "+%Y-%m-%d"` mkdir $date cd $date mysqldump -upiwik -ppi1000 --all-databases --opt >alldatabase.sql 2>/var/log/backup.log cd .. tar -cjf mysql_$date.tar.gz $date rm -R $date mv mysql_$date.tar.gz /root/backup find /root/backup -type f -mtime +30 -exec rm -f {} \; # rsync #rsync -av /root/backup /synology .. code-block:: apacheconf chmod +x /root/backup.sh automatisation via contrab (tout les jours à minuit) .. code-block:: apacheconf crontab -e .. code-block:: bash 0 0 * * * /root/backup.sh .. note:: cette sauvegarde est monitoré par NAGIOS via python. cela est un simple exemple mais nagios via python peut contrôler tout et n'importe quoi SRVLOCAL ~~~~~~~~ Information sur le serveur ================== ========================================================== Système DEBIAN 7 Disque 1 20GB Type Disque 1 SCSI Montage Disque 1 / Network VMnet1 IP DHCP user root root / systemlx ================== ========================================================== .. attention:: pourquoi ne pas mettre un windows 7 juste pour logme par exemple et plus simple a utiliser pour emile? SRVCLOUD ~~~~~~~~ Information sur le serveur ================== ========================================================== Système DEBIAN 7 Disque 20GB Type Disque 1 SCSI Montage Disque 1 / Network VMnet1 IP 192.168.2.94 NETMASK 255.255.255.0 GATEWAY 192.168.2.254 DNS 192.168.0.253 user root root / systemlx user owncloud admin / et1000 ================== ========================================================== installation d'owncloud (cf site) Annexes ======= check_mem.pl ~~~~~~~~~~~~ .. literalinclude:: data/check_mem.pl check_cpu_stats.sh ~~~~~~~~~~~~~~~~~~ .. literalinclude:: data/check_cpu_stats.sh Utilisation d'un disque SSD ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Modification du fichier /et/fstab .. code-block:: bash # / was on /dev/sda1 during installation UUID=6fd8af41-b50e-4147-b382-23765d37c6ca / ext3 defaults,noatime,nodiratime,errors=remount-ro 0 1 et modifier /etc/sysctl.conf pour éviter l'utilisation du swap .. code-block:: bash "m.swappiness=0 documentation finale :download:`ici `