Catégories
Open-source Planet-libre Reseau

Installer un serveur TFTP pour vos Cisco

Un rapide billet pour rappeler les étapes nécessaires à la mise en place d’un serveur TFTP sur un système GNU/Linux (Debian Squeeze) afin de sauvegarder les configurations de vos routeurs Cisco.

Installation du serveur TFTPD

On utilise le paquet tftpd qui se trouve dans les dépôts Debian (commande à saisir dans un terminal root ou en utilisant la commande sudo):

apt-get install tftpd

On doit ensuite créer le répertoire ou seront stockés les fichiers des configurations Cisco (/srv/tftp dans mon cas).

mkdir /srv/tftp
chmod -R 777 /srv/tftp
chown -R nobody /srv/tftp

Si vous choisissez un autre répertoire que /srv/tftp, il faut:

  1. éditer le fichier de configuration /etc/inetd.conf et changer le répertoire de la ligne commençant par tftp
  2. Redémarrer le serveur TFTP avec la commande /etc/init.d/open-inetd restart

Création du fichier de configuration vide

TFTP est un protocole de communication de bas niveau. Il ne met pas en place de mécanisme d’authentification. La création du fichier de configuration vide doit donc se faire à partir du serveur (il est possible de changer ce comportement et ainsi de permettre au client, c’est à dire au routeur Cisco, de créer lui même le fichier mais je ne le conseille pas pour des questions de sécurité).

On va donc créer un fichier vide nommé cisco-rtr-01-confg:

touch /srv/tftp/cisco-rtr-01-confg
chmod -R 777 /srv/tftp
chown -R nobody /srv/tftp

Sauvegarde de la configuration depuis le routeur Cisco

On en vient enfin au vif du sujet: c’est à dire la sauvegarde de la configuration (IOS running) de notre Cisco sur le serveur TFTP.

# copy run tftp:
Address or name of remote host []? 192.168.0.100
Destination filename [yourname-confg]? cisco-rtr-01-confg
!!
1292 bytes copied in 0.380 secs (3400 bytes/sec)

Il faut bien sûr remplacer l’adresse 192.168.0.100 par l’adresse IP (ou le nom) de votre machine Debian ou vous avez installés TFTP.

Catégories
Open-source Planet-libre Reseau

Installation de VNStat sous Debian

VNStat est un outil bien utile pour surveiller le débit des interfaces réseaux de ses machines. Il se présente sous la forme d’un processus tournant en tache de fond (les versions plus anciennes se basaient sur crontab) et surveillant les flux transitant sur vos interfaces.

Nous allons détailler l’installation et l’utilisation de cet outil sur un système GNU/Linux Debian Squeeze.

Installation de VnStat

Dans une console root (ou en utilisant sudo), il faut saisir les commande suivantes:

[cce lang= »bash »]

apt-get install vnstat vnstati

vnstat -u -i eth0 –nick « LAN0″

/etc/init.d/vnstat start

[/cce]

La configuration de VnStat est centralisé dans le fichier /etc/vnstat.conf. Par défaut, le rafraîchissement se fait toutes les 5 minutes et surveille l’interface eth0. Cette configuration est bien sûr à adapter à vos besoins.

Si vous saisissez la commande suivante dans les 5 minutes qui suivent l’installation, il est normal d’avoir le message d’erreur:

[cce lang= »bash »]

vnstat

eth0: Not enough data available yet.

[/cce]

Les premières statistiques sont disponibles 5 minutes après l’installation.

Utilisation de VnStat

Statistiques instantanées basées sur les 5 dernières secondes:

[cce lang= »bash »]

# vnstat -tr

[/cce]

Statistique de la dernière journée avec une granularité par heure:

[cce lang= »bash »]

# vnstat -h

[/cce]

Statistique sur la dernière journée:

[cce lang= »bash »]

# vnstat -d

[/cce]

Statistique sur la dernière semaine:

[cce lang= »bash »]

# vnstat -w

[/cce]

Statistique sur le dernier mois:

[cce lang= »bash »]

# vnstat -m

[/cce]

Utilisation de VnStati (pour générer des graphes)

VnStati est un logiciel qui perme, à partir de la base de données renseignée par VnStat, de générer des rapports au format images (PNG) que l’on peut facilement intégrer dans une page Web de supervision (à noter qu’il existe un script PHP permettant de générer automatiquement des rapports).

Pour créer une image au format PNG contenant le rapport des dernières heures, il suffit de saisir la commande suivante:

[cce lang= »bash »]

# vnstati -h -o h.png

[/cce]

Le fichier h.png contiendra:

Comme vous pouvez le voir, VnStati utilise les mêmes arguments que VnStat (un petit man vnstat vous sera utile pour avoir la liste exhaustive).

Catégories
Open-source Planet-libre Reseau

Mounter son espace de sauvegarde FTP en local sous Debian

Voici une rapide explication pour « mounter » dans un répertoire local un espace de sauvegarde FTP. J’ai utilisé cette procédure pour accéder à mon espace de stockage gratuit de 10 Go sur mon serveur Dedibox DC sous Debian Squeeze.

On commence par récupérer les paramètres de son serveur FTP

On a besoin:

  • du nom de la machine hébergeant le serveur FTP (host)
  • un compte utilisateur (login)
  • un mot de passe (password)

Chez Online.net, ces informations se trouve dans la console d’administration:

Une fois ces informations sous le coude on peut passer à l’étape suivante.

On prépare le terrain

On commence par installer Fuse qui va permettre de faire le montage du répertoire en FTP (toutes les commandes suivantes sont à saisir dans une console root):

[cc lang= »bash »]

apt-get install curlftpfs

[/cc]

