Skip to end of metadata
Go to start of metadata

Installations Logstash - Elasticsearch

Suivez les instructions de la page correspondant à votre distribution :

 

Paramétrage Elasticsearch important

Avant de démarrer et commencer à utiliser votre serveur elasticsearch, il est important de vérifier le paramétrage suivant dans le fichier de configuration d'elasticsearch.

 

Le fichier de configuration elasticsearch s'appelle elasticsearch.yml et se trouve soit dans ./config/elasticsearch.yml du répertoire des sources soit dans /etc/elasticsearch/elasticsearch.yml pour une installation par paquet.

  • Modifier le paramètre cluster.name : par défaut il utilise elasticsearch. Si vous lancez un autre serveur elasticsearch non paramétré sur le même réseau, il va commencer à recopier toutes les données car ils considéreront qu'ils font partie du même cluster.

    # Nom du cluster utilisé pour Agimus. Toutes les machines utilisées (si vous utilisez le mécanisme de distribution) doivent avoir le même.
    cluster.name: Agimus
  • Modifier le paramètre node.name : permet de savoir plus précisément quelle machine pose problème le cas échéant. Le nœud est un serveur elasticsearch.

    # Nom du noeud (une des machines du cluster). Permet de différencier chaque machine du cluster.
    node.name: "Agimus1"
  • Prévoir beaucoup de RAM sur la ou les machines du cluster. Le heap space (variable d'environnement ES_HEAP_SIZE) du processus ne devrait pas dépasser 50% de la RAM.
  • Ajouter le paramètre indices.fielddata.cache.size : 40% .
    Ceci permet de limiter l'espace de heap alloué à fielddata et d'éviter que les requêtes ne soient bloquées par un circuit breaker (cf http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_limiting_memory_usage.html)

    indices.fielddata.cache.size:  40%
  • Avant de commencer l'indexation, ajoutez ces templates qui limiteront le nombre de processus lucene utilisés, le nombre de valeurs enregistrées et paramétreront les méthodes d'analyse utilisées pour les données enregistrées.

    template "logs_agimus"
    $ curl -XPUT "http://localhost:9200/_template/logs_agimus" -d '
    {
      "template": "logstash-*", 
      "order":    1, 
      "settings": {
        "number_of_shards": 1,
    	"number_of_replicas": 0
      },
      "mappings": {
        "_default_": {
     		"dynamic_templates": [
              {
                "string_fields": {
                  "mapping": {
                    "index": "not_analyzed",
                    "fielddata": {
                      "format": "doc_values"
                    },
                    "type": "string"
                  },
                  "match": "*",
                  "match_mapping_type": "string"
                }
              }
            ], 
          	"_all": {
            	"enabled": false
          	}
        }
      },
      "aliases": {
      }
    }'
    
    template "ldap"
    $ curl -XPUT "http://localhost:9200/_template/ldap" -d '
    {
      "template": "ldap", 
      "order":    1, 
      "settings": {
        "number_of_shards": 1,
    	"number_of_replicas": 0
      },
      "mappings": {
          "_default_": {
            "dynamic_templates": [
              {
                "string_fields": {
                  "mapping": {
                    "index": "not_analyzed",
                    "type": "string"
                  },
                  "match": "*",
                  "match_mapping_type": "string"
                }
              }
            ],
            "_all": {
              "enabled": false
            }
          }
        },
        "aliases": {}
      }
    }'
    
    
    template "ldap-stat"
    curl -XPUT "http://localhost:9200/_template/ldap-stat" -d'
    {
      "order": 1,
      "template": "ldap-stat*",
      "mappings": {
        "ldap-stat": {
          "properties": {
            "attribut": {
              "type": "string",
              "index": "not_analyzed",
              "fields": {}
            },
            "value": {
              "type": "string",
              "index": "not_analyzed",
              "fields": {}
            }
          },
          "_all": {
            "enabled": false
          }
        }
      }
    }'

    POUR TESTER

    Pour vous assurer que les commandes ont été prises en compte, vérifier que vous avez les entrées "logs_agimus" et "ldap" en lançant la commande suivante :

    curl -XGET "http://localhost:9200/_template/?pretty"

Ajouts intéressants

  • Pour en savoir plus sur elasticsearch : http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/
  • Il est possible d'installer le plugin kopf pour elasticsearch qui vous permettra de requêter et administrer votre serveur elasticsearch. Pour cela, taper dans votre répertoire elasticsearch :

    bin/plugin -install lmenezes/elasticsearch-kopf
          OU
    bin/plugin -DproxyHost=host_name -DproxyPort=port_number -install lmenezes/elasticsearch-kopf

    Pour l'utiliser, il suffit alors d'accéder à l'adresse http://agimus.univ.fr:9200/_plugin/kopf

  • Sense est également utile pour requêter votre cluster elasticsearch. Il propose de l'autocomplétion, indentation des requêtes. C'est un outil très utile au moment de la conception de vos index pour vérifier les contenus.
    Depuis la version 4.2, sense est devenu un plugin de kibana au lieu de Marvel précédemment (outil payant en production).
    Pour installer sense :
    • télécharger la dernière version de kibana
    • décompresser et lancer la commande suivante dans le dossier

      ./bin/kibana plugin --install elastic/sense
    • Si votre version d'elasticsearch est inférieure à 2, vous devez désactiver les fonctionnalités principales de kibana

      Ajout dans ./config/kibana.yml
      kibana.enabled: false        # disable the standard kibana discovery, visualize & dashboard plugins
      elasticsearch.enabled: false # do not require a running Elasticsearch 2.0 instance
    • Lancer ensuite kibana ( ./bin/kibana) et accéder à l'url http://agimus.univ.fr:5601/app/sense

  • Il existe d'autres plugins intéressants :

    • ElasticsearchHQ,

    • Bigdesk, ...

Si vous avez paramétré la variable d'environnement http_proxy et que votre serveur elasticsearch se trouve sur la même machine que logstash, il faut utiliser le script suivant pour appeler logstash.

En effet, la variable no_proxy, suivant son contenu, n'est pas toujours correctement interprétée par ruby. Le script désactive donc temporairement http_proxy, le temps de l'appel à logstash.

 

Python

Python est utilisé pour faire une synthèse quotidienne de la répartition dans le LDAP par type de population.

Pour cela le script (donné ci-dessous), nécessite un plugin elasticsearch afin d'interroger le LDAP. Pour installer ce plugin lancer la commande suivante :

pip install elasticsearch

Si vous rencontrez des problèmes avec pip, vous pouvez télécharger et installer directement :

#Récupération du paquet du module
wget https://pypi.python.org/packages/source/e/elasticsearch/elasticsearch-1.4.0.tar.gz
#Récupération de sa dépendance
wget https://pypi.python.org/packages/source/u/urllib3/urllib3-1.9.tar.gz

# On décompresse les fichiers
tar -zxf urllib3-1.9.tar.gz
tar -zxf elasticsearch-1.4.0.tar.gz

#On installe d'abord la dépendance
cd urllib3-1.9
python setup.py install
#Puis le module elasticsearch
cd ../elasticsearch-1.4.0
python setup.py install

POUR TESTER

 Pour tester la bonne installation du module elasticsearch pour python, télécharger le script de test test-elasticsearch.py et exécutez le sur votre serveur. Vérifiez qu'il n'y a pas d'erreur en sortie.

[agimus@agimus scripts]$ python test-elasticsearch.py

 

 

approve ÉTAPE SUIVANTE : Paramétrer Agimus-NG

  • No labels