# mongo\_replset

![](../.gitbook/assets/mongo_replset.png)

The `out_mongo_replset` Output plugin writes records into [MongoDB](https://mongodb.org/), the emerging document-oriented database system.

This plugin is for users using ReplicaSet. If you are not using `ReplicaSet`, please see the [`out_mongo`](mongo.md) article instead.

This plugin has breaking changes since 0.8.0 due to mongo-ruby driver's breaking changes. If you are using a prior 0.7.x series, please be careful to upgrade to 1.0.0 or later versions.

{% hint style='warning' %}
This document doesn't describe all/most of parameters. For details, refer to the **Further Reading** section.
If you can afford to improve this article, please send a pull request to https://github.com/fluent/fluentd-docs-gitbook
{% endhint %}

## Why Fluentd with MongoDB?

Fluentd enables your apps to insert records to MongoDB asynchronously with batch-insertion, unlike direct insertion of records from your apps. This has the following advantages:

1. less impact on application performance
2. higher MongoDB insertion throughput while maintaining JSON record structure

## Install

`out_mongo_replset` is not included in `fluent-package`, by default. Fluentd gem users will need to install the `fluent-plugin-mongo` gem using the following command:

```text
$ sudo fluent-gem install fluent-plugin-mongo
```

## Example Configuration

```text
# Single MongoDB
<match mongo.**>
  @type mongo_replset
  database fluentd
  collection test
  nodes localhost:27017,localhost:27018,localhost:27019

  # The name of the replica set
  replica_set myapp

  <buffer>
    # flush
    flush_interval 10s
  </buffer>
</match>
```

Please see the [Store Apache Logs into MongoDB](../how-to-guides/apache-to-mongodb.md) article for real-world use cases.

Please see the [Configuration File](../configuration/config-file.md) article for the basic structure and syntax of the configuration file.

For `<buffer>`, refer to [Buffer Section Configuration](../configuration/buffer-section.md).

## Parameters

### `@type`

The value must be `mongo`.

### `nodes`

| type | default | version |
| :--- | :--- | :--- |
| string | required parameter | 1.0.0 |

The comma-separated node strings \(e.g. host1:27017,host2:27017,host3:27017\).

### `database`

| type | default | version |
| :--- | :--- | :--- |
| string | required parameter | 1.0.0 |

The database name.

### collection

| type | default | version |
| :--- | :--- | :--- |
| string | required parameter if not `tag_mapped` | 1.0.0 |

The collection name.

### `capped`

| type | default | version |
| :--- | :--- | :--- |
| string | optional | 1.0.0 |

This option enables the capped collection. This is always recommended because MongoDB is not suited to storing large amounts of historical data.

### `capped_size`

| type | default | version |
| :--- | :--- | :--- |
| size | optional | 1.0.0 |

Sets the capped collection size.

### `user`

| type | default | version |
| :--- | :--- | :--- |
| string | optional | 1.0.0 |

The username to use for authentication.

### `password`

| type | default | version |
| :--- | :--- | :--- |
| string | optional | 1.0.0 |

The password to use for authentication.

### `tag_mapped`

| type | default | version |
| :--- | :--- | :--- |
| string | optional | 1.0.0 |

This option allows `out_mongo` to use Fluentd's tag to determine the destination collection.

For example, if you generate records with tags `mongo.foo`, the records will be inserted into the `foo` collection within the `fluentd` database:

```text
<match mongo.*>
  @type mongo_replset
  database fluentd
  nodes localhost:27017,localhost:27018,localhost:27019

  # Set 'tag_mapped' if you want to use tag mapped mode.
  tag_mapped

  # If the tag is "mongo.foo", then the prefix "mongo." is removed.
  # The inserted collection name is "foo".
  remove_tag_prefix mongo.

  # This configuration is used if the tag is not found. The default is 'untagged'.
  collection misc
</match>
```

### `replica_set`

| type | default | version |
| :--- | :--- | :--- |
| string | required parameter | 1.0.0 |

The name of the replica set.

### `read`

| type | default | version |
| :--- | :--- | :--- |
| string | `nil` | 1.0.0 |

The `ReplicaSet` read preference \(e.g. secondary, etc.\).

### `num_retries`

| type | default | version |
| :--- | :--- | :--- |
| integer | 60 | 1.0.0 |

The `ReplicaSet` failover threshold. The default threshold is 60. If the retry count reaches this threshold, the plugin raises an exception.

## Common Output / Buffer parameters

For common output / buffer parameters, please check the following articles:

* [Output Plugin Overview](./)
* [Buffer Section Configuration](../configuration/buffer-section.md)

## Further Readings

* [`fluent-plugin-webhdfs mongo`](https://github.com/fluent/fluent-plugin-mongo)
