Découverte de la gestion de log avec ELK

Dans le cadre de mon stage, je m’intéresse actuellement au solution de monitoring et j’ai donc eu l’occasion de tester le triplet Elasticsearch Logstash Kibana connu sous l’abréviation ELK. Logstash permet d’agréger simplement des logs provenant de différentes sources, Elasticsearch s’occupe de les stocker et de les rendre disponibles et enfin Kibana les affiche sur un dashboard hautement personnalisable. Les instructions qui suivent m’ont donc permis d’avoir un rapide aperçu du fonctionnement de la solution ELK en local et dans un cas très simple de gestion de logs système.

Récupération des logiciels

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.0.1.tar.gz
wget https://download.elasticsearch.org/logstash/logstash/logstash-1.3.3-flatjar.jar
wget https://download.elasticsearch.org/kibana/kibana/kibana-3.0.0milestone5.tar.gz

Extraction

tar xvf elasticsearch-1.0.1.tar.gz
tar xvf kibana-3.0.0milestone5.tar.gz

Elasticsearch

cd elasticsearch-1.0.1/

La configuration elasticsearch.yml se situe dans config/. Il n’est pas nécessaire d’y toucher pour un test en local, on pourrait toutefois modifier les paramètres cluster.name et node.name pour personnaliser l’installation.

Démarrer Elasticsearch:

./bin/elasticsearch

Logstash

Création d’un fichier de configuration logstash.conf:

touch logstash.conf

Nous allons lire les fichiers de log du système, de ce fait, il pourrait être nécessaire de lancer Logstash en root pour que celui-ci puisse lire les fichiers de logs. Cette solution n’est à utiliser que pendant la phase de test.

Contenu du fichier:

input {
    file {
        type => "linux-syslog"
        path => [ "/var/log/*.log", "/var/log/messages", "/var/log/syslog" ]
    }
}
output {
    stdout { }
    elasticsearch_http {
        host => "127.0.0.1"
    }
}

Documentation pour le paramètre elasticsearch_http.

Démarrer Logstash:

sudo java -jar logstash-1.3.3-flatjar.jar agent -f logstash.conf

Les nouveaux logs devraient donc maintenant être récupérés par Logstash et stockés par Elasticsearch. Nous donc pouvoir les visualiser avec Kibana.

Kibana

cd kibana-3.0.0milestone5/

Éditer le fichier config.js et changer la ligne:

elasticsearch: "http://"+window.location.hostname+":9200",

en

elasticsearch: "http://127.0.0.1:9200",

Cette modification nous permet d’ouvrir le fichier index.html directement dans notre navigateur pour accéder à Kibana sans avoir besoin de mettre en place un serveur comme Apache pour servir les fichiers.

Résultat

KibanaL’ajout d’un mécanisme d’authentification pour l’accès à Kibana peut être réalisé simplement en utilisant le projet fangli/kibana-authentication-proxy.

Installation de Wallabag

Après avoir plusieurs fois entendu parler de wallabag, je me décide donc à l’installer pour le tester, m’en servir et pourquoi pas alléger mes marque-pages Firefox. Voici donc les différentes étapes et commandes qui m’ont permis de mener à bien l’installation. J’espère ne pas en avoir oublier lors de l’écriture de cet article.

Récupération de la dernière version de wallabag:

wget http://wllbg.org/latest

Décompression:

unzip latest

Récupération de composer et exécution dans le dossier de wallabag:

curl -s http://getcomposer.org/installer | php
php composer.phar install

Création de la base de donnée:

mysql -p -u root

mysql> CREATE DATABASE wallabag;

mysql> GRANT ALL PRIVILEGES ON `wallabag`.* TO 'wallabag'@'localhost' IDENTIFIED BY 'VotreMotdePasse';

mysql> exit

Après avoir créer notre base de données wallabag, injection du script de configuration MySQL:

mysql -p -u root wallabag < install/mysql.sql

Renommer le fichier de configuration:

mv config.inc.php.new config.inc.php

Édition de la configuration:

nano inc/poche/config.inc.php

On modifiera en particulier les lignes suivantes:

define ('SALT', 'Une chaîne de caractères fortes de votre composition');
define ('STORAGE', 'mysql');

define ('STORAGE_SERVER', 'localhost');
define ('STORAGE_DB', 'wallabag');
define ('STORAGE_USER', 'wallabag');
define ('STORAGE_PASSWORD', 'VotreMotdePasse');