Ensuite on créer le répertoire local (/mnt/backup dans mon cas) à partir duquel le répertoire FTP distant sera visible.

[cc lang= »bash »]

mkdir /mnt/backup

[/cc]

On teste que tout fonctionne en ligne de commande:

[cc lang= »bash »]

curlftpfs login:password@host /mnt/backup/

[/cc]

Vous devriez pouvoir lire, écrire et effacer des fichiers dans le répertoire /mnt/backup/.

On démounte le répertoire avec la commande suivante:

[cc lang= »bash »]

umount /mnt/backup

[/cc]

On automatise le tout

On lieu d’avoir à saisir à la main ou dans un script de démarrage la commande curlftpfs, le plus simple et transparent est d’utiliser le fichier /etc/fstab qui va mounter automatiquement l’espace FTP au démarrage de votre machine.

Pour cela, il faut d’abord créer un fichier /root/.netrc contenant les informations sur votre serveur FTP, donc après un « vi /root/.netrc », il faut ajouter la section suivante:

[cc lang= »bash »]

machine host

login login

password password

[/cc]

Puis une petite sécurité sur ce fichier:

[cc lang= »bash »]

chmod 600 /root/.netrc

[/cc]

Ensuite on édite le fichier /etc/fstab et on y ajoute la ligne suivante:

[cc lang= »bash »]

curlftpfs#host /mnt/backup fuse _netdev,allow_other,uid=1000,gid=1000,umask=0022 0 0

[/cc]

Note: il faut remplacer uid=1000,gid=1000 par les valeurs données par le résultat de la commande « id ».

Un petit…

[cc lang= »bash »]

mount -a

[/cc]

… plus tard et votre répertoire FTP distant devrait être accèssible depuis votre répertoire local /etc/backup !

Source: Linux Config

Catégories
Blog Open-source Planet-libre Systeme Web

Installation pas à pas d’un serveur de blog WordPress sur Debian Squeeze

Je viens de passer le cap et de m’abonner à un serveur dédié chez Online.net. Mon choix s’est porté vers une Dedibox DC. J’ai longtemps hésité avec une OVH Kimsufi 16G mais le fait que la Dedibox propose en standard deux disques fonctionnant en RAID1 à fait la différence (avec l’âge ou privilégie la sécurité à la performance…).

Avant de migrer mon blog sur ce nouveau serveur (il est actuellement hébergé chez un VPS Gandi 4 parts), j’ai profité de disposer d’un serveur tout neuf pour valider une procédure complète d’installation et d’optimisation d’un blog WordPress sur un serveur Debian Squeeze en utilisant le « stack » Web suivant: Varnish + Nginx + MemCached.

L’objectif de ce billet est de partager cette procédure avec vous.

Introduction

Nous allons donc détaillé l’installation d’un blog WordPress sur une installation toute fraîche de Debian Squeeze (version stable) pré-installé dans mon cas par Online.net avec un minimum de logiciels (pas d’Apache ni d’autres serveurs Web). Vous l’avez compris, pour suivre la procédure suivante, il faut s’assurer qu’aucun serveur Web n’est installé sur votre machine.

Post installation du système

J’ai pris l’habitude de créer des scripts de post installation pour les OS (desktop et server) que j’utilise. Dans le cas qui nous intéresse je vais donc utiliser le script: squeezeserverpostinstall.sh.

Pour le télécharger puis le lancer, il suffit de saisir les commandes suivantes à partir d’un compte administrateur ou directement en root):

wget --no-check-certificate https://raw.github.com/nicolargo/debianpostinstall/master/squeezeserverpostinstall.sh
chmod a+x squeezeserverpostinstall.sh
./squeezeserverpostinstall.sh

Comme le serveur est directement connecté à Internet et à moins d’être très joueur, je vous conseille de configurer quelques règles de Firewall. J’ai mis à disposition un jeu de règles assez facile à modifier en éditant le fichier /etc/init.d/firewall.sh. Pour le télécharger et l’installer:

wget --no-check-certificate -O /etc/init.d/firewall.sh https://raw.github.com/nicolargo/debianpostinstall/master/firewall.sh
chmod a+x /etc/init.d/firewall.sh
update-rc.d firewall.sh defaults 20
service firewall start

Note: par défaut les ports SSH entrant et HTTP et DNS sortant sont autorisés.

Pour modifier ces listes, il suffit de configurer les variables suivantes dans le fichier /etc/init.d/firewall.sh:

# Services that the system will offer to the network
TCP_SERVICES="22" # SSH only
UDP_SERVICES=""

# Services the system will use from the network
REMOTE_TCP_SERVICES="80 443" # web browsing
REMOTE_UDP_SERVICES="53" # DNS

A ce stade, vous devriez avoir un serveur à jour et sécurisé. Passons donc à l’étape suivante.

Installation de Nginx + PHP-FPM + Memcached

C’est actuellement une des combos les plus performantes pour héberger des serveurs Web basées sur PHP (ce qui est le cas du CMS WordPress). Pour effectuer simplement et rapidement ces logiciels, j’utilise un script maisonnginxautoinstall.sh. Il faut donc saisir les commandes suivantes:

wget --no-check-certificate https://raw.github.com/nicolargo/debianpostinstall/master/nginxautoinstall.sh
chmod a+x nginxautoinstall.sh
./nginxautoinstall.sh

Le script va installer la dernière version stable de Nginx puis le daemon PHP-FPM qui permet de booster les performances des scripts PHP et enfin le gestionnaire de cache mémoire MemCached (note: le script fonctionne également sur Debian Lenny 5).

