[KIBANA] Demande aide statisitques / pourcentages

Bonjour Tout le monde,

Je travaille en ce moment sur des logs concernant des appels téléphonique. Grâce à un filtre grok j'arrive à extraire les lignes ou il est indiqué si l'appel est passé ou non.
Je stocke ces lignes dans 2 variables différentes :
DAS1 pour les appels qui sont passés.
DAS2 pour les appels qui ont échoués.

J'ai mappé les 2 variables en tant que keyword.
Maintenant j'aimerais obtenir grâce a kibana un pourcentage d'appel reçue et échoues mais je ne sais pas comment faire.

Si vous pouvez m'aider.

Merci !

Si tu avais mis tout ça dans une même variable ça serait plus simple:

{
  "statut":"ok"
}
{
  "statut":"ko"
}

Une aggregation type terms te donnera le pourcentage.

Donc si j'ai bien compris le mieux ça serai que je créer une variable qui stocke toutes les lignes au lieu de 2 ?
Mais comment elasticsearch va t'il différencier les 2 types de lignes ?

Ce que je stocke moi c'est ceci pour les appels passés :

2017-04-13T10:31:55.432 Int 22000 ##### EI_COF_SICRC04_DistriSortant_STR-v1 - 0071029d90c9b5f7 -  Appel Campagne : C_PREREC_GLOBAL@AG_PREREC_GLOB  Appel : 647152739 Chain ID : 175129311 Ditribution : OK

Et pour les appels non distribué c'est a peu prés la même chose sauf KO à la fin.

Ce que vous avez mis il s'agit du mappage ?

Merci pour votre aide !

Oui un seul champ.

C'est dans ta couche d'ingestion que tu dois faire cette extraction.

Je suis désolé mais j'aurais besoin de plus de détails svp je suis encore qu'un simple débutant :grin: :grin: Je ne vois pas c'est quoi la couche ingestion

Comment envoies-tu des documents json dans Elasticsearch?

La réponse à cette question est ta couche d'ingestion.

Je l'envoie via logstash. Donc je doit modifier mon filtre grok.

Mes 2 filtres grok sont les suivant :

match => {"message" => "(?(?:^|\n)[^\n]Ditribution\s:\sOK[^\n](?:\n|$))"}
match => {"message" => "(?(?:^|\n)[^\n]Ditribution\s:\sKO[^\n](?:\n|$))"}

Donc si je créer une seule variable que je nomme DAS tout court comment pourrais-je intégrer ce que vous m'avez dit précédemment ?

{ "statut":"ok"
}
{
"statut":"ko"
})

Bon je ne suis pas expert en Regex mais disons pour simplifier que tu fasses un seul pattern Grok du style:

filter {
  grok {
    match => { "message" => "... Ditribution : %{WORD:statut}" }
  }
}

Cela devrait te générer en sortie des documents JSON qui ressemblent à:

{
  ...
  "statut": "OK"
}
{
  ...
  "statut": "KO"
}

Il suffit ensuite de faire une terms aggregation dans elasticsearch ou un pie chart dans kibana basé sur une terms aggregation sur le champ statut.

Super merci bcp David ca a marché !!!
Juste une dernière petite question : Le %WORD me retire uniquement le mot suivant, mais si je veux par exemple extraire une reste de phrase cela est possible ?

Par exemple pour la ligne suivante extraire ce qui est en gras :

2017-04-13T11:18:08.873 Int 22000 ##### SICRC04_STR_DistriTransfert_v16 - 00f80273c6821ae8 - Distribution : Erreur Distribution - KO

Car si j'utilise ici le %WORD il m'extraira uniquement le mot Erreur.

MERCI bcp encore pr ton aide !!

GREEDYDATA

Peut-être ? Ou ta propre regex si tu veux. Regarde https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html

Ca marche Merci Encore et bnne journée :slight_smile: :slight_smile:

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.