Catégories
Open-source Planet-libre Web

Remplacer Google Analytics par Piwik

Pour rebondir sur le billet des administrateurs du Planet Libre, voici une rapide, mais néanmoins efficace, procédure pour remplacer le propriétaire Google Analytic (bouh !) par le libre Piwik (houra !).

Piwik est un service Web permettant d’afficher un tas de statistique sur qui fait quoi sur votre site / combien de temps, combien de fois… Bref un vrai big brother perso !

Cette procédure est honteusement inspirée de la procédure officielle et adaptée à l’analyse de mon blog sous WordPress.

On commence par préparer le terrain…

Il vous faut:

  • un serveur Web (Apache ou autre NGinx)
  • un base de donnée (MySQL)
  • un accès FTP ou mieux: SSH

Nous partons sur l’hypothèse ou Piwik est installé sur la même machine que le site à superviser. Si ce n’est pas le cas, le seul changement à faire sera dans la configuration de la base de donnée en remplaçant localhost par % (qui est un alias pour tout les sites…).

On créé la base de donnée MySQL nommé piwik, accessible depuis la machine locale (localhost) et seulement par celle-ci à partir d’un utilisateur MySQL nommé piwik (très original je sais). Voici le déroulement de ces actions à partir de PHPMyAdmin:

Installation de Piwik

On se connecte sur notre serveur en SSH, puis on va dans l’arborescence on se trouve notre serveur Web (par exemple /var/www):

cd /var/www

puis on saisit les commandes suivantes:

wget http://piwik.org/latest.zip

unzip latest.zip

rm latest.zip How\ to\ install\ Piwik.html

Si votre serveur http://monbeausite.com/ pointe sur /var/www alors il suffit de saisir l’URL http://monbeausite.com/piwik/ pour continuer l’installation via l’interface Web.

Celle-ci va se dérouler en 9 étapes:

On commence par vérifier les pré-requis systèmes de votre serveur:

Perso je suis tombé sur le message d’erreur suivant que j’ai corrigé en saisissant la commande donnée:

chmod a+w /var/www/piwik/config

On passe ensuite à la configuration de la base de donnée. Il faut saisir les paramètres par rapport à la configuration faite dans le premier chapitre. Dans mon cas, j’ai du remplacer le 127.0.0.1 par localhost (pas trop compris pourquoi…).

Ensuite on entre le nom, le mot de passe et le mail de l’administrateur (c’est avec ce compte que l’on pourra se connecter à l’interface Web). Je vous conseille de donner un compte/mot de passe différent que celui affecté à la base de donnée…

On passe ensuite au paramétrage du site que l’on souhaite analyser:

Piwik va automatiquement générer le code Javascript à insérer dans vos pages HTML:

Dans le cas d’un blog sous WordPress, il suffit d’ajouter le code dans le fichier footer.php de votre thème (juste avant la balise /body):

Il ne reste plus qu’a attendre un peu que les visites sur votre site soit prise en compte dans la base de donnée Piwik puis de se rendre sur l’URL http://monbeausite.com/piwik pour voir vos statistiques:

Optimisation de Piwik

Si votre site génère plus de 500 visites par jour, il est conseillé de suivre cette procédure pour optimiser le traitement des données.

Dernière étape et non des moindres: supprimer le code JavaScript de Google Analytics 🙂

Et voilà le travail !

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
Musique Open-source Web

Gérer sa bibliothèque musicale en 2011

L’informatique en général et Internet en particulier a révolutionné la manière de gérer sa bibliothèque musicale. Sans remonter aux temps des disques vinyles et des K7 que l’on rembobinaient avec des stylos Bic, le numérique a permis de faciliter la vie de l’amateur de musique.

Au commencement vint le CD, une qualité professionnelle accessible au commun des mortel. Je me rappelle encore, non sans émoi, de la première écoute du CD de Jean-Michel Jarre (on ne se moque pas j’étais jeune à l’époque) sur la chaine HIFI flambant neuve de mon père.

