# Logstash - Ajout de patterns

**URL:** https://discuss.elastic.co/t/logstash-ajout-de-patterns/37456
**Category:** Discussions en français
**Created:** [December 17, 2015, 11:02am UTC](https://discuss.elastic.co/t/logstash-ajout-de-patterns/37456 "2015-12-17T11:02:00Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Flo\_](https://avatars.discourse-cdn.com/v4/letter/f/76d3ee/32.png) [@Flo\_](https://discuss.elastic.co/u/Flo_)
#### Post date: [December 17, 2015, 11:02am UTC](https://discuss.elastic.co/t/logstash-ajout-de-patterns/37456/1 "2015-12-17T11:02:00Z")

</div>

Bonjour à tous,

Je suis nouveau sur logstash et je travaille actuellement sur une extraction de données depuis un fichier log (Apache) en vu d'être utilisées dans ES.

Voici le type de données log que je traite : ("access\_log")

```auto
94.219.44.54 - - [09/Dec/2015:00:00:13 +0100] "GET /r17.gif?rnd=0-1-13088-1-13088-27275-4262501361-xrqkaMOXebiyfcifcaeqOgyO8BFc8a8W_SgDSWu4_mgDSWvaW@wW5ajkdWGdeduyIrKGacJZG4cGbfaawGOiabaagaaGacGayafQe2j1DhrVBJiUyw1ZlMH2lNbYB2qa HTTP/1.1" 200 43 "https://www.website.com/search/?text=hager+antennen++sockelleiste&filter=&aliasname=" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0" PID=2708 T=546 XF=[94.219.44.54] H=10.240.1.252

```

Mon fichier .conf est le suivant : (apache.conf)

```auto
input {
     file {
         path => "C:/Users/me/Desktop/P5 - Apache/Log/access_log"
         start_position => "beginning"
     }
}
filter {
	grok {
              patterns_dir => "./patterns
              match => { "message" => "%{COMBINEDAPACHELOG}"}
        }
        date { match => ["timestamp" , "dd/MMM/yyyy:HH:mm:ss Z"]}
}
output {
      elasticsearch { hosts => ["10.155.51.12:9201"]}
      stdout { codec => rubydebug }
}

```

Mon patterns est le suivant : (patterns)

```auto
PID PID=(\d*)
SERVERIP H=(\d.*)
DURATION T=(\d*)

COMMONAPACHELOG %{IPORHOST:clientip} %{HTTPDUSER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{PID:pid} 

COMBINEDAPACHELOG %{COMMONAPACHELOG} %{QS:referrer} %{QS:agent}

```

Mon résultat est le suivant :

```auto
{
       "message" => "94.219.44.54 - - [09/Dec/2015:00:00:13 +0100] \"GET /r17.gi
f?rnd=1-1-13088-1-13088-27275-4262501361-xrqkaMOXebiyfcifcaeqOgyO8BFc8a8W_SgDSWu
4_mgDSWvaW@wW5ajkdWGdeduyIrKGacJZG4cGbfaawGOiabaagaaGacGayafQe2j1DhrVBJiUyw1ZlMH
2lNbYB2qa HTTP/1.1\" 200 43 \"https://www.website.com/search/?text=hager+a
ntennen++sockelleiste&filter=&aliasname=\" \"Mozilla/5.0 (Windows NT 6.1; WOW64;
 rv:35.0) Gecko/20100101 Firefox/35.0\" PID=2708 T=490 XF=[94.219.44.54] H=10.24
0.1.252",
      "@version" => "1",
    "@timestamp" => "2015-12-17T10:41:55.018Z",
          "host" => "HQLP7575SN1396",
          "path" => "C:/Users/me/Desktop/P5 - Apache/Log/access_log"
,
          "tags" => [
        [0] "_grokparsefailure"
    ]
}

```

Mon problème est le suivant :

Je tente d'extraire des données supplémentaires (PID, H(serverip) et T(duration)) mais je n'arrive pas à intégrer des requètes Regex ou lier mon .conf à mon patterns. Je n'ai pour l'instant pas réussi à trouver une réponse viable dans la doc.  
Auriez-vous éventuellement une piste?

Merci par avance,  
Florian.

---

<div class="post-metadata">

### Author: ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)
#### Post date: [December 18, 2015, 12:56pm UTC](https://discuss.elastic.co/t/logstash-ajout-de-patterns/37456/2 "2015-12-18T12:56:19Z")

</div>

Comme ça, je n'ai pas de piste. Et j'avoue être très moyen (et encore je suis généreux) en regex!

Mais j'essaierais de simplifier au maximum sans partir d'un ligne complète mais juste du bout qui ne passe pas.

Eventuellement en m'aidant de [http://grokconstructor.appspot.com/](http://grokconstructor.appspot.com/)

---

<div class="post-metadata">

### Author: ![Flo\_](https://avatars.discourse-cdn.com/v4/letter/f/76d3ee/32.png) [@Flo\_](https://discuss.elastic.co/u/Flo_)
#### Post date: [December 20, 2015, 11:22am UTC](https://discuss.elastic.co/t/logstash-ajout-de-patterns/37456/3 "2015-12-20T11:22:24Z")

</div>

Merci pour ton aide! Je vais explorer cette piste et je posterai mon résultat.

---

<div class="post-metadata">

### Author: ![Flo\_](https://avatars.discourse-cdn.com/v4/letter/f/76d3ee/32.png) [@Flo\_](https://discuss.elastic.co/u/Flo_)
#### Post date: [January 12, 2016, 4:41pm UTC](https://discuss.elastic.co/t/logstash-ajout-de-patterns/37456/4 "2016-01-12T16:41:38Z")

</div>

La solution était de modifier le pattern de la manière suivante ;

> COMMONAPACHELOG %{IPORHOST:clientip} %{HTTPDUSER:ident} %{USER:auth} [%{HTTPDATE:timestamp}] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-)

> COMBINEDAPACHELOG %{COMMONAPACHELOG} %{QS:referrer} %{QS:agent} PID=%{NUMBER:pid:int} T=%{NUMBER:duration:int} XF=([[\d.]\*]) H=%{IP:serverip}

Détailler l'intégralité de la ligne en intégrant uniquement les nouvelles variables désirées sous la syntaxe décrite ci-dessus.  
En cas d'éléments non désirés, simplement remplacer par le code Regex entre parenthèses.

Merci pour ton assistance @dadoonet, j'espère que cette réponse aidera d'autres nécessiteux.

Edit : Ne pas oublier de préciser le TYPE de la variable que nous voulons obtenir en sortie : par défaut, même si vous tenter d'extraire un NUMBER, le type de la réponse sera un String.

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [July 6, 2017, 1:50pm UTC](https://discuss.elastic.co/t/logstash-ajout-de-patterns/37456/5 "2017-07-06T13:50:06Z")

</div>


