# Parser Plugins

Fluentd has 6 types of plugins: [Input](https://docs.fluentd.org/0.12/input), [Parser](https://docs.fluentd.org/0.12/parser), [Filter](https://docs.fluentd.org/0.12/filter), [Output](https://docs.fluentd.org/0.12/output), [Formatter](https://docs.fluentd.org/0.12/formatter) and [Buffer](https://docs.fluentd.org/0.12/buffer). This article gives an overview of Parser Plugin.

## Overview

Sometimes, the `format` parameter for input plugins (ex: [in\_tail](https://docs.fluentd.org/0.12/input/tail), [in\_syslog](https://docs.fluentd.org/0.12/input/syslog), [in\_tcp](https://docs.fluentd.org/0.12/input/tcp) and [in\_udp](https://docs.fluentd.org/0.12/input/udp)) cannot parse the user's custom data format (for example, a context-dependent grammar that can't be parsed with a regular expression). To address such cases. Fluentd has a pluggable system that enables the user to create their own parser formats.

## How To Use

* Write a custom format plugin. [See here for more information](https://docs.fluentd.org/0.12/developer/plugin-development#parser-plugins).
* From any input plugin that supports the "format" field, call the

  custom plugin by its name.

Here is a simple example to read Nginx access logs using `in_tail` and `parser_nginx`:

```
<source>
  @type tail
  path /path/to/input/file
  format nginx
  keep_time_key true
</source>
```

## List of Built-in Parsers

* [regexp](https://docs.fluentd.org/0.12/parser/regexp)
* [apache2](https://docs.fluentd.org/0.12/parser/apache2)
* [apache\_error](https://docs.fluentd.org/0.12/parser/apache_error)
* [nginx](https://docs.fluentd.org/0.12/parser/nginx)
* [syslog](https://docs.fluentd.org/0.12/parser/syslog)
* [csv](https://docs.fluentd.org/0.12/parser/csv)
* [tsv](https://docs.fluentd.org/0.12/parser/tsv)
* [ltsv](https://docs.fluentd.org/0.12/parser/ltsv)
* [json](https://docs.fluentd.org/0.12/parser/json)
* [multiline](https://docs.fluentd.org/0.12/parser/multiline)
* [none](https://docs.fluentd.org/0.12/parser/none)

### 3rd party Parsers

* [grok](https://github.com/fluent/fluent-plugin-grok-parser)

If you are familiar with grok patterns, grok-parser plugin is useful. Use `< 1.0.0` versions for fluentd v0.12.

## List of Core Input Plugins with Parser support

with `format` parameter.

* [in\_tail](https://docs.fluentd.org/0.12/input/tail)
* [in\_tcp](https://docs.fluentd.org/0.12/input/tcp)
* [in\_udp](https://docs.fluentd.org/0.12/input/udp)
* [in\_syslog](https://docs.fluentd.org/0.12/input/syslog)
* [in\_http](https://docs.fluentd.org/0.12/input/http)

If this article is incorrect or outdated, or omits critical information, please [let us know](https://github.com/fluent/fluentd-docs-gitbook/issues?state=open). [Fluentd](http://www.fluentd.org/) is a open source project under [Cloud Native Computing Foundation (CNCF)](https://cncf.io/). All components are available under the Apache 2 License.