Permission nécessaire sur les dossiers

chmod 777 -R assets/ cache/ db/

Fin de l’installation:

rm -rf install/

Et en cas de besoin:

chown -R www-data:www-data wallabag/

Et enfin, la configuration d’Apache:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  ServerName wallabag.domain.org
  DocumentRoot /var/www/wallabag
  <Directory />
    Options FollowSymLinks
    AllowOverride None
  </Directory>
  <Directory /var/www/wallabag>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from ALL
  </Directory>
</VirtualHost>

Si tout c’est bien passé, il suffit de se rendre à l’adresse wallabag.domain.org pour arriver sur la page de création du compte utilisateur.

GitLab

La migration de nos différents services s’effectue progressivement. Après WordPress, c’est au tour de notre système de gestion de code de changer de serveur et d’évoluer par la même occasion. Jusqu’à présent, nous utilisions Gitolite. Celui-ci fonctionne plutôt bien, une fois qu’on a trouvé les bonnes configurations. Pour une utilisation personnelle sous GNU/Linux, aucun problème, mais pour inviter d’autres contributeurs ce n’est pas toujours très simple. Entre la génération des clefs, la mise en place des bons fichiers de configuration sous Windows et l’obligation de gérer à la main les autorisations et créations de dépôts, j’ai décidé de passer à quelque chose de plus conséquent: Gitlab.

Les avantages sont nombreux: interface facilitant la gestion des dépôts et accessible à tous les utilisateurs, gestion fine du nombre de dépôts maximum pour chaque utilisateur, la création de dépôts n’est pas limité à l’administrateur et surtout, la possibilité de cloner un dépôt directement via http. Autant d’avantages qui m’ont incité à tenter l’installation de la bête.

La mise en place se déroule sans réels difficultés grâce à un guide d’installation pas à pas. Chaque étape est décrite en détails et toutes les commandes sont commentées, bref la navigation dans ce guide s’effectue sans écueils.

Le guide se termine par la configuration de Nginx pour permettre aux utilisateurs d’accéder au service. Si comme moi, vous utilisez plutôt Apache, pas de panique, des fichiers de configuration pour Apache sont également disponible. Pas grand chose à dire sur ce point là, à part  de ne pas oublier d’activer les modules listés au début des fichiers via a2enmod.

La dernière étape, consiste à faire fonctionner la connexion sécurisée à tous les niveaux. Quelques recherches reste à faire de ce côté là pour s’assurer que git accepte mon certificat auto-signé. Des paramètres à modifier dans gitlab-shell entre autre.

Nous sommes maintenant près pour l’étape finale, pusher du code et mettre à disposition notre gitlab pour les amis, connaissances et autres!

Changement

Bonjour (fidèles) lecteurs et robots de l’internet!

Comme l’annonce le titre de ce post, il y a eu du changement récemment. En effet, celui-ci a pu passer inaperçu mais l’utilisateur averti aura remarqué un changement d’adresse IP. Unicoda change de serveur et la migration vient d’être terminée avec succès. Notre petit site dispose maintenant d’un serveur kimsufi d’ovh.

Ce changement de serveur va nous permettre de continuer nos expérimentations diverses et variées. Il reste quelques services utiles à migrer depuis l’ancien serveur, comme la synchronisation de favoris Firefox et un Etherpad. J’essayerai de documenter un minimum l’installation des différents services à venir pour faciliter une installation ou une réinstallation éventuelle.

En résumé, plein de choses à faire pour que tout soit opérationnel et bien sûr, des projets plein la tête: streaming, traductions… A très bientôt!

Trying to install: Ghost

Ghost has been made public today in the afternoon. I was waiting for it so I tried to install it from the source code a few hours later. I followed the step listed in the file CONTRIBUTING.md. First, I had to install Ruby on my system, put it in the PATH and install two gems.

Installing Ruby:

PATH=$PATH:/home/user/.gem/ruby/2.0/bin
export PATH
source ~/.bash_profile

Installing the gems:

gem install sass
gem install bourbon

Then, I followed the instructions given by Ghost developers. I hadn’t any problems with the installation process, since it’s well documented.

Time for testing. I created a new user and a new article. I really like the markdown editor used to write posts. The interface looks great too. In my opinion, Ghost is very promising, many things are still missing, but everything should be there in version 1.0. So it’s highly possible that I will quit WordPress for Ghost.