-
-
Save webwurst/e580afa53ecb66f9be33 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# Ce fichier de configuration Logstash permet d'effectuer la copie d'index soit: | |
# - à l'intérieur d'un même cluster Elasticsearch | |
# - entre différents clusters Elasticsearch | |
# | |
# Utile dans le cas où nous voulons réindexer un index à l'aide de nouveaux mappings ou pour | |
# dupliquer la production vers un autre environnement de tests. | |
# | |
# Pour invoquer la commande: | |
# LS_HEAP_SIZE="2048m" /path/to/bin/logstash -w 2 -f copie-elasticsearch.conf | |
# | |
# Note: seulement les données sont copiées, pas les mappings associés. | |
# | |
# Afin d'accélérer au maximum la copie, il est conseillé de: | |
# - désactiver les rafraîchissements (refresh_interval) | |
# - désactiver les replicas | |
# | |
# Les étapes d'exploitation devraient donc être: | |
# | |
# 1. Spécifier l'adresse du serveur Elasticsearch utilisé: | |
# | |
# export ES_HOST="http://node.cluster.domain.com:9200" | |
# | |
# 2. Désactiver les rafraichissements et les replicas, soit: | |
# | |
# 1. Sur tous les index existants via l'API REST. | |
# Peut être utile pendant une copie, alors que les index existente déjà. | |
# | |
# curl -XPUT $ES_HOST/ul-*/_settings -d '{ "index.refresh_interval" : "-1" }' | |
# curl -XPUT $ES_HOST/ul-*/_settings -d '{ "index.number_of_replicas" : "0" }' | |
# | |
# 2. Pour les futurs index avec le template «ul-bulk-import». | |
# Très bonne stratégie à adopter avant même de procéder à la copie. | |
# | |
# curl -XPUT $ES_HOST/_template/ul-bulk-import -d @ul-bulk-import.json | |
# | |
# 3. Procéder à la copie. | |
# Bien sûr, ajuster le fichier de paramètre avant de lancer la commande. | |
# | |
# LS_HEAP_SIZE="2048m" /opt/logstash/bin/logstash -w 2 -f copie-elasticsearch.conf | |
# | |
# 4. Optimiser les indexes à l'aide d'un «force merge» (optionnel). | |
# | |
# curl -XPOST $ES_HOST/ul-*/_forcemerge?max_num_segments=5 | |
# | |
# 5. Supprimer le template «ul-bulk-import». | |
# | |
# curl -XDELETE $ES_HOST/_template/ul-bulk-import | |
# | |
# 6. Réactiver les rafraichissement et/ou les replicas selon ce qui est désiré dans | |
# l'environnement de destination. | |
# | |
# curl -XPUT $ES_HOST/ul-*/_settings -d '{ "index.refresh_interval" : "15s" }' | |
# curl -XPUT $ES_HOST/ul-*/_settings -d '{ "index.number_of_replicas" : "1" }' | |
# | |
# TODO: | |
# - Il serait peut-être bien de regarder le paramètre index.translog.flush_threshold_size et voir | |
# si cela peut avoir un impact sur les performances d'import masssif. | |
# | |
# https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-translog.html | |
# | |
############################################################################### | |
# | |
# Entrée à partir d'Elasticsearch | |
# | |
# Pour un plus grand parralélisme, plusieurs blocs d'entrée avec des patterns différents peuvent | |
# être utilisés. | |
# | |
# Documentation: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-elasticsearch.html | |
# | |
input { | |
elasticsearch { | |
# Éviter de spécifier le «master node». | |
# De préférence, spécifier des «client nodes» ou des «data nodes». | |
hosts => [ "localhost" ] | |
index => "ul-index1-2016.03.*" | |
query => '{"query": { "match_all": {} } }' | |
docinfo => true | |
# Paramètres de performance | |
scan => true | |
size => 1000 # Attention: nombre par shard | |
scroll => "5m" | |
} | |
#elasticsearch { | |
# | |
# hosts => [ "localhost" ] | |
# index => "ul-index2-2016.03.*" | |
# | |
# query => '{"query": { "match_all": {} } }' | |
# docinfo => true | |
# | |
# # Paramètres de performance | |
# | |
# scan => true | |
# size => 1000 # Attention: par shard. | |
# scroll => "5m" | |
# | |
#} | |
} | |
############################################################################### | |
# | |
# Filtres | |
# | |
# Généralement, lorsqu'on veut une copie complète et identique on ne spécifie | |
# pas de filtres qui altère les événements. Cependant, il est possible de | |
# copier qu'un sous-ensemble des événements en éliminant qu'une portion de | |
# ces derniers. | |
# | |
# On ajoute aussi le filtre metrics permettant de visualiser la progression de | |
# la copie. | |
# | |
filter { | |
#drop { | |
# percentage => 50 | |
#} | |
#ruby { | |
# code => "event.cancel if rand <= 0.40" | |
#} | |
#if [property] == "value" { | |
# drop { } | |
#} | |
# Permet d'empêcher la copie d'index débutant par un point. | |
# Généralement : .kibana et .marvel. | |
# | |
#if [@metadata][_index] =~ /^\./ { | |
# drop { } | |
#} | |
metrics { | |
meter => "events" | |
add_tag => "metric" | |
flush_interval => 10 | |
} | |
} | |
############################################################################### | |
# | |
# Sortie vers Elasticsearch | |
# | |
# Documentation: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html | |
# | |
output { | |
if "metric" in [tags] { | |
stdout { | |
codec => line { | |
format => "count: %{[events][count]} rate: %{[events][rate_1m]}" | |
} | |
} | |
} else { | |
elasticsearch { | |
# Éviter de spécifier le «master node». | |
# De préférence, spécifier des «client nodes» ou des «data nodes». | |
hosts => [ "localhost" ] | |
#index => "copie.%{[@metadata][_index]}" | |
index => "%{[@metadata][_index]}" | |
document_type => "%{[@metadata][_type]}" | |
document_id => "%{[@metadata][_id]}" | |
# Paramètres de performance | |
flush_size => 250 | |
idle_flush_time => 10 | |
workers => 4 | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment