Notre appliance Sexilog qui embarque une solution ELK (Elastic Search / Logstash / Kibana) préconfigurée est très utile et simple à mettre en place sur votre environnement vSphere. Dans cet article, je vais essayer de vous en dire un peu plus notamment sur la récupération des logs du vCenter (VCSA) et des ESXi et le fonctionnement de ELK.
Déploiement Appliance Sexilog
Connectez-vous à votre vCenter via le vSphere Client ou en Web Client. Ensuite dans l’onglet “file” (ou “fichier si votre Windows est en FR), choisir “Deploy OVF Template”. Suivez les étapes suivantes qui sont illustrées dans les captures :
- Chemin du fichier OVA
- Nom de VM ainsi que son dossier dans le vCenter
- Le cluster et l’hôte de destination
- Le Datastore où la VM sera stockée
- Format du disque (nous avons laissé en thick mais il est possible de passer en Thin)
- Réseau (qui doit communiquer avec votre vCenter et les vmkernel de managment des ESX)
Première configuration Sexilog
Allumez la nouvelle VM… Après quelques minutes de boot , ouvrez une console dans le vSphere client afin de se logguer dans l’appliance.
Par défaut le mot de passe du compte “root” est le suivant : Sex!Log (attention au clavier QWERTY !).
Une fois authentifié, un script démarre automatiquement, celui ci affiche un dashboard qui permet de faire les premières configurations et de voir l’état général de l’appliance (état des services, stockage, IP). Ce dernier est présent dans le “/root/seximenu/seximenu.sh”.
Chaque option est sélectionnable en entrant son numéro. Nous allons commencer à faire quelques modifications à l’appliance.
Premièrement, on peut changer le clavier en FR afin de passer en “AZERTY” : Appuyez sur 6 et faites directement “y”. Les développeurs de Sexilog ont prédéfini le choix pour nous (vu qu’ils sont français 😀 ).
Plus important maintenant, par défaut l’IP est en DHCP ce qui n’est pas la configuration généralement souhaitée. On attaque alors la configuraiton de l’IP en appyant sur 5.
- On demande en premier si vous voulez activer le DHCP : faites “n”
- Ensuite entrez toutes les informations pour votre appliance (IP / Mask / Gateway / DNS / Hostname)
- L’appliance va ensuite redémarrer afin de prendre en compte les changements
A partir de maintenant, j’utiliserai putty pour accédez à Sexilog car c’est plus pratique pour travailler (notamment avec le copié / coller 🙂 ). Le premier souhait pour ma part est de changer le mot de passe du compte root. Pour ce faire, dans le seximenu appuyez sur 1 pour ouvrir le shell.
On change le mdp root:
1 |
passwd root |
Il peut être également utile de changer le fuseau horaire de l’appliance (plus facile pour l’exploration des logs).
1 2 3 4 5 6 7 8 9 |
## vérifier la date actuelle date ##commandes à utiliser mv /etc/localtime /etc/localtime.old cp /usr/share/zoneinfo/Europe/Paris /etc/localtime ## vérifier que le changement a eu lieu date |
Configuration VCSA
Notre appliance est maintenant prête à recevoir des logs de notre environnement vSphere. Il faut donc se connecter sur notre VCSA afin de transférer tous les logs du vpxd vers Sexilog. Ouvrez un putty et entrez les identifiants root de la VM.
- Naviguez dans le dossier du syslog : “cd /etc/syslog-ng/”
- ouvrir le fichier “syslog-ng.conf” (vim est installé sur Sexilog) : “vi syslog-ng.conf
- Ajoutez à la fin du fichier les lignes ci-dessous (remplacez la valeur IP_Sexilog et choisissez votre version)
- Appuyez sur échap et faites “:wq!” afin de sauvegarder les changements
- Enfin, faites un : “service syslog restart”
http://bossons-fute.fr/?fimerois=site-de-rencontre-ado-android&b0d=77 Attention : Cette méthode concerne uniquement la VCSA 5. La version 6 modifie le chemin des logs, la configuration du syslog se fait via le Web client (j’aborderai ce sujet dans un autre article).
1 2 3 4 5 6 7 8 9 10 |
source vpxd { file("/var/log/vmware/vpx/vpxd.log" follow_freq(1) flags(no-parse)); file("/var/log/vmware/vpx/vpxd-alert.log" follow_freq(1) flags(no-parse)); file("/var/log/vmware/vpx/vws.log" follow_freq(1) flags(no-parse)); file("/var/log/vmware/vpx/vmware-vpxd.log" follow_freq(1) flags(no-parse)); file("/var/log/vmware/vpx/inventoryservice/ds.log" follow_freq(1) flags(no-parse)); }; ##VCSA 5.5 destination sexilog { udp("IP_Sexilog" port(1516)); }; log { source(vpxd); destination(sexilog); }; |
Déploiement ESXi
L’appliance devrait recevoir ses premiers logs VCSA (on vérifiera plus tard comment vérifier cela). Nous pouvons alors ajouter tous nos ESXi pour faire de même. Ouvrez alors le vSphere client (ou Web Client) :
- Sélectionnez votre ESXi
- Ouvrez l’onglet configuration
- Dans “Advanced Settings”, une nouvelle fenêtre s’ouvre
- Entrez dans la section Syslog
- Ajoutez “udp://Ip_Sexilog:514” dans le champ “Syslog.global.logHost”
Vous devez également vous assurer que dans votre Firewall ESXi le port 514 est autorisé en sortie (Configuration > Security Profile > Firewall properties > cocher la case syslog).
Comprendre le traitement des Logs Sexilog
Afin de faire un petit rappel, je vais vous présenter comment un log est reçu et traité par ES et Logstash :
- Le log est écrit dans notre serveur vCenter ou ESXi
- Il est envoyé par le syslog vers notre appliance Sexilog sur un numéro de port précis
- Logstash applique un type (éventuellement un tag) sur le log qui est reçu en fonction du port
- Logstash parse ensuite le log et le découpe pour remplir un ensemble champs spécifiques (ex: hostname, ip, user…) dédiés à ce type de log
- Logstash envoie ensuite l’ensemble de ces valeurs au cluster ES pour qu’il soit stocké
Outre le fait que Sexilog soit une appliance à déployer en quelques minutes, la réelle valeure de cette VM est contenue dans l’interprétation des logs vSphere. Les deux développeurs ont créé de nombreux filtres et input qui permettent de découper les logs et de les exposer sur des Sexiboards (Dashboard) de Kibana.
Une grande partie des fichiers de configuration Logstash sont déjà présent dans l’appliance, et le reste est hébergé sur le GitHub Sexilog (lien). Voici un aperçu des fichiers (avec les captures en dessous) :
- Emplacement : naviguez dans le répertoire “/etc/logstash/conf.d/” de votre appliance (capture 1)
- input : dans l’exemple présent (capture 2), on voit que tous les logs qui sont reçus sur le port 514 en udp seront de type “esxi”
- filter : la capture 3 nous montre le filtre appliquer pour un log venant d’un ESXi. On comprend la difficulté de faire du regex
- output : l’élément est ensuite envoyé vers les outputs (rienmann pour les mails & cluster ES). Dans la capture 4, on voit que l’output vers ES est en “http” vers “localhost” car Logstash et ES sont installés dans la même VM
Vérification du bon fonctionnement
Plusieurs solutions s’offrent à nous pour tester la bonne réception des logs du vCenter et des ESXi. Je vais également vous exposer quels sont les moyens de corriger les différents problèmes en entrant plus en détail dans l’Appliance Sexilog.
Le moyen le plus simple est de se connecter à l’interface Web du Sexilog (fournie par Kibana) et de regarder si les premières lignes sont listées. La capture suivante montre bien que nous recevons des logs depuis quelques minutes de nos équipements.
Si rien ne se passe, vérifiez le trafic le réseau (c’est toujours de la faute du réseau c’est bien connu ! 😀 ) grâce à “tcpdump”. Connectez-vous à votre appliance et entrez les commandes suivantes :
1 2 3 4 5 |
##Installation tcpdump sur Sexilog apt-get install tcpdump ## vérifier le port 514 udp en desitination de Sexilog (remplacez l'IP) tcpdump udp port 514 | grep IP_Sexilog |
La troisième solution consiste à vérifier directement les logs qui sont traités par le cluster Elastic Search (nommé ES par la suite). Pour ce faire, ouvrez votre navigateur à l’adresse suivante : “ rencontres rabat gratuit http://IP_Sexilog/_plugin/head“. Nous voici dans le plugin “Head” de Elastic Search qui a été configuré avec Sexilog. Voici ce que nous dit cette page :
- Aperçu : Cet onglet représente le dashboard d’ES.
- Chaque ligne correspond à un noeud du cluster ES. “Fantomex” est un nom donné à notre noeud (seul avec Sexilog)
- Chaque colonne représente un index présent dans ES. Les index sont des ensembles d’éléments stockés dans le cluster ES. Ainsi, “Kibana-int” intègre tous les Dashboards de Sexilog. Les autres index commençant par “logstash.*” (1 par jour) contiennent l’intégralité des logs qui ont été envoyés par Logstash
- Index : Une overview des index
- Recherche Structurée & Autres requêtes : Pour rechercher des logs, il est possible de faire des requêtes avancées dans le cluster ES grâce à ces deux onglets (non traités ici)
- Navigateur : Voici l’onglet le plus utile afin de vérifier que les logs sont reçus et correctement interprétés
- On peut filtrer sa recherche par Index / par type / par champ
- Si aucune données n’est reçu dans ce tableau, les logs ne parviennent pas jusqu’à Elastic Search
On remarque dans notre carré rouge (capture suivante) que le type ESXi est bien présent alors que le type du vcenter est manquant. Pourquoi ma VCSA est mal reconnue ? En fait, les fichiers Logstash ne sont pas présent dans Sexilog pour la VCSA et il faut les ajouter manuellement 🙂
Rendez-vous dans notre Sexilog dans le dossier suivant : “/etc/logstash/conf.d/“. En listant les fichiers du dossier (“ls -la“), on remarque qu’il n’y a tout simplement pas d’input pour la VCSA. On va donc créer les fichiers qui sont disponibles sur le GitHub Sexilog ( Zaprešić lien) :
- Créer les fichiers nécessaires (touch input-syslog-vcsa.conf & touch filter-syslog-vcsa.conf)
- Editer les deux fichiers (vi input-syslog-vcsa.conf & vi filter-syslog-vcsa.conf)
- Copier et coller le contenu dans vos fichier
- Sauvegarder (:wq!)
- Redémarrer les services Sexilog pour prendre en compte les changements
Enfin, ouvrez à nouveau votre page web Kibana et votre Interface ES (_plugin/head) et vous verrez qu’un nouveau type fait son apparition dans notre tableau : vcsa. Votre Sexilog reçoit et interprète correctement les logs provenant de vos ESXi et de votre VCSA.
Do you happen to know if this works with vsphere 6? Followed the steps and doesn’t seem to create the vcsa “type” in Kibana
Hello Mike,
You need to check the gitbuh from sexilog to have latest conf files : https://github.com/sexibytes/sexilog/tree/master/logstash/conf.d
The vcsa6 conf file will tag like this : type => vcsa6 (you have to change you vcsa remote syslog to port 1516 (not 1514) => destination sexilog { udp(“IP_Sexilog” port(1516)))
Then your data will be ingested in the right type 🙂