From 6c1393c3b25f191aea23d3e737c9612b40c8d4af Mon Sep 17 00:00:00 2001 From: Jeremy Lecour Date: Wed, 28 Sep 2016 11:37:31 +0200 Subject: [PATCH] Nettoyage Elasticsearch et ELK --- HowtoELK.md | 7 ++--- HowtoElasticsearch.md | 72 +++++++++++++++++++++---------------------- 2 files changed, 39 insertions(+), 40 deletions(-) diff --git a/HowtoELK.md b/HowtoELK.md index 27288f6e..8e738c01 100644 --- a/HowtoELK.md +++ b/HowtoELK.md @@ -29,7 +29,6 @@ Elasticsearch est un serveur de base de donnée qui dispose d'une interface REST ~~~{.yaml} cluster.name: _cluster_name_ node.name: _node_name_ -network.host: 0.0.0.0 ~~~ On vérifie qu'on a bien un Java >= 1.7 activée @@ -58,7 +57,7 @@ Plus détails sur la bonne configuration d'Elasticsearch sont sur [HowtoElasticS # systemctl start elasticsearch ~~~ -Pour que le démon soit géré automatiquement par SystemD : +Pour que le démon soit géré automatiquement par systemd : ~~~ # systemctl enable elasticsearch @@ -96,7 +95,7 @@ Voir # systemctl start logstash ~~~ -Pour que le démon soit géré automatiquement par SystemD : +Pour que le démon soit géré automatiquement par systemd : ~~~ # systemctl enable logstash @@ -141,7 +140,7 @@ Documentation officielle : /dev/null -$ curl -s 'localhost:9200/_flush' | grep -qe '"ok":true' -$ if [ $? -eq 0 ]; then - rsync -a --delete /var/lib/elasticsearch/ /home/backup/elasticsearch/ - else - echo "Error when flushing ES translog indexes." - fi -$ curl -s -XPUT 'localhost:9200/_settings' -d '{"index.translog.disable_flush": false}' > /dev/null +# mkdir /home/backup-elasticsearch +# chown elasticsearch: /home/backup-elasticsearch ~~~ -Une sauvegarde plus avancée est d'utiliser les snaphosts, un exemple : +NB : en cas de cluster multi-nœuds, il faut penser que le filesystem doit être partagé (via NFS ou autre) car chaque nœud ne gère que ses propres données. + +Le dépôt doit être référencé dans la configuration `/etc/elasticsearch/elasticsearch.yml` : ~~~ -$ cd /srv/snapshots -$ for i in $(ls -1d snapshot-* | head -n -10 | sed s'/snapshot-snapshot_//g'); do curl -s -XDELETE "localhost:9200/_snapshot/backup/snaps hot_${i}"; done -$ date=$(date +%Y-%m-%d) -$ curl -s -XDELETE "localhost:9200/_snapshot/backup/snapshot_${date}" | grep -v acknowledged..true -$ curl -s -XPUT "localhost:9200/_snapshot/backup/snapshot_${date}?wait_for_completion=true" -o /tmp/es_snapshot_${date}.log +path.repo: ["/home/backup-elasticsearch"] ~~~ -Attention, en mode cluster il faut gérer des montages NFS sur les nœuds slaves car chacun écrit uniquement les données qu'il a ! +Après restart d'Elasticsearch on lui fait créer le snapshot **evobackup** : + +~~~ +# curl -XPUT 127.0.0.1:9200/_snapshot/evobackup -d '{"type": "fs", "settings": {"location": "/home/backup-elasticsearch/evobackup", "compress": true}}' +~~~ + +Enfin, dans un script qui tourne régulièrement, on provoque la fixation d'un snapshot : + +~~~ +date=$(date +%H) +curl -s -X DELETE "127.0.0.1:9200/_snapshot/evobackup/h${date}" | grep -v acknowledged..true +curl -s -X PUT "127.0.0.1:9200/_snapshot/evobackup/h${date}?wait_for_completion=true" -o /tmp/es_snapshot_h${date}.log +~~~ + +Ici, on crée un snapshot portant le numéro de l'heure courante. Il est supprimé avant d'être recréé afin d'avoir des snapshots "roulants". ## Principe de fonctionnement @@ -232,7 +232,7 @@ curl -X PUT localhost:9200/planet Créer un type de donnée nommé « hacker ». ~~~ -curl -X PUT localhost:9200/planet/hacker/_mapping -d @- <<< ' +curl -X PUT localhost:9200/planet/hacker/_mapping -d ' { "hacker": { "properties": { @@ -251,7 +251,7 @@ curl -X PUT localhost:9200/planet/hacker/_mapping -d @- <<< ' Créer un document de type hacker avec l'ID 1. ~~~ -curl -X PUT localhost:9200/planet/hacker/1 -d @- <<< '{"handle": "jean-michel", "age": 18}' +curl -X PUT localhost:9200/planet/hacker/1 -d '{"handle": "jean-michel", "age": 18}' ~~~ Voir son contenu.