Supervision et collecte de journaux

Introduction

Versión Enterprise.La supervision des logs dans Pandora FMS est abordée de deux façons différentes :

  1. Basée sur des modules : Il 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 vous 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 : Il 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.

À partir de la version 7.0NG 712, Pandora FMS intègre ElasticSearch pour stocker les informations des logs, ce qui implique une amélioration substantielle des performances.

Comment ça fonctionne ?

Pandora FMS y ElasticSearch, funcionamiento.

  • Les logs analysés par les Agents Logiciels (eventlog ou fichiers texte), sont transmis au serveur Pandora FMS, sous forme « littérale » (RAW) à l'intérieur du rapport d'agent XML.
  • Le Data Server Pandora FMS reçoit l'agent XML, qui contient à la fois les informations de supervision 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 journal, et en envoyant automatiquement les informations à ElasticSearch pour son stockage.
  • Pandora FMS stocke les données dans des index ElasticSearch générant quotidiennement un index unique pour chaque instance de Pandora FMS.
  • Le serveur Pandora FMS dispose d'unce tâche de maintenance qui élimine les index dans l'intervalle défini par l'administrateur du système (par défaut 90 jours).

Exigences en matière de serveur

Il est recommandé de distribuer Pandora FMS Server et Elasticsearch sur des serveurs indépendants.

  • Rocky Linux 8 ou RHEL 8.
  • Au moins 4 gigaoctets de RAM, bien que 6 Go de RAM par instance Elasticsearch soient recommandés.
  • Désactiver SWAP sur le(s) nœud(s) où Elasticsearch s'exécute.
  • Au moins 2 cœurs de CPU.
  • 20 GB d'espace disque pour le système.
  • 50 GB d'espace disque pour les données Elasticsearch (le nombre peut varier en fonction de la quantité de données à stocker). L'utilisation du disque Elasticsearch est très intensive, donc plus la vitesse de lecture et d'écriture est élevée, meilleures sont les performances de l'environnement.
  • Connectivité du serveur Pandora FMS et de la console à l'API Elasticsearch (par défaut, port 9200/TCP).

Avec un environnement à nœud unique présentant ces caractéristiques, vous pouvez stocker jusqu'à 1 Go de données quotidiennes et les conserver pendant la durée par défaut, qui est de 8 jours.