Pour adapter les performances de Nginx à votre CPU, il faut modifier la variable worker_processes le fichier /etc/nginx/nginx.conf. Pour obtenir la valeur optimale pour votre système, vous pouvez lancer la commande suivante:

cat /proc/cpuinfo | grep processor | wc -l

Qui donne la valeur 4 sur ma Dedibox (4 coeurs/CPU). On édite le fichier nginx.conf de la manière suivante:

user www-data;

# Set this value to 1 or N with N = N-Core
worker_processes  4;
worker_rlimit_nofile 8192;
events {
	# max_clients = worker_processes * worker_connections
	worker_connections  1024;
	# Only for Linux 2.6 or >
	use epoll;
	# Accept as many connections as possible
	multi_accept on;
}

http {
	# Mime types
	include       	mime.types;
	default_type  	application/octet-stream;

	# Log format
	set_real_ip_from 	127.0.0.1; 
	real_ip_header 		X-Forwarded-For; 
	log_format 	main '$remote_addr - $remote_user [$time_local]  $status '
		'"$request" $body_bytes_sent "$http_referer" '
    		'"$http_user_agent" "$http_x_forwarded_for"';

	# Hide the Nginx version number
	server_tokens off;

	# Some tweeks...
	sendfile        		on;
	tcp_nodelay			on;
	#tcp_nopush			on;

	# Timeouts
	#keepalive_timeout  		10 10;
	keepalive_timeout  		65;
	client_body_timeout   		30;
	client_header_timeout 		30;
	send_timeout          		30;
	client_max_body_size		8M;
	reset_timedout_connection 	on;

	# Gzip module configuration
	gzip  			on;
	gzip_disable 		"MSIE [1-6].(?!.*SV1)";
	gzip_vary 		on;
	gzip_comp_level 	3;
	gzip_proxied 		any;
	gzip_buffers 		16 8k;

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

On relance le serveur pour prendre en compte la configuration:

service nginx restart

Installation du langage PHP

WordPress use et abuse du langage PHP, une installation optimisé du moteur permettant d’exécuter le code est donc nécessaire. Personnellement j’utilise l’implémentation PHP5 FPM qui est réputé pour ses performances. Elle est installé par défaut avec mon script d’auto-install de Nginx.

La configuration est stocké dans le répertoire /etc/php5/fpm. Mon fichier php-fpm.conf ressemble à cela:

[global]
pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log
emergency_restart_interval = 1m 
process_control_timeout = 10s 
include=/etc/php5/fpm/pool.d/*.conf

Avec WordPress comme CMS, je vous encourage à stocker les fichiers de sessions dans une base NoSQL de type Redis afin de ne pas se retrouver avec des milliers de petits fichiers dans le répertoire /tmp. Pour cela, il suffit d’ajouter les lignes suivantes dans le fichier /etc/php5/fpm/php.ini:

session.save_handler = "redis"
session.save_path = "tcp://127.0.0.1:6379?weight=1"

Dernière étape et non des moindres, la configuration du pool de processus PHP-FPM que vous allez dédier à votre blog WordPress (par exemple /etc/php5/fpm/pool.d/www.conf dans mon cas):

[www]
user = www-data
group = www-data
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.status_path = /status
request_terminate_timeout = 120s
rlimit_files = 65535
chdir = /

On peut relancer PHP

service php5-fpm restart

et passer à l’étape suivante, la base de donnée…

Installation de MySQL

A l’heure actuelle, WordPress utilise une base de donnée MySQL pour fonctionner (je préférerai PgSQL mais bon…). Il faut donc installer le serveur de base de donnée MySQL:

apt-get install mysql-server php5-mysql
service php5-fpm restart

Optimiser un peu celle-ci en modifiant quelques variables dans le fichier /etc/mysql/my.cnf:

query_cache_type = 1
query_cache_limit = 2M
query_cache_size = 32M

et relancer le daemon pour que la configuration soit prise en compte:

service mysql restart

On passe ensuite à la phase de création de la base de données nommée wordpress accessible par utilisateur/motdepasse:

# mysql -u root -p

mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO "utilisateur"@"localhost" IDENTIFIED BY "motdepasse";
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> exit

Installation du CMS WordPress

J’utilise la dernière version stable de WordPress disponible sur le site officiel:

cd /var/www
wget http://wordpress.org/latest.tar.gz
tar zxvf latest.tar.gz
cp wordpress/wp-config-sample.php wordpress/wp-config.php
chown -R www-data:www-data /var/www/wordpress

Ensuite on configure la base de donnée dans le fichier wordpress/wp-config.php:

...
define('DB_NAME', 'wordpress');
define('DB_USER', 'utilisateur');
define('DB_PASSWORD', 'motdepasse');
define('WP_CACHE', true);
...

Il suffit ensuite de finaliser l’installation de WordPress en pointant un navigateur Web vers http://votredomaine.com/wordpress/wp-admin/install.php.

Si vous avez changé la structure du permalink (par exemple chez moi c’est /%year%/%monthnum%/%postname%.html), il faut modifer la configuration Nginx, plus précisément la section « Location / » dans le fichier /etc/nginx/sites-enabled/default-site:

server{
        listen 80;

        server_name blog.nicolargo.com;
        root	/var/www/blog.nicolargo.com;
        index 	index.php index.html index.htm;

        access_log /var/log/nginx/blog.access_log;
        error_log /var/log/nginx/blog.error_log;

        # Security
        include global/security.conf;

        location / {
                # This is cool because no php is touched for static content. 
                # include the "?$args" part so non-default permalinks doesn't break 
when using query string
                try_files $uri $uri/ /index.php?$args;
        }

	# PHP-FPM
	include global/php-fpm.conf;

	# STATICS FILES
        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
}

avec les fichiers inclus suivants:

Securité /etc/nginx/global/security.conf:

location = /favicon.ico {
	log_not_found off;
	access_log off;
}

location = /robots.txt {
	allow all;
	log_not_found off;
	access_log off;
}

location ~ /\. {
	deny all;
	access_log off;
	log_not_found off;
}

et PHP-FPM /etc/nginx/global/php-fpm.conf:

# PHP scripts -> PHP-FPM server listening on 127.0.0.1:9000
location ~ \.php$ {
	# The following line prevents malicious php code to be executed through some uploaded file (without php extension, like image)
	# This fix shoudn't work though, if nginx and php are not on the same server, other options exist (like unauthorizing php execution within upload folder)
	# More on this serious security concern in the "Pass Non-PHP Requests to PHP" section, there http://wiki.nginx.org/Pitfalls
	try_files $uri =404;

	# PHP	
	# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
	fastcgi_pass   127.0.0.1:9000;
	fastcgi_index  index.php;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	include fastcgi_params;
	fastcgi_param  QUERY_STRING     $query_string;
	fastcgi_param  REQUEST_METHOD   $request_method;
	fastcgi_param  CONTENT_TYPE     $content_type;
	fastcgi_param  CONTENT_LENGTH   $content_length;
	fastcgi_intercept_errors        on;
	fastcgi_ignore_client_abort     off;
	fastcgi_connect_timeout 60;
	fastcgi_send_timeout 180;
	fastcgi_read_timeout 180;
	fastcgi_buffers 4 256k;
	fastcgi_buffer_size 128k;
	#fastcgi_buffers 256 16k;
	#fastcgi_buffer_size 16k;
	fastcgi_busy_buffers_size 256k;
	fastcgi_temp_file_write_size 256k;
}

Ne pas oublier de relancer NGinx pour prendre en compte cette modification:

service nginx restart

Installation du plugin WP Super Cache

Après quelques années sous d’utilisation de W3 Total Cache et la mise en place de mon proxy/cache Varnish, j’ai choisi d’utiliser le plugin WP Super Cache qui s’occupe de cacher les pages demandées par les utilisateurs non identifiées (donc pas 90% du trafic) afin que PHP et MySQL ne soit pas appelé lors de ces requêtes.

Il est également possible de précharger la mise en cache des pages les plus visitées et de les mettre automatiquement à jour de manière régulière.

Une fois installé et activé il faut se rendre dans le menu de configuration du plugin et de cliquer sur l’onglet « Easy » et « Mise en cache Activée (Recommandé) ».

A ce stade, on peut faire quelques tests de performances avec Apache Bench (disponible dans le paquet Debian apache2-utils):

[cce lang= »bash »]

Requests per second: 219.53 [#/sec] (mean) (options -t 30 -c 5)

[/cce]

ou avec le service en ligne Load Impact qui permet de simuler gratuitement jusqu’à 50 utilisateurs simultanés sur votre site:

On voit bien que les page du blog se chargent rapidement (environ 500ms) même avec 50 utilisateurs simultanés.

Puis arriva Varnish…

J’ai mis à jour ma configuration de Varnish+Nginx pour WordPress dans le billet suivant. Vous pouvez le suivre en lieu et place du chapitre qui suit…

Vous savez tout le bien que je pense de Varnish. Nous allons donc maintenant ajouter cet accélérateur de site Web dans notre configuration. Il est à noter que cette étape est optionnelle. Vous pouvez tout à fait rester avec la configuration du chapitre précédent qui offre déjà de belles performances.

On commence par installer la dernière version de Varnish en utilisant le dépôt officiel.

apt-get install curl
curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -
echo "deb http://repo.varnish-cache.org/debian/ $(lsb_release -s -c) varnish-3.0" >> /etc/apt/sources.list.d/varnish.list
apt-get update
apt-get install varnish

La version 3 de Varnish apporte certaines modifications au niveau de la syntaxe des fichiers de configuration. Si vous avez donc une config fonctionnelle en version 2, je vous conseille de lire cette page pour l’adapter.

On commence par éditer le fichier de configuration /etc/varnish/default.vcl:


Puis la manière dont le daemon va se lancer dans le fichier /etc/default/varnish:


Enfin on reconfigure NGinx pour ne plus écouter sur le port 80 (c’est Varnish qui va prendre le relais) mais sur le port 8080. Il suffit de changer la deuxième ligne du fichier /etc/nginx/sites-enabled/wordpress:

...
listen 8080;
...

On n’oublie pas d’ouvrir les port au niveau du Firewall (fichier /etc/init.d/firewall.sh):

# Services that the system will offer to the network
TCP_SERVICES="22 80" # SSH, Web
UDP_SERVICES=""

# Services the system will use from the network
REMOTE_TCP_SERVICES="25 80 443" # Mail, Web browsing
REMOTE_UDP_SERVICES="53" # DNS

...

On relance les services:

service firewall.sh restart
service nginx restart
service varnish restart

Afin pour que Varnish soit prévenu quand un billet est modifié, il faut installer et activier le plugin Varnish HTTP purge.

Le site devrait fonctionner normalement mais avec des performances boostées. Par exemple, le même test Apache Bench donne les résultats suivants:

Requests per second: 9425.03 [#/sec] (mean) (options -t 30 -c 5)

A comparer avec 220 requêtes par secondes sans Varnish…

On voit même une amélioration du temps de chargement des pages (300ms vs 500ms) qui reste constant avec  Load Impact:

Conclusion

On arrive à la fin de ce (trop ?) long billet. Le sujet est vaste et il y a sûrement des améliorations à faire dans la configuration que je viens de vous présenter. Les commentaires ci-dessous sont fait pour partager vos expériences.

Je vous signale également que je regroupe tout les billets sur l’hébergement sur la page suivante.

Catégories
Open-source Planet-libre Systeme

Mon desktop 201107

On commence le mois par le traditionnel desktop qui va accompagner un de mes machines. Focus donc sur mon PC Desktop sous Debian 6 (Squeeze) configuré avec mon script de post install Debian 6. J’en profite pour signaler que j’ai repris le code de ce script est qu’il est maintenant beaucoup plus « user friendly » lors de son exécution. Je vous laisse découvrir…

Voici donc ce que cela donne:

Les principales caractéristiques

Pas de dock ?

Comme vous pouvez le voir j’ai finalement laissé tombé le dock AWN que je n’utilisais finalement pas… Je l’ai fonctionnellement remplacé par des icônes dans la barre de menu:

On y retrouve mes applications favorites: Chromium, Hohot, Filezilla, Terminator, Shutter, Spotify…

Et vous ? Cela donne quoi ?

A vous de nous montrer vos écrans !
En utilisant yFrog puis en partagant l’URL) !

Catégories
Open-source Planet-libre Systeme

Conky Lunatico Rings, un thème Conky bien sympatique

J’utilise Conky pour afficher sur mon desktop diverses informations sur ma machine (CPU, Mémoire, charge réseau…). En surfant sur le site WebUpd8, je suis tombé sur ce billet qui parle d’un nouveau thème qui m’apporte toutes ces informations.

En voici un aperçu:

Pour installer ce thème sur votre système, il faut suivre les étapes suivantes (les étapes 1 et 2 sont seulement nécessaire si conky n’est pas installé sur votre système).

Etape 1: Installation de Conky

sudo apt-get install conky

Etape 2: Création du répertoire de configuration

mkdir ~/.conky

cd ~/.conky

Etape 3: Téléchargement du thème

Si vous avez une interface Wifi sur votre machine:

wget http://webupd8.googlecode.com/files/better_spacing.tar.gz

Sinon:

wget http://webupd8.googlecode.com/files/no_wireless.tar.gz

Etape 4: Installation du thème

Si vous avez une interface Wifi sur votre machine:

tar zxvf better_spacing.tar.gz

Sinon:

tar zxvf no_wireless.tar.gz

Etape 5: Test du thème (remplacer /home/nicolargo par votre répertoire home)

conky -c /home/nicolargo/.conky/conkyrc_lunatico

Etape 6: Automatisation du lancement de Conky avec ce thème au démarrage de la machine

Il faut aller dans le menu Gnome « Réglage système » > « Application au démarrage » puis cliquer sur ajouter puis saisir les données suivantes:

La commande est la suivante (remplacer /home/nicolargo par votre répertoire home):

conky -p 50 -c /home/nicolargo/.conky/conkyrc_lunatico

L’option -p 50 permet de dire à Conky d’attendre 50 secondes avant de se lancer (sous peine de problème d’affichage).

Catégories
Nagios Open-source Planet-libre Reseau

Installation pas à pas d’un serveur de supervision Icinga

Icinga est un des nombreux forks libres de Nagios qui font pas mal parler d’eux en ce moment. Il apporte son lot d’amélioration par rapport « à son père » comme une architecture distribuée, une utilisation possible des bases de données MySQL/PgSQL/Oracle ou encore une interface Web tirant partie des dernières technologies dans le domaine (cliquez ici pour tester la démonstration de l’interface Web Icinga). Pour voir une comparaison pas forcément impartiale entre Icinga et Nagios, vous pouvez consulter ce tableau.

Dans ce billet, nous allons installer et configurer un serveur de supervision Icinga sur un serveur Debian (version Lenny ou supérieure mais la procédure doit être facilement adaptable à Ubuntu Server).

Les caractéristiques du serveur Icinga seront les suivantes:

  • Icinga dernière version disponible
  • Données de surperision stockées dans une base de donnée MySQL
  • Interface Web basée sur Apache
  • Plugins Nagios 1.4.15

Cette procédure a été testé sur une machine virtuelle (VM) sous Debian 6.0 Squeeze fraichement installée.

Préparation de l’installation

Nous allons installer Icinga depuis les sources se trouvant dans le dépôt Git officiel. Nous aurons ainsi la dernière version disponible. Pour cela, il est nécessaire d’installer certaines librairies et outils sur votre système.

Note: Les commandes de ce billet ont été saisies dans un terminal administrateur. Il est également possible d’utiliser la commande sudo <cmd> pour executer certaines taches en tant qu’administrateur ou su – -c « <cmd> ».

On installe les pré-requis (à adapter si vous utilisez Ubuntu Server en lieu et place de Debian):

ETAPE 1

apt-get install apache2 build-essential libgd2-xpm-dev libjpeg62 libjpeg62-dev libpng12-0 libpng12-dev mysql-server mysql-client libdbi0 libdbi0-dev libdbd-mysql snmp libsnmp-dev git

En cas d’erreur (par exemple paquet introuvable), il faudra faire une recherche dans les dépots et remplacer la librairie manquante par la nouvelle version.

On passe ensuite à la création du compte utilisateur et du groupe avec lesquels Icinga sera exécuté.  Je préfère personnellement utiliser le compte nagios (et le groupe nagios) plutôt que icinga comme on le trouve sur la documentation officielle. En effet, cela permet de simplifier une migration éventuelle d’un serveur Nagios vers Icinga.

ETAPE 2

groupadd nagios

useradd -g nagios -c « Nagios User » -s /bin/noshellneeded nagios

passwd nagios

usermod -a -G nagios www-data

Installation depuis les sources (Git)

On passe ensuite à la récupération de la dernière version de Icinga sur le gestionnaire de version Git officiel.

ETAPE 3

cd /usr/src

git clone git://git.icinga.org/icinga-core.git

cd /usr/src/icinga-core/

git submodule init

git submodule update

Puis on compile « la bête » avec les commandes suivantes:

ETAPE 4

./configure –with-icinga-user=nagios –with-icinga-group=nagios –with-nagios-user=nagios –with-nagios-group=nagios –with-command-user=nagios –with-command-group=nagios –prefix=/usr/local/icinga –enable-idoutils –enable-ssl

make all

make fullinstall

Si vous souhaitez protéger l’accès à l’interface Web d’Icinga avec un login/password, il faut également saisir la commande suivante. Par exemple pour définir un compte icingaadmin:

htpasswd -c /usr/local/icinga/etc/htpasswd.users icingaadmin

Installation des plugins Nagios

Comme Icinga est un fork de Nagios, il est possible d’utiliser directement les plugins de Nagios en version 1.4.15 au moment de la rédaction de ce billet.

Pour les installer on saisi:

ETAPE 5

cd /usr/src

wget http://downloads.sourceforge.net/project/nagiosplug/nagiosplug/1.4.15/nagios-plugins-1.4.15.tar.gz

tar zxvf nagios-plugins-1.4.15.tar.gz

cd nagios-plugins-1.4.15

./configure –prefix=/usr/local/icinga –with-cgiurl=/icinga/cgi-bin –with-htmurl=/icinga –with-nagios-user=nagios –with-nagios-group=nagios

make

make install

make install-root

Configuration de IDO

Arrivé à ce point de l’installation, vous devriez avoir un Icinga fonctionnel avec une base de donnée locale sous la forme de fichier texte (c’est le mode par défaut de Nagios). Pour avoir une installation évolutive et permettant d’exploiter les données issues de Nagios sur d’autres applications, il est nécessaire de configurer Icinga pour utiliser une base de donnée (MySQL dans notre exemple) en lieu et place de ces fichiers textes.

Pour cela, nous allons utiliser le module IDO qui fait l’interface entre Icinga et MySQL (ou PgSQL…). Ce module est l’équivalent du module NDO dans l’écosystème Nagios.

Le module IDO est installé par défaut suite à l’utilisation de l’option –enable-idoutils lors de la configuration de la compilation de Icinga. Il suffit donc de le configurer en suivant les indications suivantes:

ETAPE 6

cp /usr/local/icinga/etc/idomod.cfg-sample /usr/local/icinga/etc/idomod.cfg

sed -i -e « s/^use_ssl=0/use_ssl=1/g » /usr/local/icinga/etc/idomod.cfg

sed -i -e « s/^output_type=unixsocket/output_type=tcpsocket/g » /usr/local/icinga/etc/idomod.cfg

sed -i -e « s/^output=\/usr\/local\/icinga\/var\/ido.sock/output=127\.0\.0\.1/g » /usr/local/icinga/etc/idomod.cfg

cp /usr/local/icinga/etc/ido2db.cfg-sample /usr/local/icinga/etc/ido2db.cfg

sed -i -e « s/^use_ssl=0/use_ssl=1/g » /usr/local/icinga/etc/ido2db.cfg

sed -i -e « s/^socket_type=unix/socket_type=tcp/g » /usr/local/icinga/etc/ido2db.cfg

sed -i -e « s/^#broker_module=\/usr\/local\/icinga\/bin\/idomod.o\ config_file=\/usr\/local\/icinga\/etc\/idomod.cfg/broker_module=\/usr\/local\/icinga\/bin\/idomod.o\ config_file=\/usr\/local\/icinga\/etc\/idomod.cfg/g » /usr/local/icinga/etc/icinga.cfg

cat >> /usr/local/icinga/etc/modules/idoutils.cfg < EOF
define module{
module_name ido_mod
path /usr/local/icinga/bin/idomod.o
module_type neb
args config_file=/usr/local/icinga/etc/idomod.cfg
}
EOF

On doit enfin créer la base de donnée MySQL qui va stocker les données d’Icinga.

ETAPE 7

mysql -u root -p

mysql> CREATE DATABASE icinga; GRANT USAGE ON *.* TO ‘icinga’@’localhost’ IDENTIFIED BY ‘icinga’; GRANT SELECT , INSERT , UPDATE , DELETE ON icinga.* TO ‘icinga’@’localhost’;

mysql> FLUSH PRIVILEGES;

mysql> quit

mysql -u root -p icinga < /usr/src/icinga-core/module/idoutils/db/mysql/mysql.sql

Par défault, la base de donnée s’appelle icinga et elle sera accessible seulement en local (localhost) par l’utilisateur MySQL icinga avec le mot de passe icinga. (vous pouvez bien sur changer ces paramètres dans la base de donnée mais il faudra alors veiller à également les modifier dans le fichier ido2db.cfg).

Test de l’installation d’Icinga

On relance les processus pour prendre en compte notre configuration:

ETAPE 8

/etc/init.d/ido2db start

/etc/init.d/icinga start

/etc/init.d/apache2 restart

Puis on automatise le démarrage d’Icinga au prochain boot du serveur:

ETAPE 9

update-rc.d ido2db defaults

update-rc.d icinga defaults

Vous devriez avoir un Icinga fonctionnel ! Pour vérifier ceci, il suffit de pointer un navigateur Web vers l’URL suivante: http://<adresse ip serveur icinga>/icinga (ou http://localhost/icinga)

Migration de votre configuration Nagios (optionnel)

Comme nous l’avons vu au début de ce billet, Icinga est un fork de Nagios. C’est à dire qu’il est tout à fait possible d’utiliser les plugins et les configurations d’un serveur Nagios existant directement dans votre nouveau serveur Icinga.

Je vous conseille dans un premier temps d’archiver la configuration initiale de Icinga pour pouvoir revenir en arrière en cas de problème:

cp -R /usr/local/icinga/etc /usr/local/icinga/etc.default

Ensuite on copie la configuration depuis le répertoire de Nagios. Je pars sur l’hypothèse ou le serveur Nagios est installé sur la même machine que votre serveur Icinga. Si ce n’est pas le cas, il faudra transférer les fichiers depuis votre serveur Nagios.

cp -R /usr/local/nagios/etc/* /usr/local/icinga/etc/

On transforme ensuite la configuration pour l’adapter à Icinga:

mv /usr/local/icinga/etc/nagios.cfg /usr/local/icinga/etc/icinga.cfg

sed -i ‘s/nagios/icinga/g’ /usr/local/icinga/etc/icinga.cfg

sed -i ‘s/nagios/icinga/g’ /usr/local/icinga/etc/cgi.cfg

sed -i ‘s/nagios/icinga/g’ /usr/local/icinga/etc/resource.cfg

cp /usr/local/icinga/etc.default/htpasswd.users /usr/local/icinga/etc/

On devrait ainsi avoir une configuration mélangeant celle faite pour Icinga (notamment en ce qui concerne IDO) et votre ancienne configuration de Nagios.

On vérifie que la configuration ne comporte pas d’erreur:

/usr/local/icinga/bin/icinga -v /usr/local/icinga/etc/icinga.cfg

Si c’est le cas, il suffit de relancer Icinga pour prendre en compte cette configuration:

/etc/init.d/ido2db restart

/etc/init.d/icinga restart

/etc/init.d/apache2 restart

Vous pouvez faire fonctionner les deux services (Nagios & Icinga) en parallèle sans aucun problème. Cela peut être utile pour une phase de migration. Par contre il faut garder à l’esprit que vous aurez deux fois plus de requêtes vers vos serveurs…

Sources:

Catégories
Blog Open-source Planet-libre Systeme

Script de post installation de Debian Desktop

Comme la plupart d’entre vous, j’ai migré mon poste de travail vers la version 11.04 d’Ubuntu et je dois dire que pour une utilisation professionnelle, je trouve l’interface Unity encore perfectible. J’ai donc dans un premier temps testé la toute fraiche version de Fedora 15 avec Gnome 3 et je suis arrivé plus ou moin à la même conclusion.

J’ai donc décidé de « switcher » vers une Debian 6 (le script doit fonctionner sous Squeeze et Sid en adaptant le sources.list). Je voulais obtenir, au niveau du desktop, un résultat se rapprochant de ce que j’avais dans la version 10.10 d’Ubuntu. C’est à dire:

  • Gnome 2 avec un thème GTK Equinox Evolution Dawn + icônes Faenza
  • Conky avec le thème LUA 2011
  • Mes outils pour le blog et de tous les jours: Chromium, Hotot, Terminator, Shutter, Spotify, Dropbox
  • Une liste de dépôts utile pour mon boulot dans le sources.list (attention, le script utilise des dépôts « Sid » officiels et certains autres pouvant proposer des logiciels ou librairies « non libre »)

Comme je l’avais fait pour Ubuntu, j’ai donc développé un script post install pour Debian 6 qui va automatiser une partie de ces actions.

Le script est disponible dans le GITHub suivant (pour les remarques éventuelles, bug…):

https://github.com/nicolargo/debianpostinstall

Avant / Après

Voici un aperçu du bureau avant l’exécution du script…

… puis après (avec ce fond d’écran):

Téléchargement du script

Il faut saisir les commandes suivantes dans un terminal:

cd ~

wget https://github.com/nicolargo/debianpostinstall/raw/master/debian6postinstall.sh

chmod a+x debian6postinstall.sh

Exécuter le script

Le script nécessite les droits d’administrations. Le plus simple est donc de lancer un terminal administrateur (menu Applications > Accessoires > Terminal Administrateur) puis de saisir la commande suivante:

./debian6postinstall.sh

Un certain nombre d’informations va s’afficher sur l’écran. Si une question vous est posée, il suffit de choisir la réponse par défaut.

Si vous avez des remarques sur ce scripts, je suis comme d’habitude preneur !

Catégories
Nagios Open-source Planet-libre Reseau Systeme

Mise à jour du script d’installation de Shinken/Thruk

Shinken, le système libre de supervision système et réseau compatible avec les fichiers de configurations et les plugins Nagios vient de sortir en version 0.6.

Cette nouvelle version apporte un lot impressionnant de nouveautés. Celle qui me semble la plus notable et sur laquelle je reviendrai dans un prochain billet est la découverte automatique de votre réseau. Plus besoin de faire toutes sa configuration à la main ! En effet, le « discovery module » permet d’automatiser cette tache fastidieuse.

Dès sa sortie, j’ai modifié le script d’installation automatique pour qu’il prenne en compte cette nouvelle version 0.6 de Shinken. J’en ai également profité pour modifier la version de Thruk (l’interface Web) pour utiliser la version 0.94.4. Je rappelle que le script a été développé et testé sur un système Debian mais il doit également fonctionner sous Ubuntu moyennant quelques modifications (lignes arch_version et perl_version).

Récupération du script d’auto installation de Shinken/Thruk

Il suffit d’ouvrir un terminal puis de saisir les commandes suivantes:

cd ~

rm -f shinkenautoinstall-debian.sh

wget https://raw.github.com/nicolargo/shinkenautoinstall/master/shinkenautoinstall-debian.sh

chmod a+x shinkenautoinstall-debian.sh

Lancement du script d’auto installation de Shinken/Thruk

Là encore rien de compliqué:

sudo ./shinkenautoinstall-debian.sh

Le script devrait se dérouler tout seul. Il vous demandera juste à un moment donnée de saisir le mot de passe que vous voulez affecter à l’utilisateur Unix shinken.

A la fin de l’installation, le serveur Shinken et l’interface Web Thruk seront lancées automatiquement.

—————————————————-

Installation terminée

—————————————————-

Fichiers de configuration : /etc/shinken

Fichiers de logs : /var/lib/shinken/nagios.log

Script de lancement de Shinken : /etc/init.d/shinken

Script de lancement de Thruk : /etc/init.d/thruk

Interface d’administration : http://@IP:3000

Arrivé à ce stade, vous pouvez éditer la configuration de Shinken (contenue dans le répertoire /etc/shinken) et vous connecter à l’interface Web d’administration (http://@IP:3000 ou @IP est à remplacer par l’adresse IP de votre serveur de supervision).

En bonus

Vous pouvez également utiliser le script pour mettre à jour un système Shiken existant (si il a été installé depuis les sources ou avec mon script). Dans ce cas, le script va sauvegarder votre configuration existante (le contenu du dossier /etc/shinken) dans un fichier .tgz (le nom et l’emplacement du fichier sont données à la fin de la mise à jour).

Il sera ensuite possible de restaurer cette configuration à la main.

Encore plus de Shinken ?

Jean Gabes, le papa de Shinken donnera une conférence sur son fils jeudi 12 mai au salon Solution Linux (à 15h30). Venez nombreux, il annonce une « conf de fou » 🙂 (il va avoir une belle pression…)

Catégories
Nagios Open-source Planet-libre Reseau

Script d’installation automatique de Shinken/Thruk

Dans le petit monde des systèmes de supervision système et réseau, un nouveau venu pointe le bout de sa… lame: Shinken.

Développé de main de maître par Jean Gabes (un des spécialiste Français de Nagios), il en reprend la structure au niveau des fichiers de configuration tout en apportant de plus grandes des performances, le tout distribué sous une licence libre AGPL v3. Basée sur le langage Python, il offre une liste pour le moins  impressionnante de fonctions que vous pouvez consultez sur cette page.

Nous allons dans ce premier billet sur le sujet, détailler un script d’installation automatique du couple Shinken + Thruk (interface Web) sur une distribution GNU/Linux Debian (le script doit également fonctionner sur une distribution Ubuntu moyennant, peut être, quelques modifications, notamment l’édition des lignes arch_version et perl_version).

La version actuelle du script, va installer Shinken version 1.0 (à noter que cette version inclue une UI maison) et Thruk 1.1.7. Pour information, ces deux versions peuvent être utilisées dans un environnement de production.

Récupération du script d’auto installation de Shinken/Thruk

Il suffit d’ouvrir un terminal puis de saisir les commandes suivantes:

cd ~

rm -f shinkenautoinstall-debian.sh

wget –no-check-certificate https://raw.github.com/nicolargo/shinkenautoinstall/master/shinkenautoinstall-debian.sh

chmod a+x shinkenautoinstall-debian.sh

Vous pouvez également récupérer le script / remonter des demandes de nouvelles fonctions ou des bugs sur GitHub.

Lancement du script d’auto installation de Shinken/Thruk

Là encore rien de compliqué:

sudo ./shinkenautoinstall-debian.sh

Le script devrait se dérouler tout seul. Il vous demandera juste à un moment donnée de saisir le mot de passe que vous voulez affecter à l’utilisateur Unix shinken.

A la fin de l’installation, le serveur Shinken et l’interface Web Thruk seront lancées automatiquement.

—————————————————-

Installation terminée

—————————————————-

Fichiers de configuration : /etc/shinken

Fichiers de logs : /var/lib/shinken/nagios.log

Script de lancement de Shinken : /etc/init.d/shinken

Script de lancement de Thruk : /etc/init.d/thruk

Interface d’administration : http://@IP:3000

Arrivé à ce stade, vous pouvez éditer la configuration de Shinken (contenue dans le répertoire /etc/shinken) et vous connecter à l’interface Web d’administration (http://@IP:3000 ou @IP est à remplacer par l’adresse IP de votre serveur de supervision).

Petite astuce complémentaire pour les utilisateurs voulant faire transiter les connections vers l’interface d’administration Web par un serveur Web Nginx. Il suffit d’ajouter la configuration suivante dans un fichier de conf Nginx:

server {

listen 80;

server_name nagios.mondomaine.com;

location / {

proxy_pass http://127.0.0.1:3000;

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

Toute les requêtes entrantes sur le port TCP 80 et le nom de machine  nagios.mondomaine.com (à adapter à votre serveur) seront redirigées vers Nagios (http://127.0.0.1:3000). Cela permet d’éviter d’avoir à ouvrir un port supplémentaire (le 3000) sur votre serveur…

Que fait exactement le script d’auto installation de Shinken/Thruk ?

Pas grand chose, mis à part:

  • installation des pré-requis système
  • création de l’utilisateur shinken et du groupe associé
  • téléchargement des sources de Shinken et de Thruk
  • mise en place des scripts de démarrage de Shinken et Thruk (init.d)
  • vérification de la configuration de Shinken (l’équivalent de l’option -v de Nagios)
  • premier lancement de Shinken
  • premier lancement de Thruk

Si vous testez ce script sur Debian ou sur une autre distribution, je suis preneur de vos retours.

Sources: