---
title: Riak
description: Track node, vnode and ring performance metrics for RiakKV or RiakTS.
breadcrumbs: Docs > Integrations > Riak
---

# Riak
Supported OS Integration version5.5.0


## Overview{% #overview %}

This check lets you track node, vnode, and ring performance metrics from RiakKV or RiakTS.

**Minimum Agent version:** 6.0.0

## Setup{% #setup %}

### Installation{% #installation %}

The Riak check is included in the [Datadog Agent](https://app.datadoghq.com/account/settings/agent/latest) package, so you don't need to install anything else on your Riak servers.

### Configuration{% #configuration %}

{% tab title="Host" %}
#### Host{% #host %}

To configure this check for an Agent running on a host:

##### Metric collection{% #metric-collection %}

1. Edit the `riak.d/conf.yaml` file, in the `conf.d/` folder at the root of your [Agent's configuration directory](https://docs.datadoghq.com/agent/guide/agent-configuration-files.md#agent-configuration-directory). See the [sample riak.yaml](https://github.com/DataDog/integrations-core/blob/master/riak/datadog_checks/riak/data/conf.yaml.example) for all available configuration options:

   ```yaml
   init_config:
   
   instances:
     ## @param url - string - required
     ## Riak stats url to connect to.
     #
     - url: http://127.0.0.1:8098/stats
   ```

1. [Restart the Agent](https://docs.datadoghq.com/agent/guide/agent-commands.md#start-stop-and-restart-the-agent) to start sending Riak metrics to Datadog.

##### Log collection{% #log-collection %}

*Available for Agent versions >6.0*

1. Collecting logs is disabled by default in the Datadog Agent, enable it in your `datadog.yaml` file:

   ```yaml
   logs_enabled: true
   ```

1. Add this configuration block to your `riak.d/conf.yaml` file to start collecting your Riak logs:

   ```yaml
     logs:
       - type: file
         path: /var/log/riak/console.log
         source: riak
         service: "<SERVICE_NAME>"
   
       - type: file
         path: /var/log/riak/error.log
         source: riak
         service: "<SERVICE_NAME>"
         log_processing_rules:
           - type: multi_line
             name: new_log_start_with_date
             pattern: \d{4}\-\d{2}\-\d{2}
   
       - type: file
         path: /var/log/riak/crash.log
         source: riak
         service: "<SERVICE_NAME>"
         log_processing_rules:
           - type: multi_line
             name: new_log_start_with_date
             pattern: \d{4}\-\d{2}\-\d{2}
   ```

1. [Restart the Agent](https://docs.datadoghq.com/agent/guide/agent-commands.md#start-stop-and-restart-the-agent).

{% /tab %}

{% tab title="Containerized" %}
#### Containerized{% #containerized %}

For containerized environments, see the [Autodiscovery Integration Templates](https://docs.datadoghq.com/agent/kubernetes/integrations.md) for guidance on applying the parameters below.

##### Metric collection{% #metric-collection %}

| Parameter            | Value                                  |
| -------------------- | -------------------------------------- |
| `<INTEGRATION_NAME>` | `riak`                                 |
| `<INIT_CONFIG>`      | blank or `{}`                          |
| `<INSTANCE_CONFIG>`  | `{"url":"http://%%host%%:8098/stats"}` |

##### Log collection{% #log-collection %}

*Available for Agent versions >6.0*

Collecting logs is disabled by default in the Datadog Agent. To enable it, see [Kubernetes Log Collection](https://docs.datadoghq.com/agent/kubernetes/log.md).

| Parameter      | Value                                                                                                                                                        |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `<LOG_CONFIG>` | `{"source": "riak", "service": "riak", "log_processing_rules": {"type": "multi_line", "name": "new_log_Start_with_date", "pattern": "\d{4}\-\d{2}\-\d{2}"}}` |

{% /tab %}

### Validation{% #validation %}

[Run the Agent's status subcommand](https://docs.datadoghq.com/agent/guide/agent-commands.md#agent-status-and-information) and look for `riak` under the Checks section.

## Data Collected{% #data-collected %}

### Metrics{% #metrics %}

|  |
|  |
| **riak.memory\_atom**(gauge)                     | Total amount of memory currently allocated for atom storage*Shown as byte*                             |
| **riak.memory\_atom\_used**(gauge)               | Total amount of memory currently used for atom storage*Shown as byte*                                  |
| **riak.memory\_binary**(gauge)                   | Total amount of memory used for binaries*Shown as byte*                                                |
| **riak.memory\_code**(gauge)                     | Total amount of memory allocated for Erlang code*Shown as byte*                                        |
| **riak.memory\_ets**(gauge)                      | Total memory allocated for Erlang Term Storage*Shown as byte*                                          |
| **riak.memory\_processes**(gauge)                | Total amount of memory allocated for Erlang processes*Shown as byte*                                   |
| **riak.memory\_processes\_used**(gauge)          | Total amount of memory used by Erlang processes*Shown as byte*                                         |
| **riak.memory\_total**(gauge)                    | Total allocated memory (sum of processes and system)*Shown as byte*                                    |
| **riak.node\_get\_fsm\_active\_60s**(gauge)      | Number of active GET FSMs                                                                              |
| **riak.node\_get\_fsm\_in\_rate**(gauge)         | Average number of GET FSMs enqueued by Sidejob                                                         |
| **riak.node\_get\_fsm\_objsize\_100**(gauge)     | Object size encountered by this node*Shown as byte*                                                    |
| **riak.node\_get\_fsm\_objsize\_95**(gauge)      | Object size encountered by this node*Shown as byte*                                                    |
| **riak.node\_get\_fsm\_objsize\_99**(gauge)      | Object size encountered by this node*Shown as byte*                                                    |
| **riak.node\_get\_fsm\_objsize\_mean**(gauge)    | Object size encountered by this node*Shown as byte*                                                    |
| **riak.node\_get\_fsm\_objsize\_median**(gauge)  | Object size encountered by this node*Shown as byte*                                                    |
| **riak.node\_get\_fsm\_out\_rate**(gauge)        | Average number of GET FSMs dequeued by Sidejob                                                         |
| **riak.node\_get\_fsm\_rejected\_60s**(gauge)    | Number of GET FSMs actively being rejected by Sidejob's overload protection                            |
| **riak.node\_get\_fsm\_siblings\_100**(gauge)    | Number of siblings encountered during all GET operations by this node*Shown as node*                   |
| **riak.node\_get\_fsm\_siblings\_95**(gauge)     | Number of siblings encountered during all GET operations by this node*Shown as node*                   |
| **riak.node\_get\_fsm\_siblings\_99**(gauge)     | Number of siblings encountered during all GET operations by this node*Shown as node*                   |
| **riak.node\_get\_fsm\_siblings\_mean**(gauge)   | Number of siblings encountered during all GET operations by this node*Shown as node*                   |
| **riak.node\_get\_fsm\_siblings\_median**(gauge) | Number of siblings encountered during all GET operations by this node*Shown as node*                   |
| **riak.node\_get\_fsm\_time\_100**(gauge)        | Time between reception of client GET request and subsequent response to client*Shown as microsecond*   |
| **riak.node\_get\_fsm\_time\_95**(gauge)         | Time between reception of client GET request and subsequent response to client*Shown as microsecond*   |
| **riak.node\_get\_fsm\_time\_99**(gauge)         | Time between reception of client GET request and subsequent response to client*Shown as microsecond*   |
| **riak.node\_get\_fsm\_time\_mean**(gauge)       | Time between reception of client GET request and subsequent response to client*Shown as microsecond*   |
| **riak.node\_get\_fsm\_time\_median**(gauge)     | Time between reception of client GET request and subsequent response to client*Shown as microsecond*   |
| **riak.node\_gets**(count)                       | Number of GETs coordinated by this node*Shown as operation*                                            |
| **riak.node\_put\_fsm\_active\_60s**(gauge)      | Number of active PUT FSMs                                                                              |
| **riak.node\_put\_fsm\_in\_rate**(gauge)         | Average number of PUT FSMs enqueued by Sidejob                                                         |
| **riak.node\_put\_fsm\_out\_rate**(gauge)        | Average number of PUT FSMs dequeued by Sidejob                                                         |
| **riak.node\_put\_fsm\_rejected\_60s**(gauge)    | Number of PUT FSMs actively being rejected by Sidejob's overload protection                            |
| **riak.node\_put\_fsm\_time\_100**(gauge)        | Time between reception of client PUT request and subsequent response to client*Shown as microsecond*   |
| **riak.node\_put\_fsm\_time\_95**(gauge)         | Time between reception of client PUT request and subsequent response to client*Shown as microsecond*   |
| **riak.node\_put\_fsm\_time\_99**(gauge)         | Time between reception of client PUT request and subsequent response to client*Shown as microsecond*   |
| **riak.node\_put\_fsm\_time\_mean**(gauge)       | Time between reception of client PUT request and subsequent response to client*Shown as microsecond*   |
| **riak.node\_put\_fsm\_time\_median**(gauge)     | Time between reception of client PUT request and subsequent response to client*Shown as microsecond*   |
| **riak.node\_puts**(gauge)                       | Number of PUTs coordinated by this node*Shown as operation*                                            |
| **riak.pbc\_active**(gauge)                      | Number of active protocol buffers connections*Shown as connection*                                     |
| **riak.pbc\_connects**(gauge)                    | Number of protocol buffers connections*Shown as connection*                                            |
| **riak.read\_repairs**(gauge)                    | Number of read repair operations this this node has coordinated in the last minute*Shown as operation* |
| **riak.search\_index\_fail\_count**(gauge)       | Total number of documents that have failed to index*Shown as object*                                   |
| **riak.search\_index\_fail\_one**(gauge)         | Number of documents that have failed to index in the past one minute*Shown as object*                  |
| **riak.search\_index\_latency\_95**(gauge)       | Time between insertion of document and it being indexed: 95th percentile*Shown as microsecond*         |
| **riak.search\_index\_latency\_99**(gauge)       | Time between insertion of document and it being indexed: 99th percentile*Shown as microsecond*         |
| **riak.search\_index\_latency\_999**(gauge)      | Time between insertion of document and it being indexed: 99.9th percentile*Shown as microsecond*       |
| **riak.search\_index\_latency\_max**(gauge)      | Time between insertion of document and it being indexed: max*Shown as microsecond*                     |
| **riak.search\_index\_latency\_mean**(gauge)     | Time between insertion of document and it being indexed: mean*Shown as microsecond*                    |
| **riak.search\_index\_latency\_median**(gauge)   | Time between insertion of document and it being indexed: median*Shown as microsecond*                  |
| **riak.search\_index\_latency\_min**(gauge)      | Time between insertion of document and it being indexed: min*Shown as microsecond*                     |
| **riak.search\_index\_throughput\_count**(gauge) | Total number of documents that have been indexed*Shown as operation*                                   |
| **riak.search\_index\_throughput\_one**(gauge)   | Number of documents that have been indexed in the last one minute*Shown as operation*                  |
| **riak.search\_query\_fail\_count**(gauge)       | Total number of queries that have failed*Shown as event*                                               |
| **riak.search\_query\_fail\_one**(gauge)         | Number of queries that have failed in the last one minute*Shown as event*                              |
| **riak.search\_query\_latency\_95**(gauge)       | Time between reception of query and response: 95th percentile*Shown as microsecond*                    |
| **riak.search\_query\_latency\_99**(gauge)       | Time between reception of query and response: 99th percentile*Shown as microsecond*                    |
| **riak.search\_query\_latency\_999**(gauge)      | Time between reception of query and response: 99.9th percentile*Shown as microsecond*                  |
| **riak.search\_query\_latency\_max**(gauge)      | Time between reception of query and response: max*Shown as microsecond*                                |
| **riak.search\_query\_latency\_mean**(gauge)     | Time between reception of query and response: mean*Shown as microsecond*                               |
| **riak.search\_query\_latency\_median**(gauge)   | Time between reception of query and response: median*Shown as microsecond*                             |
| **riak.search\_query\_latency\_min**(gauge)      | Time between reception of query and response: min*Shown as microsecond*                                |
| **riak.search\_query\_throughput\_count**(gauge) | Total number of queries that have been performed*Shown as operation*                                   |
| **riak.search\_query\_throughput\_one**(gauge)   | Number of searches that have been performed in the last one minute*Shown as operation*                 |
| **riak.vnode\_gets**(gauge)                      | Number of GET operations coordinated by vnodes on this node*Shown as operation*                        |
| **riak.vnode\_index\_deletes**(gauge)            | Number of vnode index delete operations*Shown as operation*                                            |
| **riak.vnode\_index\_reads**(gauge)              | Number of vnode index read operations*Shown as read*                                                   |
| **riak.vnode\_index\_writes**(gauge)             | Number of vnode index write operations*Shown as write*                                                 |
| **riak.vnode\_puts**(count)                      | Number of PUT operations coordinated by vnodes on this node*Shown as operation*                        |

### Events{% #events %}

The Riak check does not include any events.

### Service Checks{% #service-checks %}

**riak.can\_connect**

Returns `CRITICAL` if the Agent is unable to connect to the monitored Riak instance. Returns `OK` otherwise.

*Statuses: ok, critical*

## Troubleshooting{% #troubleshooting %}

Need help? Contact [Datadog support](https://docs.datadoghq.com/help/).
