Child pages
  • Mise à jour vers ELK version 2.x
Skip to end of metadata
Go to start of metadata

Si vous avez installé, les premières versions de Kibana, vous avez dû mettre en place des versions 1.x des briques ELK. Afin de faciliter la migration vers des versions 2.x, voici une procédure de mise à jour pour Centos qui peut être adaptée à d'autres plateformes.

Installation de l'outil d'aide à la migration

Doc: https://github.com/elastic/elasticsearch-migration/tree/1.x

Sur les nœuds du cluster
[root@agimus:/usr/share/elasticsearch]$ cd /usr/share/elasticsearch/
[root@agimus:/usr/share/elasticsearch]$ ./bin/plugin -i migration -u https://github.com/elastic/elasticsearch-migration/releases/download/v1.18/elasticsearch-migration-1.18.zip
-> Installing migration...
Trying https://github.com/elastic/elasticsearch-migration/releases/download/v1.18/elasticsearch-migration-1.18.zip...
Downloading ...............................................................DONE
Installed migration into /usr/share/elasticsearch/plugins/migration
[root@agimus:/usr/share/elasticsearch]$ 

Page de vérification :

http://agimus.univ.fr/elasticsearch/_plugin/migration/

D'après la page de vérification, il nous faudra être attentif uniquement à la modification du format des booléens (qui seront stockés en 0/1 au lieu de T/F). Les booléens concernés sont coursmoodle:mdl_actif, moodledblog:mdl_actif.

Procédure de migration

https://www.elastic.co/guide/en/elasticsearch/reference/master/restart-upgrade.html

Interdire le déplacement/allocation des shards

Si on a plusieurs nœuds, lorsqu'on va éteindre un nœud, le cluster va essayer de déplacer ses shards. On ne souhaite pas ce comportement donc on exécute la commande suivante :

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.enable": "none"
  }
}

Extinction de tous les nœuds et maj

https://www.elastic.co/guide/en/elasticsearch/reference/master/rolling-upgrades.html#upgrade-node

  • Une fois les nœuds éteints, mise à jour du fichier /etc/yum.repos.d/elasticsearch.repo et mise à jour

    [elasticsearch-2.x]
    name=Elasticsearch repository for 2.x packages
    baseurl=https://packages.elastic.co/elasticsearch/2.x/centos
    gpgcheck=1
    gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    yum update
    [root@agimus:/etc/yum.repos.d]$ yum update elasticsearch
    Modules complémentaires chargés : fastestmirror
    base                                                                              | 3.6 kB  00:00:00     
    elasticsearch-2.x                                                                 | 2.9 kB  00:00:00     
    extras                                                                            | 3.4 kB  00:00:00     
    updates                                                                           | 3.4 kB  00:00:00     
    elasticsearch-2.x/primary_db                                                      | 7.7 kB  00:00:00     
    Loading mirror speeds from cached hostfile
     * base: ftp.ciril.fr
     * extras: centos.quelquesmots.fr
     * updates: ftp.ciril.fr
    Résolution des dépendances
    --> Lancement de la transaction de test
    ---> Le paquet elasticsearch.noarch 0:1.4.5-1 sera mis à jour
    ---> Le paquet elasticsearch.noarch 0:2.4.1-1 sera utilisé
    --> Résolution des dépendances terminée
    
    Dépendances résolues
    
    =========================================================================================================
     Package                   Architecture       Version                Dépôt                         Taille
    =========================================================================================================
    Mise à jour :
     elasticsearch             noarch             2.4.1-1                elasticsearch-2.x              26 M
    
    Résumé de la transaction
    =========================================================================================================
    Mettre à jour  1 Paquet
    
    Taille totale des téléchargements : 26 M
    Is this ok [y/d/N]: y
    Downloading packages:
    Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
    elasticsearch-2.4.1.rpm                                                           |  26 MB  00:00:03     
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Mise à jour  : elasticsearch-2.4.1-1.noarch                                                        1/2 
    warning: /etc/elasticsearch/elasticsearch.yml created as /etc/elasticsearch/elasticsearch.yml.rpmnew
    warning: /etc/sysconfig/elasticsearch created as /etc/sysconfig/elasticsearch.rpmnew
      Nettoyage    : elasticsearch-1.4.5-1.noarch                                                        2/2 
      Vérification : elasticsearch-2.4.1-1.noarch                                                        1/2 
      Vérification : elasticsearch-1.4.5-1.noarch                                                        2/2 
    
    Mis à jour :
      elasticsearch.noarch 0:2.4.1-1                                                                         
    
    Terminé !
    
    

    La mise à jour génère une erreur suite à une erreur dans le rpm. Pour l'éviter, il faut commenter la ligne suivante dans le fichier /etc/sysconfig/elasticsearch

    /etc/sysconfig/elasticsearch
    #CONF_FILE=/etc/elasticsearch/elasticsearch.yml

    Il faut également modifier le  fichier de configuration

    /etc/elasticsearch/elasticsearch.yml
    # Les nœuds sont par défaut isolés. Il faut spécifiquement indiquer que l'on souhaite publier le node sur l'extérieur
    + network.host: _global_
    
    
  • Mise à jour du plugin kopf, retrait de migration et ajout de delete-by-query (qui va permettre de supprimer les anciennes trace)

    MAJ kopf
    [root@agimus:/etc/yum.repos.d]$ /usr/share/elasticsearch/bin/plugin remove migration
    -> Removing migration...
    Removed migration
    [root@agimus:/etc/yum.repos.d]$ /usr/share/elasticsearch/bin/plugin remove kopf
    -> Removing kopf...
    Removed kopf
    [root@agimus:/etc/yum.repos.d]$ /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf/2.x
    -> Installing lmenezes/elasticsearch-kopf/2.x...
    Trying https://download.elastic.co/lmenezes/elasticsearch-kopf/elasticsearch-kopf-2.x.zip ...
    Trying https://search.maven.org/remotecontent?filepath=lmenezes/elasticsearch-kopf/2.x/elasticsearch-kopf-2.x.zip ...
    Trying https://oss.sonatype.org/service/local/repositories/releases/content/lmenezes/elasticsearch-kopf/2.x/elasticsearch-kopf-2.x.zip ...
    Trying https://github.com/lmenezes/elasticsearch-kopf/archive/2.x.zip ...
    Trying https://github.com/lmenezes/elasticsearch-kopf/archive/master.zip ...
    Downloading ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................DONE
    Verifying https://github.com/lmenezes/elasticsearch-kopf/archive/master.zip checksums if available ...
    NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)
    Installed kopf into /usr/share/elasticsearch/plugins/kopf
    [root@agimus:/etc/yum.repos.d]$ /usr/share/elasticsearch/bin/plugin install delete-by-query
    -> Installing delete-by-query...
    Trying https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/delete-by-query/2.4.1/delete-by-query-2.4.1.zip ...
    Downloading ..DONE
    Verifying https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/delete-by-query/2.4.1/delete-by-query-2.4.1.zip checksums if available ...
    Downloading .DONE
    Installed delete-by-query into /usr/share/elasticsearch/plugins/delete-by-query
    
    
    
  • Redémarrage des nœuds et vérification de leur intégration dans le cluster

    systemctl daemon-reload
    service elasticsearch start

