Pandora: Documentation fr: Supervision et collecte journaux

From Pandora FMS Wiki
Jump to: navigation, search

Volver a Indice de Documentacion Pandora FMS

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 :

  1. 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 :
    1. Créer des modules qui comptent les occurrences d'une expression régulière dans un journal.
    2. Obtenir les lignes et le contexte des messages du journal
  2. 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 :



Esquemas-logs.png



  • 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 :


Logs1.JPG


Ensuite, nous pouvons configurer le comportement du visionneur de logs dans l’onglet 'Log Collector' :


Logs2.JPG


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 :


Logs3.JPG 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.

Logs4.JPG


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.

Logs5.JPG


  • 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.

Logs6.JPG


  • 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.

Logs7.JPG



Si nous cochons l'option pour voir le contexte du contenu filtré, nous obtiendrons un aperçu de la situation :


Logs8.JPG



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.

Graph log.png

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 :

Graph log2.png

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.

Graph log3.png

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é.


Graph log4.png

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.

Revenir à l’Index de Documentation Pandora FMS