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.
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.
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"
}
À 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.