Pandora: Documentation fr: Supervision et collecte journaux
Volver a Indice de Documentacion Pandora FMS
Contents
1 Collectes de logs
1.1 Introduction
Jusqu'à présent Pandora FMS n'avait pas de solution à ce problème, mais avec la version 5.0, Pandora FMS Enterprise offre une solution pour gérer des centaines de mégaoctets de données par jour. Cette solution permet de réutiliser les mêmes agents de surveillance pour la collecte spécifique des données de logs, en utilisant une syntaxe très similaire à celle utilisée actuellement pour la surveillance des logs.
La surveillance des logs dans Pandora FMS est abordée de deux façons différentes :
- Basée sur des modules : représente les logs dans Pandora FMS comme des moniteurs asynchrones, pouvant associer des alertes aux entrées détectées qui remplissent une série de conditions préconfigurées par l'utilisateur. La représentation modulaire des logs nous permet de :
- Créer des modules qui comptent les occurrences d'une expression régulière dans un journal.
- Obtenir les lignes et le contexte des messages du journal
- Basé sur la visualisation combinée : permet à l'utilisateur de visualiser dans une seule console toutes les informations de logs d'origines multiples qu'il souhaite capturer, en organisant les informations de manière séquentielle en utilisant la marque du temps dans lequel les logs ont été traités.
A partir de la version 7.0NG 712, Pandora FMS intègre LogStash + ElasticSearch pour stocker les informations des logs, ce qui implique une amélioration substantielle des performances.
>br
1.2 Comment ça fonctionne ?
Le processus est simple :
- Les logs analysés par les agents (eventlog ou fichiers texte), sont transmis au serveur Pandora FMS, sous forme "littérale" (RAW) à l'intérieur du rapport d'agent XML :
- Le serveur Pandora FMS (DataServer) reçoit l'agent XML, qui contient à la fois les informations de surveillance et de logs.
- Lorsque le DataServer traite les données XML, il identifie les informations des logs, en sauvegardant dans la base de données principale les références de l'agent qui a rapporté et l'origine du log, et en envoyant automatiquement les informations à LogStash pour son stockage.
- LogStash stocke les informations dans ElasticSearch.
- Enfin, nous pouvons consulter les informations des logs via la visionneuse de la console Pandora FMS. Elle effectuera les requêtes contre le serveur ElasticSearch configuré.
1.3 Configuration
1.3.1 Configuration du serveur
Le nouveau système de stockage des logs, basé sur ElasticSearch + LogStash nécessite la configuration des différents composants.
1.3.1.1 Pré requis pour le serveur
Il est possible de distribuer chaque composant (Pandora FMS Server, ElasticSearch, LogStash) dans des serveurs indépendants.
Si vous décidez d'héberger ElasticSearch et LogStash sur le même serveur, nous vous recommandons :
- Centos 7
- Au moins 4 Go de RAM
- Au moins 2 CPU cores
- Au moins 20 Go d'espace disque pour le système
- Au moins 50 Go d'espace disque pour le point de montage /var, monté en LVM
- Connectivité avec le port 10516/TCP du serveur Pandora FMS vers LogStash et 9200/TCP de la console Pandora FMS vers ElasticSearch.
Si vous avez une machine qui héberge une base de données historique, vous pouvez l'utiliser pour installer ElasticSearch et LogStash. Dans ce cas, les exigences minimales de la machine doivent être ajustées au nombre de données que nous allons traiter dans les deux cas. Les exigences minimales sont :
- ? Hundred and Seven
- Au moins 4 Go de RAM
- Au moins 4 cœurs CPU
- Au moins 20 Go d'espace disque pour le système
- Au moins 50 Go d'espace disque pour le point de montage /var, monté en LVM
1.3.1.2 Installation et configuration de ElasticSearch
Avant de commencer l'installation de ces composants, il est nécessaire d'installer Java sur la machine :
yum install java
Une fois Java installé, installez ElasticSearch à partir du RPM téléchargeable du site Web du projet ElasticSearch : https://www.elastic.co/downloads/elasticsearch
Une fois le paquet téléchargé, nous l'installons en exécutant :
rpm -i elasticsearch-X.X.X.X-x86_64.rpm
Configurez le service :
Nous configurerons les options réseau et, éventuellement, les emplacements des données (et les logs d'ElasticSearch lui-même) dans le fichier de configuration situé dans /etc/elasticsearch/elasticsearch.yml'.
# ---------------------------------- Network ----------------------------------- # Set the bind address to a specific IP (IPv4 or IPv6): network.host: 0.0.0.0 # Set a custom port for HTTP: http.port: 9200 # ----------------------------------- Paths ------------------------------------ # Path to directory where to store the data (separate multiple locations by comma): path.data: /var/lib/elastic # Path to log files: path.logs: /var/log/elastic
Dans la section network.host, vous devez entrer l'adresse IP du serveur.
Les options de ressources assignées à ElasticSearch doivent être déterminées en ajustant les paramètres disponibles dans le fichier de configuration situé dans /etc/elasticsearch/jvm.options.
# Xms represents the initial size of total heap space # Xmx represents the maximum size of total heap space -Xms512m -Xmx512m
Démarrez le service :
systemctl start elasticsearch
Note : Si le service ne démarre pas, vérifiez les logs situés dans /var/log/elasticsearch/.
Note 2 : Si vous essayez d'installer Centos 6 contre notre recommandation, vous rencontrerez un problème avec les dernières versions d'ElasticSearch (5.X), car elles nécessitent des fonctionnalités supplémentaires au niveau de kernel que CentOS 6 ne fournit pas. Vous pouvez ajouter au fichier de configuration yml les lignes suivantes pour désactiver l'utilisation de bootstrap et éviter l'erreur.
bootstrap.system_call_filter: false transport.host: localhost
1.3.1.3 Installation et configuration de LogStash
Installez LogStash à partir du RPM téléchargeable sur le site Web du projet ElasticSearch : https://www.elastic.co/downloads/logstash
Une fois le paquet téléchargé, nous l'installons en cours d'exécution :
rpm -i logstash-X.X.X.X.X.rpm
Configurez le service :
Dans la configuration Logstash, il y a trois blocs de configuration :
- Input : indique comment l'information arrive à Logstash, le format, le port et un identifiant, qui sera utilisé pour stocker les informations en interne dans Elastic.
- Filter : il est possible d'ajouter un post-traitement ici, mais pour notre cas ce ne sera pas nécessaire, nous le laisserons donc vide.
- Output : voici la configuration de l'IP et du port où vous allez écouter ElasticSearch ; c'est l'endroit où les informations traitées par Logstash seront stockées.
Fichier de configuration :
/etc/logstash/conf.d/logstash.conf
Exemple de fichier de configuration :
# This input block will listen on port 10514 for logs to come in. # host should be an IP on the Logstash server. # codec => "json" indicates that we expect the lines we're receiving to be in JSON format # type => "rsyslog" is an optional identifier to help identify messaging streams in the pipeline. input { tcp { host => "0.0.0.0" port => 10516 codec => "json" type => "pandora_remote_log_entry" } } # This is an empty filter block. You can later add other filters here to further process # your log lines filter { } output { elasticsearch { hosts => ["0.0.0.0:9200"] } }
Dans les sections "host" nous devons entrer l'adresse IP du serveur au lieu de "0.0.0.0.0".
Dans le fichier "logstash-sample.conf" nous devons aussi changer "localhost", où l'IP du serveur doit être entrée.
Démarrez le service :
systemctl start logstash
Note Si vous essayez d'installer LogStash dans Centos 6 contre notre recommandation, vous pouvez le lancer avec la commande suivante :
initctl démarrer logstash
==== Paramètres de configuration du serveur Pandora FMS ====
Il sera nécessaire d'ajouter la configuration suivante au fichier de configuration du serveur FMS Pandora (/etc/pandora/pandora/pandora_server.conf) pour que Pandora FMS DataServer traite les informations des logs.
Important : Tout journal qui arrive sur Pandora FMS sans avoir cette configuration active sera "jeté".
logstash_host eli.artica.lan logstash_port 10516
1.3.1.4 Pandora FMS SyslogServer
A partir de la mise à jour 717 de Pandora FMS 7.0NG, un nouveau composant apparaît : SyslogServer.
Ce composant permet à Pandora FMS d'analyser le syslog de la machine où elle se trouve, d'analyser son contenu et de stocker les références dans notre serveur ElasticSearch.
Le principal avantage de SyslogServer est de compléter l'unification des logs. Basé sur les caractéristiques d'exportation de SYSLOG des environnements Linux et Unix, SyslogServer permet la consultation des logs indépendamment de l'origine, en recherchant dans un seul point commun (visualiseur des logs de la console Pandora FMS).
Pour activer cette fonctionnalité, il suffit de l'activer dans la configuration, en ajoutant à pandora_server.conf le contenu suivant :
# Enable (1) or disable (0) the Pandora FMS Syslog Server (PANDORA FMS ENTERPRISE ONLY). syslogserver 1 # Full path to syslog's output file (PANDORA FMS ENTERPRISE ONLY). syslog_file /var/log/messages # Number of threads for the Syslog Server (PANDORA FMS ENTERPRISE ONLY). syslog_threads 2 # Maximum number of lines queued by the Syslog Server's producer on each run (PANDORA FMS ENTERPRISE ONLY). syslog_max 65535
Vous aurez besoin d'un serveur LogStash/ElasticSearch activé et configuré ; veuillez consulter les points ci-dessus pour savoir comment le configurer.
syslogserver Booléen, activer (1) ou désactiver (0) le moteur d'analyse SYSLOG local.
syslog_file Emplacement du fichier où les entrées SYSLOG sont livrées.
syslog_threads Nombre maximum de threads à utiliser dans le système producteur/consommateur du SyslogServer.
syslog_max Il s'agit de la fenêtre de traitement maximale pour SyslogServer ; ce sera le nombre maximum d'entrées SYSLOG à traiter dans chaque itération.
1.3.1.5 Recommandations
1.3.1.5.1 Rotation des logs pour ElasticSearch et Logstash
Importante: como recomendación, crear una nueva entrada para el demonio de rotado de logs en /etc/logrotate.d, para evitar que los logs de ElasticSearch o LogStash crezcan sin medida:
cat > /etc/logrotate.d/elastic <<EOF /var/log/elastic/elaticsearch.log /var/log/logstash/logstash-plain.log { weekly missingok size 300000 rotate 3 maxage 90 compress notifempty copytruncate } EOF
1.3.1.5.2 Purge d’index
Vous pouvez consulter à tout moment la liste des index et la taille qu'ils occupent en lançant une requête cURL sur votre serveur ElasticSearch :
curl -q http://elastic:9200/_cat/indices?http://elastic:9200/_cat/indices ?
Où "élastique" fait référence à l'adresse IP du serveur.
Pour supprimer l'un de ces index, vous pouvez exécuter la commande DELETE :
curl -q -XDELETE http://elastic:9200/logstash-2017.09.06
Où "elastic" fait référence à l'IP du serveur, et "logstash-2017.09.06" est le fichier de sortie de la commande précédente.
Cette opération libère l'espace utilisé par l'index supprimé.
1.3.2 Configuration de la console
Pour activer le système de visualisation des logs, vous devrez activer la configuration suivante :
Ensuite, nous pouvons configurer le comportement du visionneur de logs dans l’onglet 'Log Collector' :
Dans cet écran nous pourrons configurer :
- L'adresse IP ou FQDN du serveur qui héberge le service ElasticSearch.
- Le port par lequel le service ElasticSearch est fourni
- Le nombre de logs affichés : Pour accélérer la réponse de la console, la charge dynamique des enregistrements a été ajouté . Pour l'utiliser, l'utilisateur doit faire défiler jusqu'à la fin de la page, ce qui oblige à charger le groupe suivant d'enregistrements disponible. La taille de ces groupes peut être configurée dans ce champ comme le nombre d'enregistrements par groupe.
- Jours à purger : Pour éviter que la taille du système ne soit surchargée, vous pouvez définir un nombre maximum de jours pendant lesquels les informations des logs seront stockées. A partir de cette date, elles seront automatiquement supprimées dans le processus de nettoyage du Pandora FMS.
1.4 Migration vers le système LogStash + ElasticSearch
Une fois le nouveau système de stockage des logs configuré vous pouvez migrer toutes les données précédemment stockées dans Pandora FMS, d'une manière distribuée dans des répertoires vers le nouveau système.
Pour migrer vers le nouveau système, vous devrez exécuter le script suivant que vous trouverez dans /usr/share/pandora_server/util/
# Migrate Log Data < 7.0NG 712 to >= 7.0NG 712 /usr/share/pandora_server/util/pandora_migrate_logs.pl /etc/pandora/pandora_server.conf
1.5 Visualisation et recherche
Dans un outil de collecte de logs, nous nous intéressons principalement à deux choses : rechercher des informations -filtrer par date, sources de données et/ou mots-clés- et voir ces informations dessinées en occurrences par unité de temps. Dans cet exemple, nous recherchons tous les messages de logs de toutes origines au cours de la dernière heure :
Vue des occurrences au fil du temps
Il existe un certain nombre d'options pour filtrer les informations affichées sur le visualiseur :
- Filtre de type recherche : Nous pouvons rechercher par correspondance exacte, tous les mots ou n'importe quel mot.
- Filtrer par le contenu du message : Recherche le contenu du message pour le texte indiqué.
- Filtre sur l'origine du journal (ID source).
- Filtrer par agent : limite les résultats de recherche à ceux générés par l'agent sélectionné.
- Filtre par groupe : limite la sélection des agents dans le filtre par agent.
- Filtre par date.
Le champ le plus important et le plus utile pour nous sera la chaîne de recherche (capture search). Il peut s'agir d'une simple chaîne de texte, comme dans le cas précédent, ou d'une expression générique, telle qu'une adresse IP :
192.168*
Note : Les recherches doivent être effectuées en utilisant des mots complets ou des sous-chaînes initiales des mots à rechercher. Quelques exemples :
192.168.80.14 192.168*
Alerte sur systèmes Alerte sur systèmes
Nous devons sélectionner l'un des 3 types de recherche :
- Correspondance exacte : recherche littérale de chaîne de caractères.
- Tous les mots : recherchez tous les mots indiqués, quel que soit leur ordre, en gardant à l'esprit que chaque mot est séparé par des espaces.
- N'importe quel mot : recherchez n'importe quel mot indiqué, quel que soit son ordre, en gardant à l'esprit que chaque mot est séparé par des espaces.
Si nous cochons l'option pour voir le contexte du contenu filtré, nous obtiendrons un aperçu de la situation :
1.5.1 Visualisation et recherches avancées
A partir du Pandora FSM 7.0NG OUM727, les options avancées pour la visualisation des données des logs sont disponibles.
Grâce à cette fonction, nous serons en mesure de représenter graphiquement les entrées du log, en classant l'information en fonction de modèles de saisie de données.
Ces modèles de capture de données sont essentiellement des expressions régulières et des identificateurs, ce qui nous permettra d'analyser les origines des données et de les représenter sous forme de graphique.
Pour accéder aux options avancées, cliquez sur Options avancées. Un formulaire s'affiche dans lequel vous pouvez choisir le type d'affichage des résultats :
- Afficher les entrées de log (texte brut). - Afficher le graphique de logl.
Sous l'option Afficher le graphique de log, nous pouvons sélectionner le modèle de capture.
Le modèle par défaut, Apache log model, offre la possibilité d'analyser les logs Apache au format standard (access_log), en étant capable d'extraire des graphiques comparatifs du temps de réponse, de grouper par page visitée et code de réponse :
En cliquant sur le bouton éditer, nous éditerons le modèle de capture sélectionné. Avec le bouton créer, nous ajouterons un nouveau modèle de capture.
Dans le formulaire qui apparaît, nous pourrons choisir :
- Titre
- un nom pour le modèle de capture.
- Une expression régulière de capture de données
- chaque champ à extraire est identifié par la sous-expression entre parenthèses "(expression à capturer).
- Les champs
- dans l'ordre dans lequel nous les avons capturés avec l'expression régulière. Les résultats seront regroupés par la concaténation des champs clés, qui sont ceux dont le nom ne se trouve pas entre les tirets :
clave, _valor_
clave1,clave2,_valor_
clave1,_valor_,clave2
"Remarque :" Si nous ne spécifions pas de champ de valeur, ce sera automatiquement le nombre d'apparitions qui coïncidera avec l'expression régulière.
"Remarque 2 : Si nous spécifions une colonnevaleur, nous pourrons choisir entre représenter la valeur accumulée (comportement par défaut) ou cocher la case pour représenter la moyenne.
"Exemple"
Si nous voulions extraire des entrées d'un log avec le format suivant :
Sep 19 12:05:01 nova systemd: Starting Session 6132 of user root. Sep 19 12:05:01 nova systemd: Starting Session 6131 of user root.
Pour compter le nombre de fois que vous vous êtes connecté, en groupant par utilisateur, nous allons utiliser :
Expression régulière
Starting Session \d+ of user (.*?)\.
Champs :
username
Ce modèle de capture retournera le nombre de connexions par utilisateur pour l'intervalle de temps que nous avons sélectionné.
1.6 Configuration des agents
La collecte des logs se fait au moyen des agents, tant dans l'agent Windows que dans les agents Unix (Linux, MacOsX, Solaris, HPUX, AIX, BSD, etc). Dans le cas des agents Windows, les informations peuvent également être obtenues à partir du visualiseur d'événements Windows, en utilisant les mêmes filtres que dans le module de surveillance du visualiseur d'événements.
Voyons deux exemples pour capturer les informations du log, sous Windows et Unix :
1.6.1 En Windows
module_begin module_name Eventlog_System module_type log module_logevent module_source System module_end
module_begin module_name PandoraAgent_log module_type log module_regexp C:\archivos de programa\pandora_agent\pandora_agent.log module_description This module will return all lines from the specified logfile module_pattern .* module_end
Dans les deux cas, la seule différence entre un module de surveillance et la définition d'une source de log est :
module_type log
Cette nouvelle syntaxe n'est comprise que par l'agent de la version 5.0, vous devez donc mettre à jour les agents si vous souhaitez utiliser cette nouvelle fonctionnalité Enterprise.
1.6.2 Systèmes Unix
Unix utilise un nouveau plugin, fourni avec la version 5.0 de l'agent. Sa syntaxe est très simple :
module_plugin grep_log_module /var/log/messages Syslog \.\.\*
Semblable au plugin d'analyse de logs (grep_log), le plugin grep_log_module envoie les informations de logs traitées au collecteur de logs avec le nom "Syslog" comme source du log. Utilisez l'expression régulière \.\.\* (dans ce cas "tout") comme modèle pour choisir les lignes à envoyer et celles à ne pas envoyer.