web-dev-qa-db-fra.com

Voir toutes les requêtes elasticsearch exécutées

Je veux voir toutes les requêtes exécutées sur une instance elasticsearch. Est-il possible d'exécuter elasticsearch en mode débogage ou de lui dire de stocker toutes les requêtes exécutées contre lui?

Le but est de voir quelles requêtes sont lancées à partir d'un logiciel à l'aide d'elasticsearch pour l'analyse.

39
paweloque

Dans les versions d'ElasticSearch antérieures à 5, vous pouvez accomplir cela en modifiant le fichier de configuration ElasticSearch.yml. Tout en bas de ce fichier, vous pouvez ajuster le temps d'enregistrement pour tout enregistrer:

index.search.slowlog.threshold.query.warn: 10s
index.search.slowlog.threshold.query.info: 5s
index.search.slowlog.threshold.query.debug: 2s
index.search.slowlog.threshold.query.trace: 500ms

index.search.slowlog.threshold.fetch.warn: 1s  
index.search.slowlog.threshold.fetch.info: 800ms
index.search.slowlog.threshold.fetch.debug: 500ms
index.search.slowlog.threshold.fetch.trace: 200ms

index.indexing.slowlog.threshold.index.warn: 10s
index.indexing.slowlog.threshold.index.info: 5s
index.indexing.slowlog.threshold.index.debug: 2s
index.indexing.slowlog.threshold.index.trace: 500ms

Ajustez les paramètres et redémarrez votre nœud, puis consultez les journaux pour afficher les requêtes exécutées sur votre nœud. Notez que les fichiers journaux de production augmenteront rapidement en taille.

28
Nathan

Dans la version 5.x, vous devez définir une journalisation de journal lente par index.

Ligne de commande:

curl -XPUT 'http://localhost:9200/myindexname/_settings' -d '{
"index.indexing.slowlog.threshold.index.debug" : "0s",
"index.search.slowlog.threshold.fetch.debug" : "0s",
"index.search.slowlog.threshold.query.debug" : "0s"
}'

Ou, si vous utilisez Kibana , accédez à la barre Dev Tools et entrez:

PUT /myindexname/_settings 
{"index.indexing.slowlog.threshold.index.debug": "0s", 
"index.search.slowlog.threshold.fetch.debug" : "0s", 
"index.search.slowlog.threshold.query.debug": "0s"}

# 1: Appliquer à TOUS les indices

Vous pouvez appliquer le paramètre à TOUS les index avec la commande suivante:

PUT /_all/_settings 
{"index.indexing.slowlog.threshold.index.debug": "0s", 
"index.search.slowlog.threshold.fetch.debug" : "0s", 
"index.search.slowlog.threshold.query.debug": "0s"}

# 2: Conserver les paramètres existants

Si vous ne voulez pas écraser les paramètres existants, mais simplement en ajouter de nouveaux, ajoutez '' 'preserve_existing = true' '' après _settings, comme ceci:

PUT /_all/_settings?preserve_existing=true 
{"index.indexing.slowlog.threshold.index.debug": "0s", 
"index.search.slowlog.threshold.fetch.debug" : "0s", 
"index.search.slowlog.threshold.query.debug": "0s"}

La demande ci-dessus ajoutera UNIQUEMENT les paramètres s'ils n'existent pas. Cela ne les changera pas s'ils sont déjà là.

# 3: Tous les paramètres de journal disponibles

Tous les paramètres de connexion lente disponibles sont ici et ci-dessous pour votre référence:

PUT /test_index/_settings
{
"index.search.slowlog.threshold.query.warn": "60s",
"index.search.slowlog.threshold.query.info": "5s",
"index.search.slowlog.threshold.query.debug": "1s",
"index.search.slowlog.threshold.query.trace": "0.1s",
"index.search.slowlog.threshold.fetch.warn": "30s",
"index.search.slowlog.threshold.fetch.info": "5s",
"index.search.slowlog.threshold.fetch.debug": "1s",
"index.search.slowlog.threshold.fetch.trace": "0.1s",
"index.indexing.slowlog.threshold.index.warn": "6s",
"index.indexing.slowlog.threshold.index.info": "5s",
"index.indexing.slowlog.threshold.index.debug": "1s",
"index.indexing.slowlog.threshold.index.trace": "0.1s",
"index.indexing.slowlog.level": "info",
"index.indexing.slowlog.source": "1000"
}
12
IvanD

À partir de la version 5, ElasticSearch facture de l'argent pour cette fonctionnalité. Il s'appelle "Journal d'audit" et fait maintenant partie du X-Pack. Il existe une licence de base disponible gratuitement, mais cette licence ne vous offre qu'une fonctionnalité de surveillance simpliste. L'authentification, la journalisation des requêtes et toutes ces choses plutôt basiques coûtent maintenant de l'argent.

8
Toumal