Rapidement, quand les ordinateurs sont devenus assez puissant, nous avons commencés (nous les geeks et pas encore la ménagère de moins de 50 ans) à ripper nos chers ($$$) albums. Il fallait à l’époque être patient et pas trop regardant sur la qualité: il était impensable, vu le prix et la capacité des disques durs, de ne pas utiliser des codes compressés (ouha tu encodes en MP3 VBR à 96Kbps, le fou !). Il fallait ensuite connecter sa chaine HIFI avec son PC en perdant encore en qualité. Bref le résultat était loin de la source (CD).

Le coût du stockage, la puissance des ordinateurs et il faut le souligner la facilité d’utilisation de logiciels comme iTunes (ou je sais le mal absolu) ont facilité le passage en douceur du support physique (le CD encore et toujours lui) vers de bons vieux fichiers (MP3 ou AAC) stockés sur votre disque dur. C’était la belle époque des compilations en tout genre et il faut le souligner du piratage à outrance (même de la part de la ménagère de moins de 50 ans). Rien de plus facile que d’insérer un CD (pas forcement le sien) dans son lecteur, d’appuyer sur le bouton importer puis de remettre ce même CD dans sa boî”te.

C’est à cette période que les ventes des « lecteurs MP3 » portables explosent. Il était alors possible d’emporter la totalité (ou une grande partie) de sa bibliothèque musicale lors de ses déplacements. Le rêve ultime pour l’amateur de musique. Le CD meurt, c’est même à se demander si le vinyle ne lui survivra pas…

Pour éviter « l’hémorragie du piratage » (c’est leurs mots pas les miens), les majors se sont donc tournés, à la vitesse d’un éléphant centenaire, vers d’autres modèles de ventes basées sur la musique dé-matérialisée. Plus besoin d’acheter les albums sur un support physique. On achète directement des fichiers qui sont téléchargés directement sur votre disque dur à travers Internet. La révolution est en marche. Le DRM meurt. Apple touche le pactole avec son iTunes Store.

En parallèle, un autre modèle voit alors le jour. Pourquoi télécharger alors que les fichiers existent sur un serveur permettant de les diffuser en streaming (c’est-à-dire un téléchargement au moment de l’écoute et de manière transparent) ? C’est l’ère des Deezer et Spotify.

Les « lecteurs MP3 » sont remplacés par les « smartphones » et on utilise sa liaison 3G pour accéder en streaming à sa musique.

Que nous réserve l’avenir ? Difficile de le prévoir vu à la vitesse dont les choses évoluent. De nouveaux modèles essayent de s’imposer (iCloud Music par exemple) mais qui restent, pour l’instant, des déclinaisons des deux modèles précédents.

Pour en revenir au sujet de ce billet, je vais maintenant vous dire comment je gère ma bibliothèque musicale à la date d’aujourd’hui (en juin 2011). Mes CD ont été vendus ou classés dans deux beaux EasyCase. Ma bibliothèque iTunes comporte un RIP d’assez bonne qualité (MP3 384Kbps ou AAC) de ces CDs. Je l’utilise tous les jours depuis de mon iPod 160 Go pour écouter de la musique chez moi à travers mon installation HIFI. En parallèle, j’utilise le service Premium de Spotify (j’ai un abonnement depuis plus d’un an). Au début, je n’utilisais Spotify que pour écouter des nouveautés, mais il remplace de plus en plus mon lecteur iTunes (surtout depuis que Spotify permet d’importer automatiquement sa bibliothèque iTunes sur son compte et que j’ai pu retrouver mes compilations). Sur mon smarthphone, c’est également Spotify que j’utilise le plus sauf quand je suis à l’étranger ou dans une zone non 3G.

Pourquoi Spotify et pas Deezer ? Je pense que les deux services sont de qualité mais j’ai quelques points qui me semblent à l’avantage de Spotify:

  • je n’aime pas être dépendant d’une liaison Internet pour écouter ma musique (Spotify propose un mode d’écoute off-line ou les fichiers sont téléchargés sur votre machines, PC ou smartphone)
  • la bibliothèque proposé par Spotify me semble plus complète (du moins pour mes goûts musicaux)
  • le client Spotify Linux natif fonctionne très bien et évolue presque au même rythme que les clients Windows et Mac OS
  • la fonction d’importation de sa bibliothèques iTunes est vraiment un plus

Et vous ? Vous en êtes ou avec la fameuse dématérialisation de la musique ?

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

WordPress et le trop plein de fichiers sess_*

