Filebeat utilise des template de mapping (pour chaque version de filebeat, un nouveau template est créé)
Donc l'index créé tous les jours par filebeat a un mapping qui provient de ce template
Il y a beaucoup de champs défini qui proviennent de la déclaration de tous les modules filebeat (https://github.com/elastic/beats/blob/master/filebeat/module/nginx/access/_meta/fields.yml)
Si on a besoin de déclarer de nouveaux champs, on peut créer son propre template qui va matcher aussi les index filebeat-* et qui va surcharger les templates de filebeat
Alternative : on peut vérifier que le champs n'existe pas déjà dans les champs prédéfini de filebeat. Par exemple le $status de nginx (code retour http) correspond au champs http.response.status_code
Il suffit que le json écrit par nginx ait une clé qui correspond pour le status pour avoir le bon mapping
https://www.elastic.co/guide/en/beats/filebeat/master/configuration-template.html
Exemple pour le field 'status' :
for index in $(cat liste_index); do echo $index; curl -s http://elastic/$index/_mapping | jq ".\"$index\".mappings.doc.properties.status"; done
Dans la plupart des cas, on peut maintenant oublier logstash et utiliser les ingest node (pipeline) d'elasticsearch
EFK (Elasticsearch, Filebeat, Kibana)
alternative to _cat api ;)
Vous le savez peut-être, Algolia trie les documents lors de l’indexation, et non lors de la recherche. La raison est simple : c’est beaucoup plus rapide lors des recherches si les documents sont déjà triés sur le disque dur ! Cela permet, entre autre, de s’arrêter dès les dix premiers résultats trouvés – plutôt que de récupérer les 4 millions de hits et de les trier en mémoire juste pour remonter le top 10…
Amazon Elasticsearch access control may be based on IAM account with signed request mechanism
One way not to rewrite all applications is using such a proxy
woot nice! ça peut être bien utile
via Doo
Ok donc cet article m'a été vraiment utile.. à garder en cas d'autres problèmes avec ES
for shard in $(curl -XGET http://localhost:9200/_cat/shards | grep UNASSIGNED | awk '{print $2}'); do
curl -XPOST 'localhost:9200/_cluster/reroute' -d '{
"commands" : [ {
"allocate" : {
"index" : "t37",
"shard" : $shard,
"node" : "datanode15",
"allow_primary" : true
}
}
]
}'
sleep 5
done
Syntaxe pour faire des recherches dans kibana
Pratique pour dump de petits indexes importants comme le .kibana (définition des dashboards)
Pour envoyer direct dans ES depuis rsyslog
(se passer de logstash devient donc possible dans certains cas)
Le système de plugin d'elasticsearch est vraiment bien foutu.
Quelques plugins sympa pour avoir un aperçu de la santé de son cluster :
https://github.com/karmi/elasticsearch-paramedic
https://github.com/mobz/elasticsearch-head
https://github.com/lukas-vlcek/bigdesk
Pour les installer, c'est à chaque fois pareil, en une ligne :
/usr/share/elasticsearch/bin/plugin -install lukas-vlcek/bigdesk
/usr/share/elasticsearch/bin/plugin -install karmi/elasticsearch-paramedic
/usr/share/elasticsearch/bin/plugin -install mobz/elasticsearch-head
Pour savoir quels plugins sont installés et par quelle urls y accéder :
curl -s -XGET 'http://localhost:9200/_nodes?pretty' | grep plugin
Je me demandais pourquoi le status de mes index étaient à yellow, en fait c'est tout à fait normal dans un cluster mono node :-)
Pour exposer du RO ES sur certains index, à certaines personnes..
Pour backup son elasticsearch
Attention le snapshot n'est pas restaurable d'une version à une autre.. j'ai eu ce problème et j'ai utilisé https://github.com/mallocator/Elasticsearch-Exporter
Marche bien!
Marvel, nouveau produit elasticsearch, pour résumer :
The dashboard displays the essentials metrics you need to know that your cluster is healthy. The dashboard also provides an overview of your nodes and indices, displayed in two clean tables along with the relevant key metrics. These tables serve as an entry point to more details on the Node Statistics and Index Statistics dashboards, where you can see more than 90 different metrics plotted over time. Simply click on a table cell or select multiple nodes/indices to compare and you’ll be transferred to the relevant place in the detailed dashboard.
index.blocks.read_only
Set to true to have the index read only, false to allow writes and metadata changes.
Sympa de pouvoir requeter (get delete etc) avec des REST API
Logstash c'est bien.
En fait c'est mieux avec ses deux copains : elasticsearch et kibana !
Logstash permet de :
1) récupérer "des choses" (parmi des input, comme par exemple des logs),
2) de les traiter (par exemple, appliquer des regex pour récupérer des champs),
3) de balancer la structure obtenue après traitement "quelquepart" (il existe des tas d'output, par exemple : elasticsearch)
Une fois que vous avez ça en place, vous pouvez visualiser vos données stockées dans elasticsearch avec kibana! (et ça donne ça : http://www.elasticsearch.org/overview/kibana/)
Sympa pour exploiter des access.log par exemple :)