# Writing multiline grok

**URL:** https://discuss.elastic.co/t/writing-multiline-grok/178214
**Category:** Logstash
**Created:** [April 24, 2019, 10:02am UTC](https://discuss.elastic.co/t/writing-multiline-grok/178214 "2019-04-24T10:02:07Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![Vikash\_Singh1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vikash_singh1/32/42119_2.png) [@Vikash\_Singh1](https://discuss.elastic.co/u/Vikash_Singh1)
#### Post date: [April 24, 2019, 10:02am UTC](https://discuss.elastic.co/t/writing-multiline-grok/178214/1 "2019-04-24T10:02:07Z")

</div>

HI I am trying to write grok for apache mod security logs.  
GET /images/new2.gif HTTP/1.1  
Accept: _/_  
Referer: [http://www.rrcat.gov.in/](http://www.rrcat.gov.in/)  
Accept-Language: en-US  
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; Trident/7.0; rv:11.0) like Gecko  
Accept-Encoding: gzip, deflate  
Host: www.rrcat.gov.in  
X-Forwarded-For: 131.225.32.36  
If-Modified-Since: Tue, 23 Feb 2016 05:48:34 GMT  
Cache-Control: max-stale=0  
Connection: Keep-Alive  
Pragma: no-cache  
X-BlueCoat-Via: 7060c08b1ceaae72  
Above is the sample input for my file  
although I have decoded the first line but can't understand how to decode the next lines  
Please help me with it  
The grok pattern for first line is  
%{WORD:method}%{SPACE}%{URIPATHPARAM:request}%{SPACE}%{WORD:protocol}

---

<div class="post-metadata">

### Author: ![Vikash\_Singh1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vikash_singh1/32/42119_2.png) [@Vikash\_Singh1](https://discuss.elastic.co/u/Vikash_Singh1)
#### Post date: [April 24, 2019, 10:03am UTC](https://discuss.elastic.co/t/writing-multiline-grok/178214/2 "2019-04-24T10:03:19Z")

</div>

Grok pattern in above message is wrong...the correct one is:  
%{CISCO\_REASON:method}%{URIPATHPARAM:access}%{SPACE}%{WORD:protocol}/%{NUMBER:version}

---

<div class="post-metadata">

### Author: ![Vikash\_Singh1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vikash_singh1/32/42119_2.png) [@Vikash\_Singh1](https://discuss.elastic.co/u/Vikash_Singh1)
#### Post date: [April 24, 2019, 11:26am UTC](https://discuss.elastic.co/t/writing-multiline-grok/178214/3 "2019-04-24T11:26:43Z")

</div>

Like what should I do to segregate the next lines..

---

<div class="post-metadata">

### Author: ![Badger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/badger/32/25190_2.png) [@Badger](https://discuss.elastic.co/u/Badger)
#### Post date: [April 24, 2019, 2:33pm UTC](https://discuss.elastic.co/t/writing-multiline-grok/178214/4 "2019-04-24T14:33:57Z")

</div>

You could match against an array of patterns.

```
    grok {
        match => {
            "message" => [
                "^Accept: %{GREEDYDATA:accept}",
                "^Referer: %{GREEDYDATA:referrer}",
                "^Accept-Language: %{GREEDYDATA:accept-language}",
                "^User-Agent: %{GREEDYDATA:user-agent}",
                "^Accept-Encoding: %{GREEDYDATA:accept-encoding}"
            ]
        }
    }
```

---

<div class="post-metadata">

### Author: ![Vikash\_Singh1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vikash_singh1/32/42119_2.png) [@Vikash\_Singh1](https://discuss.elastic.co/u/Vikash_Singh1)
#### Post date: [April 25, 2019, 5:11am UTC](https://discuss.elastic.co/t/writing-multiline-grok/178214/5 "2019-04-25T05:11:52Z")

</div>

My full grok will look like:  
grok {  
match =\> {  
"message" =\> [ %{CISCO\_REASON:method} %{URIPATHPARAM:access} %{URIPROTO:http\_proto}/%{NUMBER:version}  
"^Accept: %{GREEDYDATA:accept}",  
"^Referer: %{GREEDYDATA:referrer}",  
"^Accept-Language: %{GREEDYDATA:accept-language}",  
"^User-Agent: %{GREEDYDATA:user-agent}",  
"^Accept-Encoding: %{GREEDYDATA:accept-encoding}"  
]  
}  
}  
???

---

<div class="post-metadata">

### Author: ![Vikash\_Singh1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vikash_singh1/32/42119_2.png) [@Vikash\_Singh1](https://discuss.elastic.co/u/Vikash_Singh1)
#### Post date: [April 25, 2019, 5:18am UTC](https://discuss.elastic.co/t/writing-multiline-grok/178214/6 "2019-04-25T05:18:58Z")

</div>

I am trying to match the pattern in Grok debugger (Dev Tool) in kibana.

---

<div class="post-metadata">

### Author: ![Badger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/badger/32/25190_2.png) [@Badger](https://discuss.elastic.co/u/Badger)
#### Post date: [April 25, 2019, 2:01pm UTC](https://discuss.elastic.co/t/writing-multiline-grok/178214/7 "2019-04-25T14:01:11Z")

</div>

You would probably want to set 'break\_on\_match =\> false' if you configure it that way.

---

<div class="post-metadata">

### Author: ![Vikash\_Singh1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vikash_singh1/32/42119_2.png) [@Vikash\_Singh1](https://discuss.elastic.co/u/Vikash_Singh1)
#### Post date: [April 26, 2019, 5:46am UTC](https://discuss.elastic.co/t/writing-multiline-grok/178214/8 "2019-04-26T05:46:39Z")

</div>

I tried but facing problems in my grok. My grok looks like  
input {  
file {  
path =\> "/elk/Weblog/\*"  
start\_position =\> "beginning"  
}  
}  
filter  
{  
grok {  
break\_on\_match =\> false  
match =\> { "message" =\> "%{CISCO\_REASON:method}" "%{URIPATHPARAM:access}" "%{URIPROTO:http\_proto}"/"%{NUMBER:version}",  
"^Accept: %{GREEDYDATA:accept}",  
"^Referer: %{GREEDYDATA:referrer}",  
"^Accept-Language: %{GREEDYDATA:accept-language}",  
"^User-Agent: %{GREEDYDATA:user-agent}",  
"^Accept-Encoding: %{GREEDYDATA:accept-encoding}"}

```
     }

```

}  
output  
{  
elasticsearch {  
hosts =\> ["10.11.109.7:9200"]  
index =\> "logstash\_apchelogs"  
}  
}

---

<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: [May 24, 2019, 5:46am UTC](https://discuss.elastic.co/t/writing-multiline-grok/178214/9 "2019-05-24T05:46:41Z")

</div>

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