Filebeat c’est quoi ?
Filebeat est un outil qui permet d’envoyer des données de logs du système vers Kibana.
Kibana accède ensuite aux logs et nous permet d’exploiter ces informations pour en faire des tableaux de bord, des statistiques, des graphiques, géolocaliser les adresses IP sur une map monde ainsi que pour faire du tri selon les alertes.
Je vais faire une petite démonstration avec un module qui récupère les logs système linux puis avec un module qui récupère les logs d’un serveur Apache.
Si tu veux reproduire ce tuto, tu auras besoin d’un serveur Elasticsearch, un serveur Kibana ainsi qu’un client linux quelconque.
Pour installer ces 2 serveurs :
Tuto installation d’un serveur ElasticSearch.
Tuto installation d’un serveur Kibana.
Tout d’abord, avec notre navigateur on se place sur « http://localhost:5601/s/nom_du_space/app/home#/tutorial_directory » ou en allant sur Kibana, Home puis Add Data. Cette page référencie tous les modules disponibles :
Filebeat logs Systèmes Linux
Pour cette partie nous nous intéresserons au modules Systems logs, qui récupère les logs systèmes des OS Unix/Linux :
On clique dessus et on atterri sur la page qui explique comment installer le service sur notre serveur :
Installer Filebeat Systems logs sur Debian/Ubuntu :
- On Télécharge et installe le service :
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.1-amd64.deb
sudo dpkg -i filebeat-7.10.1-amd64.deb
2. Puis on édite le fichier /etc/filebeat/filebeat.yml pour spécifier les informations de connexion vers nos serveurs elasticsearch et kibana.
output.elasticsearch:
hosts: ["<es_url>"]
username: "elastic" #(si pas de login/mot de passe ne rien mettre)
password: "<password>"
setup.kibana:
host: "<kibana_url>"
space.id: "space-de-test"
3. On active le module système (C’est lui qui permet d’envoyer les logs systèmes) :
sudo filebeat modules enable system
4. Et enfin on active Filebeat :
sudo filebeat setup
sudo service filebeat start
systemctl enable filebeat # si on souhaite activer filebeat par défaut au démarrage
Installer Filebeat Systems logs sur Centos :
- On télécharge et installe notre service
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.1-x86_64.rpm
sudo rpm -vi filebeat-7.10.1-x86_64.rpm
2. On modifie le fichier /etc/filebeat/filebeat.yml avec nos informations de connexion vers nos serveurs elasticsearch et kibana.
output.elasticsearch:
hosts: ["<es_url>"]
username: "elastic"
password: "<password>"
setup.kibana:
host: "<kibana_url>"
space.id: "space-de-test"
3. On active le module :
sudo filebeat modules enable system
4. Puis on lance le service
sudo filebeat setup
sudo service filebeat start
systemctl enable filebeat # si on souhaite activer filebeat par défaut au démarrage
Exploiter les logs systèmes Filebeat avec Kibana
Une fois installé et le service démarré, on peut ensuite exploiter ces données directement en cliquant sur le bouton check data :
Kibana affiche alors un tableau de bord qui utilises les logs systèmes de notre serveur :
On n’a pas mal de fonctionnalités sur notre tableau de bord, premièrement une barre de recherche en haut pour trier nos données.
Par exemple on peut n’afficher que les logs d’une machine en particulier (si on en a plusieurs) en appliquant « agent.hostname = hostname_de_la_machine« .
On peut également sélectionner une date/heure de début et de fin :
On a aussi la possibilité de n’afficher que les logs liés aux commande sudo, aux logs SSH ou à tout ce qui concerne les utilisateurs.
Un graphique qui montre l’utilisation des données dans le temps et des statistiques sur les différents logs de ma machine, ici j’ai des logs kernel, systemd, network et même prometheus ( puisque c’est un serveur prometheus).
Et enfin dans la partie basse du tableau de bord on a nos logs sous forme de trame, que l’on peut dérouler pour afficher en détail chaque champ avec son résultat.
Filebeat logs Apache
Pour les logs Apache on utilise le module Apache logs:
Installer Filebeat Apache logs sur Debian/Ubuntu :
- Téléchargement et installation :
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.1-amd64.deb
sudo dpkg -i filebeat-7.10.1-amd64.deb
2. Dans le fichier /etc/filebeat/filebeat.yml :
output.elasticsearch:
hosts: ["<es_url>"]
username: "elastic"
password: "<password>"
setup.kibana:
host: "<kibana_url>"
space.id: "space-de-test"
3. Puis on active le module Apache :
sudo filebeat modules enable apache
4. Et on lance notre service qui va upload nos data vers notre elasticsearch et Kibana :
sudo filebeat setup
sudo service filebeat start
Installer Filebeat Apache logs sur Centos :
- On tape :
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.1-x86_64.rpm
sudo rpm -vi filebeat-7.10.1-x86_64.rpm
2. On modifie /etc/filebeat/filebeat.yml :
output.elasticsearch:
hosts: ["<es_url>"]
username: "elastic"
password: "<password>"
setup.kibana:
host: "<kibana_url>"
space.id: "space-de-test"
3. On active le module Apache :
sudo filebeat modules enable apache
4. On démarre le service :
sudo filebeat setup
sudo service filebeat start
Exploiter les logs Apache Filebeat avec Kibana
Encore une fois on clique sur le bouton check data :
Kibana affiche cette fois un tableau de bord spécialement conçu pour les logs Apache :
Sur notre dashboard, nous avons :
- une map monde qui géolocalise la provenance des requêtes selon les adresses IP,
- un graphe du taux de requête sur une date défini,
- des graphiques circulaire avec des statistiques sur les URL et le code statut des requêtes
- et un graphique sur les différents user-agent
Puis en dessous comme pour le tableau de bord des logs système, on a les trames des logs que l’on peut dérouler pour avoir plus d’informations.
Comme pour les logs système on peut trier nos données par date, par machine, user-agent, ip ou n’importe quels champs.
Les tableaux de bord sont personnalisable, on peut ajouter, supprimer et réorganiser les fonctions des dashboards à notre guise.
Voici la documentation officiel, si tu veux en savoir plus sur cet outil.