Hier, plusieurs lecteurs (merci à eux :)) m’ont signalés que le message suivant s’affichait en haut de mon blog (sous WordPress 3.1.3):

Warning: session_start() [function.session-start]: open(/var/lib/php5/sess_7cad11067bb359c89ee47b9e692e47bf, O_RDWR) failed: No space left on device (28) in/www/wp-content/plugins/twitconnect/twitconnect.php on line 95

Ce message n’apparaissait que pour les lecteurs non authentifiés et uniquement sur certaines pages. Dans une premier temps j’ai donc décidé de désactivé le plugin incriminé dans le message d’erreur (TwitConnect qui permet de s’authentifier sur le blog avec son compte Twitter). J’ai ensuite regarder l’espace disque de mon serveur sans voir de problème. C’est en allant regarder les fichiers dans le répertoire /var/lib/php5 que j’ai commencer à comprendre pourquoi le plugin en question n’arrivait plus à générer de fichiers de sessions PHP (les fameux fichier sess_*). Il y avait en effet plus de 200.000 fichiers de ce type dans ce répertoire. On arrivait donc en limite maximale du nombre de fichiers par sous répertoire sous GNU/Linux en ext3.

Le problème vient sûrement d’un des plugins que j’utilise qui doit créer ces fichiers de sessions sans jamais les purger. Je suspecte (sans avoi de confirmation) le plugin TwitConnect et j’ai donc ouvert un incident sur le forum officiel du plugin.

Pour ne plus avoir de mauvaises surprises dans le futur, j’ai donc mis en place dans la crontab root journalière une commande qui va effacer les fichiers de sessions de plus de deux jours:

find /var/lib/php5/ -type f -atime +2 -name ‘sess_*’ -exec rm -f {} \;

Si vous utilisez également le plugin WordPress TwitConnect, je vous conseille donc de jeter un oeil sur ce répertoire et le nombre de fichiers sess_*.

Pour obtenir le nombre de fichier dans ce répertoire il suffit de saisir la commande suivante:

sudo ls -l /var/lib/php5/ | wc -l

En journée (après la purge de la nuit) je tourne autour des 45.000 fichiers (environ 25 nouveaux fichiers par minutes, mais cela dépend du nombre de visites non authentifiées sur votre blog…).

Catégories
Open-source Planet-libre Systeme

Mon desktop 201106

Comme chaque mois, je vous  présente un de mes bureaux. Ce mois ci, zoom sur mon PC portable perso sous Ubuntu 11.04 (le PC portable pro étant retourné sous Debian 6). Je peaufine ici la customisation de ce bureau sous Unity en y ajoutant notamment Conky pour afficher des informations systèmes directement sur le fond d’écran.

Voici donc ce que cela donne:

Les principales caractéristiques

Conky

Pour installer le thème Conky Orange, il faut bien sur dans un premier temps installer Conky sur votre système (en cliquant directement ici si vous êtes sous Ubuntu) ou en suivant la documentation Ubuntu-fr.

Ensuite, il suffit de saisir les commande suivante dans un terminal:

wget http://gnome-look.org/CONTENT/content-files/137503-conky_orange.zip

mkdir ~/.conky/

cp conky_orange/* ~/.conky/

mv ~/.conkyrc ~/.conkyrc.old

ln -s ~/.conky/conkyrc_orange ~/.conkyrc

Le dock Unity

La configuration d’Unity avait déjà été détaillée dans un dernier billet. Dans le Dock, je configure les applications suivantes pour y être en permanence (bouton droit / conserver dans le dock):

  • Dossier personnel (accès direct à mon $HOME)
  • Chromium (Navigateur Web)
  • Terminator (client terminal)
  • Filezilla (client FTP / SFTP)
  • Hotot (client Twitter / Identi.ca)
  • Pidgin (messagerie)
  • Shutter (capture d’écran)
  • Spotify (ma musique !!!)

Et vous ? Cela donne quoi ?

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

Catégories
Blog Open-source

Le panier du marché libre #10

Dixième édition du panier de liens plus ou moins intéressant que j’ai glané sur la toile.

En bonus la recette des artichauts à la barigoule, perso j’y ajoute un citron confit pendant la cuisson…

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: