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.

Arduino IDE – Port série indisponible

Petit aide-mémoire en cas d’indisponibilité du port série dans l’IDE Arduino et constaté sous Arch Linux.

Le problème provient d’un manque de permission sur le répertoire /run/lock pour l’IDE.

# chown root:wheel /run/lock
# chmod 775 /run/lock

Autre possibilité, démarrer l’IDE en root.

Source