Si vous avez besoin d'une plus grande résilience des données et d'une plus grande tolérance aux pannes, il sera nécessaire de configurer un cluster Elasticsearch (au moins 3 nœuds pour garantir l'intégrité des données). Lors du passage à un environnement en grappe, il est également possible de répartir la charge entre les nœuds, en doublant (dans le cas de 3 nœuds) la capacité de traitement de l'environnement. Un système d'équilibrage de la charge sera nécessaire si les différents nœuds doivent être attaqués simultanément.

Installation et configuration de ElasticSearch

Installation

Pour Rocky Linux 8, nous recommandons l'installation via le paquet RPM, qui contient tout ce qui est nécessaire à l'installation de la base de données Elasticsearch.

Pour télécharger, allez sur https://www.elastic.co/downloads/elasticsearch et sélectionnez
Linux x86_64 (AMD® ou Intel® 64-bit processors).

Une fois que vous avez téléchargé le paquet, vous devez le télécharger sur le serveur où vous installerez Eleasticsearch, aller dans ce répertoire et l'exécuter avec des droits suffisants :

dnf install ./downloaded_packet.rpm

Remplacez downloaded_packet.rpm par le nom du paquet téléchargé.

Vous obtiendrez un résultat similaire à :

Pour vérifier que le service a été installé correctement, vous pouvez exécuter la commande :

systemctl status elasticsearch.service

Vous obtiendrez un résultat similaire à :

Notez que le service Elasticsearch est inactif.

Configuration du nœud

Vous devez d'abord éditer le fichier de configuration

/etc/elasticsearch/elasticsearch.yml

puis démarrer le service Elasticsearch.

Ce fichier contient la configuration de tous les paramètres du service Elasticsearch, voir la documentation officielle pour plus d'informations :

Ensuite, les configurations minimales nécessaires pour démarrer le service et son utilisation avec Pandora FMS seront décrites.

  • Configurez le numéro de port, l'emplacement des données et l'emplacement du fichier journal (log) des événements.
 # ---------------------------------- Network -----------------------------------
 # Set a custom port for HTTP:
 http.port: 9200
 # ----------------------------------- Paths ------------------------------------
 # Path to directory where to store the data (separate multiple locations by a comma):
 path.data: /var/lib/elastic
 # Path to log files:
 path.logs: /var/log/elastic

Configurer le xpack :

xpack.security.enabled: false
xpack.security.enrollment.enabled: false

  • Commentez les lignes suivantes :
#http.host: [_local_]
#transport.host: [_local_]

Décommentez et définissez les lignes suivantes :

cluster.name: pandorafms
node.name: ${HOSTNAME}
network.host: 0.0.0.0

cluster.name

Le nom du groupe ou grappe.

node.name

Pour nomer le noeud en utilisant la variable de système ${HOSTNAME}, celui-ci prendra le nom de l'hôte.

network.host

Pour network.host, la valeur 0.0.0.0.0 permet à Elasticsearch « d'écouter » toutes les interfaces réseau (NIC), et une valeur spécifique permet d'utiliser une NIC spécifique.

Si vous travaillez avec une grappe, complétez le paramètre discovery.seed_hosts.

discover.seed_hosts : ["ip:port", "ip", "ip"]

Ou bien (exemple de format) :

discovery.seed_hosts:
  - 192.168.1.10:9300
  - 192.168.1.11
  - seeds.mydomain.com

Dans les versions les plus récentes d'Elasticsearch, la gestion de la mémoire de la machine virtuelle Java® se fait automatiquement et il est recommandé de la laisser ainsi dans les environnements de production, il n'est donc pas nécessaire de modifier les valeurs de la JVM d'Elasticsearch.

Une fois fini, il faut éxécuter :

systemctl start elasticsearch.service

La commande pour démarrer le service utilisez start, pour redémarrer utilisez restart et pour arrêter stop.

Patientez quelques instants, le temps qu'Elasticsearch démarre. La commande pour demander l'état est :

systemctl status elasticsearch.service

Vous verrez quelque chose de similaire à ceci :

Si le service n'est pas démarré, révisez les journaux localisés sur /var/log/elastic/ (dans ce cas le fichier pandorafms.log ou le nom donné au noeud).

Pour tester l'installation d'Elasticsearch, exécutez la commande suivante dans une fenêtre de terminal :

curl -q http://{IP}:9200/

Remplacez {IP} par l'adresse IP ou l'URL de l'Elasticsearch installé.

Vous recevrez une réponse similaire à la suivante :

{
  "name" : "3743885b95f9",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "7oJV9hXqRwOIZVPBRbWIYw",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Il est recommandé de consulter le lien vers les meilleures pratiques Elasticsearch pour les environnements de production :

Mise en place d'un cluster Elasticsearch

  • La taille minimale d'une grappe de serveurs Elasticsearch est de 3 nœuds et elle doit toujours croître en nombres impairs afin d'utiliser le système de quorum et de garantir l'intégrité des données.
  • Assurez-vous que vous disposez d'une connectivité entre les trois nœuds et que les ports 9200 et 9300 sont accessibles entre chaque nœud.

N'oubliez pas de configurer le pare-feu (firewall) sur chaque nœud pour autoriser la connexion via ces numéros de port.

Arrêtez le service Elasticsearch sur chaque nœud :

systemctl stop elasticsearch.service

Modifiez les lignes suivantes dans le fichier de configuration /etc/elasticsearch/elasticsearch.yml :

#discovery.seed_hosts: ["host1", "host2"]
#cluster.initial_master_nodes: ["host1", "host2"]

Décommentez les lignes et ajoutez les adresses IP ou URL de chacun des nœuds :

discovery.seed_hosts: ["host1", "host2", "host3"]
cluster.initial_master_nodes: ["host1", "host2", "host3"]

Exemple avec les adresses IP :

discovery.seed_hosts: ["172.42.42.101", "172.42.42.102", "172.42.42.103"]
cluster.initial_master_nodes: ["172.42.42.101", "172.42.42.102", "172.42.42.103"]

Assurez-vous que la ligne cluster.initial_master_nodes n'est définie qu'une seule fois dans le fichier de configuration, car dans certains cas, la même ligne apparaît dans deux blocs différents du même fichier.

Avant de démarrer le service, comme les nœuds ont été démarrés pour la première fois seuls (standalone), le contenu du dossier data (par défaut /var/lib/elasticsearch/) doit être supprimé afin de pouvoir démarrer le cluster pour la première fois. Pour ce faire, utilisez la commande :

rm -rf /var/lib/elasticsearch/*

Il est maintenant temps de démarrer les services sur chaque nœud. Démarrez-les et vérifiez qu'ils fonctionnent avec les commandes :

systemctl start elasticsearch.service && systemctl status elasticsearch.service

Vous devriez obtenir un résultat similaire à celui-ci :

Une fois que les services ont été démarrés, vous devez confirmer que les trois nœuds sont correctement joints au cluster, c'est-à-dire que lorsque vous exécutez la commande suivante sur l'un des nœuds, vous devez obtenir la même réponse :

curl -XGET http://127.0.0.1:9200/_cat/nodes

Vérifiez à nouveau la configuration du pare-feu en tenant compte du fait que les nœuds doivent communiquer via les ports 9200 et 9300 et que le serveur PFMS et la console Web PFMS doivent pouvoir accéder au port 9200 également. Avec ces étapes, vous aurez déjà installé et configuré le cluster Elasticsearch qui sera utilisé comme moteur de stockage des logs de Pandora FMS.

Modèles et modèles de données

Avant de mettre en production un environnement, qu'il s'agisse d'un nœud unique ou d'une grappe de données, il est recommandé d'appliquer les configurations correspondantes à ce nœud ou à cette grappe en fonction de son utilisation. Dans le cas des index générés par Pandora FMS, la manière la plus efficace de le faire est de définir un modèle pour définir la configuration des champs et des données stockées.

Les modèles avec des configurations qui sont appliqués au moment de la création de l'index. Changer un modèle n'aura aucun impacte sur les index existantes.

Pour créer un modèle de base , seulement définnissez les champs suivants :

{
 "index_patterns": ["pandorafms*"],
 "settings": {
   "number_of_shards": 1,
   "auto_expand_replicas" : "0-1",
   "number_of_replicas" : "0"
 },
"mappings" : {
     "properties" : {
   "agent_id" : {
         "type" : "long",
         "fields" : {
           "keyword" : {
             "type" : "keyword",
             "ignore_above" : 256
           }
         }
       },
       "group_id" : {
         "type" : "long",
         "fields" : {
           "keyword" : {
             "type" : "keyword",
             "ignore_above" : 256
           }
         }
       },
       "group_name" : {
         "type" : "text",
         "fields" : {
           "keyword" : {
             "type" : "keyword",
             "ignore_above" : 256
           }
         }
       },
       "logcontent" : {
         "type" : "text",
         "fields" : {
           "keyword" : {
             "type" : "keyword",
             "ignore_above" : 256
           }
         }
       },
       "source_id" : {
         "type" : "text",
         "fields" : {
           "keyword" : {
             "type" : "keyword",
             "ignore_above" : 256
           }
         }
       },
       "suid" : {
         "type" : "text",
         "fields" : {
           "keyword" : {
             "type" : "keyword",
             "ignore_above" : 256
           }
         }
       },
       "type" : {
         "type" : "text",
         "fields" : {
           "keyword" : {
             "type" : "keyword",
             "ignore_above" : 256
           }
         }
       },
       "utimestamp" : {
         "type" : "long"
       }
     }
   }
 }
}

À travers l'interface Elasticsearch de Pandora FMS (Admin toolsElasticsearch Interface) et utilisant la commande native d'Elasticsearch, vous pourrez télécharger ledit modèle.

  • PUT _template/<nomdumodèle> : dans cet exemple, PUT _template/pandorafms .

Vous pouvez également consulter les modèles via la même interface du Pandora FMS:

  • GET _template/<nomdumodèle> : dans cet exemple, GET _template/pandorafms .

Modèles multi-nœuds

Pour définir un modèle à plusieurs nœuds, les informations suivantes doivent être prises en compte :

  • Lors de la configuration du modèle (template format JSON), vous devez configurer autant de recherches que vous avez de nœuds. Cependant, pour configurer correctement les répliques, vous devez soustraire 1 du nombre de nœuds dans l'environnement.

Par exemple, dans un environnement Pandora FMS avec Elasticsearch et 3 nœuds configurés, lorsque vous modifiez les champs number_of_search et number_of_replicas, cela devrait ressembler à ceci :

{
 "index_patterns": ["pandorafms*"],
 "settings": {
   "number_of_shards": 3,
   "auto_expand_replicas" : "0-1",
   "number_of_replicas" : "2"
 },

Il s'agit d'une définition très basique, afin de définir correctement le dimensionnement de l'environnement Elasticsearch, il est conseillé de prendre en compte les facteurs décrits dans cet article:

À partir de la ligne de commande, vous pouvez dresser la liste des modèles dans l'environnement en exécutant la commande :

curl -X GET "localhost:9200/_cat/templates/*?v=true&s=name&pretty"

Vous pouvez également consulter les détails d'un modèle, par exemple celui que nous avons créé pour pandorafms, en le lançant :

curl -X GET "localhost:9200/_template/pandorafms*?pretty"

qui renverra au format JSON la configuration que vous avez définie.

Vous pouvez effectuer ces opérations via l'interface Elasticsearch dans Pandora FMS en utilisant les commandes Elasticsearch natives.

  • PUT _template/<nombre_del_template> {json_data} : Il permet de saisir les données du modèle à créer.
  • GET _template/><nombre_del_template> : Il permet d'afficher le modèle créé.

Recommandations

Rotation des journaux pour ElasticSearch

Important : Pour éviter que les journaux de ElasticSearch croissent sans mesure, créez une nouvelle entrée pour le démon de rotation de journaux dans /etc/logrotate.d :

cat> /etc/logrotate.d/elastic <<EOF
 /var/log/elastic/elaticsearch.log {
   weekly
        missingok
        size 300000
        rotate 3
        maxage 90
        compress
        notifempty
        copytruncate
 }
 EOF

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?

elastic 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/{index-name}

{index-name} est le fichier de sortie de la commande précédente. Cette opération libère l'espace utilisé par l'index supprimé.

Pandora FMS Syslog Server

Versión Enterprise.Version NG 717 ou supérieure.

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

L'installation de Syslog Server doit se faire sur client et sur le serveur, et pour l'exécuter il est nécessaire de lancer la commande suivante :

yum install rsyslog

Une fois syslog installé dans les ordinateurs à travailler, il faut accéder au fichier de configuration /etc/rsyslog.conf pour habiliter l'input de TCP et UDP.

(...)

 # Provides UDP syslog reception
 $ModLoad imudp
 $UDPServerRun 514

 # Provides TCP syslog reception
 $ModLoad imtcp
 $InputTCPServerRun 514

 (...)

Après avoir fait cet ajustement il sera nécessaire d'arrêter et relancer le service rsyslog. Une fois le service disponible, vérifiez que le port 514 est accessible avec :

netstat -ltnp

Pour plus d'informations de la configuration de rsyslog, visitez leur site officiel.

Dans le client configurez-le pour que les journaux peuvent être envoyés au Syslog Server. Pour ça accédez une autre fois au fichier de configuration de rsyslog /etc/rsyslog.conf dans le client. Localisez et habilitez la ligne qui permet de configurer l'hôte distant.

.* @@remote-host:514

L'envoi de logs génére un agent containeur avec le nom du client, donc on vous récommande de créer les agents avec « alias as name » en coïncidant avec le hostname du client, ainsi vous éviterez de la duplicité dans les agents.

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

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 fils à 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.

Vous aurez besoin d'un serveur ElasticSearch habilité et configuré ; veuillez vérifier les points précedents pour savoir comment.

Rappelez vous qu'il est nécessaire de modifier la configuration de votre appareil pour que les journaux soient envoyés au serveru Pandora FMS.

Migration vers le système ElasticSearch

Version 712 ou précédentes. Après vous devrez mettre à jour la version actuelle, consultez « Mise à jour » pour plus d'informations

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

Configuration de la console

Pour activer le système de visualisation des logs, vous devrez activer la configuration suivante (SetupSetupEnterprise) :

Ensuite, vous pouvez configurer le comportement du visionneur de logs dans l’onglet Configuration > Log Collector :

  • L'adresse IP ou FQDN du serveur qui héberge le service ElasticSearch.
  • Number of logs viewed : 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, groupés selon le conmbre défini ici.
  • Days to purge old information : 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 journaux seront stockées. A partir de cette date, elles seront automatiquement supprimées dans le processus de nettoyage de Pandora FMS.

ElasticSearch Interface

Versión Enterprise.Version NG 747 ou supérieure.

Dans la configuration par défaut Pandora FMS génére un index par jour, fragmenté et réparti pour des futures recherches.

Pour que ces recherches soient optimales, par défaut ElasticSearch génére un index pour chacune, donc il faut configurer dans votre environnement aussi de recherches (search) que le nombre de noeuds que vous avez installés.

Ces search et répliques sont configurés quand un index est créé, que Pandora FMS génére automatiquement, donc pour modifier cette configuration il faut utiliser les modèles.

Sauvegarde et restauration des données

Un photographie instantanée, ou simplement un instantané (snapshot), des données (index) est le mécanisme que les versions récentes d'Elastichsearch utilisent pour sauvegarder les données. Ces instantanés peuvent être utilisés pour récupérer des données après une panne matérielle, pour transférer des données entre des nœuds, et même pour supprimer des index peu utilisés du ou des nœuds (ce dernier point nécessite une configuration supplémentaire).

Ces instantanés fonctionnent en sauvegardant les données de manière incrémentale, c'est-à-dire qu'ils ne copient que les nouvelles données qui n'ont pas été sauvegardées tout en garantissant que les sauvegardes déjà effectuées sont fiables et compatibles entre les différentes versions d'Elasticsearch.

Pour Elasticsearch, le moyen de garantir toutes ces fonctionnalités est d'utiliser des référentiels.

Ces référentiels peuvent être les nôtres ou ceux de tiers (AWS S3®, Google Cloud Storage®, Microsoft Azure® et dans tous les cas ils doivent être physiquement en dehors du ou des nœuds que vous utilisez en conjonction avec Pandora FMS. Vous êtes seul responsable de ces instantanés.

Voir la documentation officielle d'Elasticsearch pour plus d'informations :

Créer un référentiel

Vous devez disposer d'un système de fichiers réseau (NFS) ou d'un autre système de fichiers partagé entre la ou les machines qui hébergeront le référentiel Elasticsearch et le ou les nœuds de l'environnement.

Pandora FMS utilise indépendamment NFS pour partager le répertoire d'échange entre plusieurs serveurs: n'utilisez pas ce NFS pour héberger le(s) référentiel(s) Elasticsearch. Vous êtes seul responsable de la configuration correcte de chaque composant de votre système.

Une fois que vous avez installé et configuré le NFS cible, procédez à la création et au montage d'un répertoire sur le(s) nœud(s) Elastisearch, par exemple il peut s'appeler :

/mnt/pandorafms/elk_repo

Accordez les permissions à l'utilisateur elasticsearch :

chown elasticsearch:  /mnt/pandorafms/elk_repo

Vous devez déclarer ce chemin dans le fichier de configuration d'Elasticsearch comme chemin du référentiel sur le(s) nœud(s) (tous les nœuds) :

path:
  repo:
   - /mnt/pandorafms/elk_repo

Lorsque vous avez configuré le(s) nœud(s), vous devez redémarrer le service elasticsearch (sur tous les nœuds) :

systemctl start elasticsearch.service && systemctl status elasticsearch.service

Outre l'interface Elasticsearch dans le Pandora FMS, vous pouvez également utiliser la commande curl pour obtenir des informations ou communiquer des ordres au(x) nœud(s) Elastisearch. Pour créer le référentiel, exécutez localement dans le ou les nœuds (tous les nœuds) la commande suivante :

curl -X PUT "localhost:9200/_snapshot/backup_repo?pretty" -H 'Content-Type: application/json' -d'
{
 "type": "fs",
 "settings": {
   "location": "/mnt/pandorafms/elk_repo/"
 }
}
'

Si vous utilisez un port autre que 9200, remplacez-le par cette valeur.

Vous devriez obtenir le message suivant du (des) nœud(s) :

"acknowledged" : true

Cela indique que le référentiel a été créé. Pour vérifier l'état du référentiel :

curl -X POST "localhost:9200/_snapshot/my_unverified_backup/_verify?pretty"

Remplacez my_unverified_backup par le nom du dépôt à vérifier. Si tout s'est déroulé correctement, vous recevrez une liste des nœuds sur lesquels le référentiel est configuré.

Générer un instantané de la base de données

Pour prendre un instantané manuellement, utilisez l'API de création d'instantanés. Le nom de l'instantané prend en charge l'utilisation de date math pour donner un nom unique.

PUT _snapshot/my_repository/<my_snapshot_{now/d}>

Remplacez my_repository par le nom de votre référentiel et my_snapshot par le nom de l'instantané. Si vous utilisez curl, vous devez utiliser des caractères d'échappement, de sorte que la commande ci-dessus ressemblerait à ceci :

PUT _snapshot/my_repository/%3Cmy_snapshot_%7Bnow%2Fd%7D%3E

En fonction de sa taille, la création d'un instantané peut prendre un certain temps. Par défaut, l'API de création d'instantanés ne fait que lancer le processus d'instantané, qui s'exécute en arrière-plan. Pour bloquer le client jusqu'à ce que l'instantané soit terminé, attribuez la valeur vraie au paramètre de requête wait_for_completion.

PUT _snapshot/my_repository/my_snapshot?wait_for_completion=true

Pour effectuer un instantané appelé : snapshot_today, vous pouvez l'exécuter sur l'un des nœuds :

curl -X PUT "localhost:9200/_snapshot/backup_repo/snapshot_today?wait_for_completion=true&pretty"

Si vous utilisez un port autre que 9200, remplacez-le par cette valeur.

Avec le paramètre wait_for_completion=true, l'appel restera actif jusqu'à ce que le processus soit terminé (cela peut prendre un certain temps, en fonction de la taille de la base de données).

Dès qu'il sera terminé, il renverra sous forme de JSON les informations récapitulatives du processus, quelque chose de similaire à ceci :

Il est également possible de définir des options spécifiques dans l'exécution de snapshot, telles que les index à inclure ou les métadonnées :


Exemple :

curl -X PUT "localhost:9200/_snapshot/backup_repo/snapshot_2?wait_for_completion=true&pretty" -H 'Content-Type: application/json' -d'
{
 "indices": "pandorafms*",
 "metadata": {
   "taken_by": "PandoraFMS admin user",
   "taken_because": "backup before upgrading"
 }
}
'

Liste des instantanés

Pour obtenir une liste de tous les snapshots stockés, exécutez la commande suivante :

curl -X GET "localhost:9200/_snapshot/backup_repo/*?pretty"

backup_repo est l'identifiant du dépôt et * signifie tout. Pour plus d'informations sur les filtres de recherche d'instantanés dans Elasticsearch, visitez le site :

Suppression d'instantanés

Pour supprimer un instantané, vous devez obtenir son nom à partir de la commande ci-dessus et l'exécuter sur l'un des nœuds :

curl -X DELETE "localhost:9200/_snapshot/backup_repo/snapshot_today?pretty"

Restaurer un instantané de la base de données

Pour restaurer un index à partir d'un snapshot, l'instantané doit être fermé, en dehors de toute autre considération technique. Pour plus d'informations, veuillez consulter ce lien :

Pour restaurer un index, il faut procéder de l'une des deux manières suivantes :

  1. Supprimer l'index original avant de le restaurer.
  2. Renommer l'index restauré.

Les deux cas sont présentés ci-dessous en utilisant backup_repo pour le nom du référentiel et snapshot_today pour le nom de l'instantané comme exemples.

  • Supprimer et restaurer :

La façon la plus simple d'éviter les conflits est de supprimer un index ou un flux de données existant avant de le restaurer.

Pour éviter la recréation accidentelle de l'index ou du flux de données, il est recommandé d'arrêter temporairement toute indexation jusqu'à ce que l'opération de restauration soit terminée.

Pour supprimer un index :

curl -X DELETE "localhost:9200/my-index?pretty"

Pour restaurer un index :

curl -X POST "localhost:9200/_snapshot/backup_repo/snapshot_today/_restore?pretty" -H 'Content-Type: application/json' -d'
{
 "indices": "my-index,logs-my_app-default"
}
'
  • Renommer lors de la restauration

    Assurez-vous que vous disposez de suffisamment d'espace de stockage pour cette opération.

De cette façon, vous répéterez les informations que vous avez déjà stockées et, dans certains cas, ce processus peut s'avérer utile, par exemple :

  • Vous devez confirmer qu'une récupération de données a été effectuée avec succès. Chacun des index et leur copie renommée doivent contenir les mêmes informations et renvoyer les mêmes résultats de recherche.
  • Valider les audits de données réalisés par des tiers.
curl -X POST "localhost:9200/_snapshot/backup_repo/snapshot_today/_restore?pretty" -H 'Content-Type: application/json' -d'
{
 "indices": "my-index,logs-my_app-default"
  "rename_pattern": "(.+)",
  "rename_replacement": "restored-$1"
}
'

Restauration d'un nœud entier

Si vous souhaitez restaurer un nœud complet avec tous ses index, il est recommandé d'arrêter les services d'indexation avant d'exécuter la restauration. Pour plus d'informations à ce sujet, consultez le site :

Visualisation et recherche

Dans un outil de collecte de logs, nous nous intéressons principalement à deux choses : rechercher des informations - en filtrant par date, sources de données et/ou mots-clés, etc. - et voir ces informations (Log viewer) dessinées en occurrences par unité de temps. Dans cet exemple, recherchez tous les messages de journaux de toutes origines au cours de la dernière heure ; fixez-vous sur Search, Start date et End date :

Haga clic para ampliarVue d'ocurrences au fil du temps

Le champ le plus important et utile sera la chaîne à chercher à introduire le cadre de texte Search combiné avec les trois types de recherche disponibles (Search mode ).

Exact match

Recherche de chaîne littéral, le journal contient une coîncidence exacte.

Haga clic para ampliar

All words

Recherche qui contient tous les mots indiqués, n'importe l'ordre dans un même ligne de journal (tenez sur compte désormais que chaque mot soit séparée par des espaces).

Haga clic para ampliar

Any word

Recherche qui contienne quelque des mots indiquñes, n'importe l'ordre.

Haga clic para ampliar

Si vous marquez l'option de voir contexte du contenu filtré, vous obtiendrez une vue générale de la situation avec des informations d'autres lignes de journaux rélationnées avec votre recherche :

Haga clic para ampliar

Visualisation et recherches avancées

Versión Enterprise.Version NG 727 ou supérieure.

Grâce à cette fonction, nous serons en mesure de représenter graphiquement les entrées du journal, 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 Advanced options. Un formulaire s'affiche dans lequel vous pouvez choisir le type d'affichage des résultats :

  • Afficher les entrées de journal (texte brut).
  • Afficher le graphique de journal.

Sous l'option Afficher le graphique de log (Display mode), vous pouvez sélectionner le modèle de capture (Use capture model).

Le modèle par défaut, Apache log model, offre la possibilité d'analyser les journaux 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 :

Vous pouvez cliquer sur editer , ou créer pour faire un nouvel modèle de capture.

Capture regexp

Une expression regulière de capture de données, chaque champ à extraire est identifié avec la sous-expression entre parenthèses (expression à capturer).

Fields

Champs selon l'ordre selon lequel ils ont été capturés avec l'expression regulière. Les résultats seront groupés par la contaténation des champs clè qui sont ceux dont le nom n'est pas entre des tirets bas :

key, _value_
key1,key2,_value_
key1,_value_,key2

Observation : Si vous ne spécifiez pas une valeur de champ, ce sera automatiquement le nombre d'apparitions qui coïncident avec l'expression regulière.

Observation 2 : Si vous especifiez une colonne valeur, vous pourrez choisir entre représenter la valeur accumulée (performance par défaut) ou maruqer la case de vérification pour représenter la moyenne.

Example

Extraire des entrées d'un journal 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, utilisez :

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 vous avez sélectionné :

Filtres fréquents

Version 771 ou ultérieure

Cette option vous permet de sauvegarder les préférences de filtrage fréquemment utilisées, créant ainsi une liste de filtres fréquemment utilisés. Lorsque vous avez configuré toutes les valeurs du filtre, cliquez sur le bouton Enregistrer le filtre (Save filter), attribuez un nom et cliquez sur Enregistrer (Save). Vous pouvez à tout moment charger ces préférences à l'aide du bouton Charger le filtre (Load filter), puis dérouler la liste des filtres sauvegardés, en sélectionner un et cliquer sur Charger le filtre (Load filter).

Filtres enregistrés en tant qu'éléments favoris

Version 770 ou supérieure.

Grâce au système de Favorite, vous pouvez enregistrer un raccourci vers le visualiseur de journaux (Log viewer) avec des préférences de filtrage en cliquant sur l'icône en forme d'étoile dans le titre de la section.

Un nom vous sera demandé pour enregistrer dans vos favoris les conditions de filtrage que vous avez définies.

Les préférences de filtrage de Log viewer seront enregistrées dans la section correspondante sous Favorite (menu Operation).

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 supervision du visualiseur d'événements.

Exemple sur Windows

À partir de la version 750 cette action peut être réalisée ay moyen des plugins d'agent en activant l'option Advanced.

Des exécutions comme celles montrés ci-dessous pourront être effectuées :

Module logchannel

 module_begin
 module_name MyEvent
 module_type log
 module_logchannel
 module_source <logChannel>
 module_eventtype <event_type/level>
 module_eventcode <event_id>
 module_pattern <text substring to match>
 module_description <description>
 module_end

Module logevent

 module_begin
 module_name Eventlog_System
 module_type log
 module_logevent
 module_source System
 module_end

Module regexp

 module_begin
 module_name PandoraAgent_log
 module_type log
 module_regexp <%PROGRAMFILES%>\pandora_agent\pandora_agent.log
 module_description This module will return all lines from the specified logfile
 module_pattern .*
 module_end

Pour plus d'informations sur la description des modules journal, consultez la section sur les Directives spécífiques.

module_type log

Lorsque vous definissez ce type d'etiquétte, module_type log, il indique qu'il faut pas stocker sur la base de données, mais les envoyer au collecteur de journaux. Tout module avec ce type de donnée sera envoyé au collecteur, tandis qu'il est activé : sinon l'information sera écartée.

Note : 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.

Exemple sur systèmes Unix

Avec la version 5.0 de l'agent, vous pouvez utiliser la syntaxe suivante :

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.

Log Source dans la vue d'agents

À partir de la versión 749 de Pandora FMS, un cadre a été ajouté à la vue d'agent appelé Log sources status, dans lequel vous verrez la date de la dernière mise à jour des journaux par l'agent. Si vous cliquez sur le zoom dans le Review, vous serez rédirigé à la vue de Log Viewer filtrée par ce journal-là.

Haga clic para ampliar

Retour à l'index de documentation du Pandora FMS