RousselTMLEARNING

Observabilité

Explorer ses données dans Discover : KQL, Lucene et ES|QL

Rechercher et analyser des logs dans Kibana Discover : filtres, KQL, syntaxe Lucene, et le langage ES|QL pour agréger, calculer et enrichir les données en une requête.

1. Discover #

La recherche au quotidien.

Prise en main #

  • Choisir la data view et la plage de temps (en haut à droite).
  • Ajouter des colonnes depuis la liste des champs ; cliquer sur un champ affiche ses 5 valeurs les plus fréquentes.
  • Ajouter des filtres en un clic (+/-) depuis un document.
  • Enregistrer la recherche pour la réutiliser dans un dashboard ou la partager.

2. KQL et Lucene #

Filtrer les documents.

KQL #

service.name : "checkout" and http.response.status_code >= 500
message : "timeout" and not host.name : web-0*
log.level : (error or critical)
user_agent.original : *bot*
http.request.method : POST and url.path : "/api/panier"
BesoinKQLLucene
Égalitéstatus : 500status:500
Intervallebytes >= 1000bytes:[1000 TO *]
Jokerhost : web-*host:web-*
Expression régulièreNonhost:/web-[0-9]+/
Proximité, flouNonmessage:"erreur base"~3, timout~
Bonne Pratique : KQL suffit dans 90 % des cas et propose l'autocomplétion des champs. Basculez en Lucene seulement pour les expressions régulières ou la recherche floue.

3. ES|QL #

Un langage par étapes.

Principe #

ES|QL (Elasticsearch Query Language) enchaîne des commandes séparées par | : on part d'une source, on filtre, on calcule, on agrège, on trie. Il est disponible dans Discover (mode ES|QL), dans Lens et dans les règles d'alerte.

FROM logs-*
| WHERE @timestamp > NOW() - 1 hour AND http.response.status_code >= 500
| STATS erreurs = COUNT(*) BY service.name
| SORT erreurs DESC
| LIMIT 10
FROM logs-*
| EVAL duree_s = event.duration / 1000000000
| STATS p95 = PERCENTILE(duree_s, 95), requetes = COUNT(*) BY url.path
| WHERE requetes > 100
| SORT p95 DESC
FROM logs-*
| GROK message "%{IP:client} %{WORD:methode} %{URIPATHPARAM:chemin} %{NUMBER:statut:int}"
| STATS total = COUNT(*) BY statut, BUCKET(@timestamp, 5 minutes)
À savoir : ES|QL sait analyser des champs à la volée (GROK, DISSECT), enrichir (ENRICH, LOOKUP JOIN selon la version) et découper le temps (BUCKET) : de nombreuses analyses ne demandent plus de visualisation.

Articles liés

Kibana : rôle, installation et premiers pas

Ce qu'est Kibana dans la suite Elastic, comment l'installer avec Elasticsearch (start-local, Docker), le conn…

Visualiser dans Kibana : Lens, dashboards et objets enregistrés

Construire des visualisations avec Lens, assembler des dashboards interactifs (filtres, contrôles, liens), et…

Elastic Observability : logs, infrastructure, APM et synthétiques

Les fonctions d'Elastic Observability : exploration des logs, inventaire d'infrastructure avec Elastic Agent …

Pour aller plus loin