Autoriser l'allocation de shards

Une fois le statut du cluster à orange (quand tous les nœuds auront récupérés leurs primary shards), vous pouvez autoriser l'allocation de shard

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.enable": "all"
  }
} 

 

Mise à jour de logstash

Nouveau fichier repo yum

/etc/yum.repos.d/logstash.repo
 [logstash-2.4]
name=logstash repository for 2.4 packages
baseurl=https://packages.elastic.co/logstash/2.4/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

Puis yum update logstash

Ajout des plugins

/opt/logstash/bin/logstash-plugin install logstash-filter-translate
/opt/logstash/bin/logstash-plugin install logstash-filter-cidr
/opt/logstash/bin/logstash-plugin install logstash-filter-elasticsearch
/opt/logstash/bin/logstash-plugin install logstash-input-LDAPSearch

Ajout dans le filtre elasticsearch

[root@agimus:/home/elasticsearch]$ diff /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-filter-elasticsearch-3.0.2/lib/logstash/filters/elasticsearch.rb.orig /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-filter-elasticsearch-3.0.2/lib/logstash/filters/elasticsearch.rb
71a72,79
>   # Types to search in
>   config :type, :validate => :string, :default => ""
> 
>   # Ignore errors; assume empty result set (query failed)
>   # Unsetting this turns off error logging as exceptions are unhandled
>   # This can make debugging the query somewhat tricky...
>   config :fail_on_error, :validate => :string, :default => "true"
> 
86c94
<       params = { :q => query_str, :size => result_size, :index => @index }
---
>       params = { :q => query_str, :size => result_size, :index => @index , :type => @type}
100,101c108,113
<       @logger.warn("Failed to query elasticsearch for previous event", :index => @index, :query => query_str, :event => event, :error => e)
<       @tag_on_failure.each{|tag| event.tag(tag)}
---
>         if fail_on_error == "true"
>           @logger.warn("Failed to query elasticsearch for previous event", :index => @index, :query => query_str, :event => event, :error => e)
>           @tag_on_failure.each{|tag| event.tag(tag)}
>         else
>           event["query_failed"] = query_str
>         end
[root@agimus:/home/elasticsearch]$ 

 

Mise à jour des fichiers de conf

Il faut modifier :

  • output elasticsearch :
    • host devient hosts
    • suppression des lignes cluster et protocol

Ces modifications sont déjà incluses dans la branche master du dépôt github

Mise à jour de kibana

  • Download et décompression de la version 4.6 : kibana-4.6.3-linux-x86_64.tar.gz
  • Reprise du nouveau fichier de conf et ajout de nos modifications

     

  • Modification du owner du dossier

    chown -R elasticsearch: kibana-4
  • Modification du owner du process

    /etc/systemd/system/multi-user.target.wants/kibana4.service
    [Unit]
    Description=Kibana4 ElasticSearch GUI
    Requires=network.target
    After=network.target
    [Service]
    Type=simple
    User=elasticsearch
    Group=elasticsearch
    ExecStart=/home/elasticsearch/kibana-4/bin/kibana
    SuccessExitStatus=143
    Restart=always
    StandardOutput=null
    StandardError=journal
    [Install]
    WantedBy=multi-user.target

 

  • No labels