---
sort: 2
title: Reader
weight: 2
menu:
  docs:
    parent: "vmanomaly-components"
    weight: 2
aliases:
  - /anomaly-detection/components/reader.html
---
<!--
There are 4 sources available to read data into VM Anomaly Detection from: VictoriaMetrics, (ND)JSON file, QueryRange, or CSV file. Depending on the data source, different parameters should be specified in the config file in the `reader` section.
-->

VictoriaMetrics Anomaly Detection (`vmanomaly`) primarily uses [VmReader](#vm-reader) to ingest data. This reader focuses on fetching time-series data directly from VictoriaMetrics with the help of powerful [MetricsQL](../../MetricsQL.md) expressions for aggregating, filtering and grouping your data, ensuring seamless integration and efficient data handling.

Future updates will introduce additional readers, expanding the range of data sources `vmanomaly` can work with.


## VM reader

### Config parameters

<table class="params">
    <thead>
        <tr>
            <th>Parameter</th>
            <th>Example</th>
            <th>Description</th>  
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>

`class`
            </td>
            <td>

`reader.vm.VmReader` (or `vm` starting from [v1.13.0](../CHANGELOG.md#v1130))
            </td>
            <td>

Name of the class needed to enable reading from VictoriaMetrics or Prometheus. VmReader is the default option, if not specified.
            </td>
        </tr>
        <tr>
            <td>

`queries`
            </td>
            <td>

`ingestion_rate: 'sum(rate(vm_rows_inserted_total[5m])) by (type) > 0'`
            </td>
            <td>

PromQL/MetricsQL query to select data in format: `QUERY_ALIAS: "QUERY"`. As accepted by `/query_range?query=%s`.
            </td>
        </tr>
        <tr>
            <td>

`datasource_url`
            </td>
            <td>

`http://localhost:8481/`
            </td>
            <td>

Datasource URL address
            </td>
        </tr>
        <tr>
            <td>

`tenant_id`
            </td>
            <td>

`0:0`
            </td>
            <td>

For VictoriaMetrics Cluster version only, tenants are identified by accountID or accountID:projectID. See VictoriaMetrics Cluster [multitenancy docs](../../Cluster-VictoriaMetrics.md#multitenancy)
            </td>
        </tr>
        <tr>
            <td>

`sampling_period`
            </td>
            <td>

`1h`
            </td>
            <td>

Frequency of the points returned. Will be converted to `/query_range?step=%s` param (in seconds). **Required** since [v1.9.0](../CHANGELOG.md#v190).
            </td>
        </tr>
        <tr>
            <td>

`query_range_path`
            </td>
            <td>

`/api/v1/query_range`
            </td>
            <td>

Performs PromQL/MetricsQL range query
            </td>
        </tr>
        <tr>
            <td>

`health_path`
            </td>
            <td>

`health`
            </td>
            <td>

Absolute or relative URL address where to check availability of the datasource.
            </td>
        </tr>
        <tr>
            <td>

`user`
            </td>
            <td>

`USERNAME`
            </td>
            <td>

BasicAuth username
            </td>
        </tr>
        <tr>
            <td>

`password`
            </td>
            <td>

`PASSWORD`
            </td>
            <td>

BasicAuth password
            </td>
        </tr>
        <tr>
            <td>

`timeout`
            </td>
            <td>

`30s`
            </td>
            <td>

Timeout for the requests, passed as a string
            </td>
        </tr>
        <tr>
            <td>

`verify_tls`
            </td>
            <td>

`false`
            </td>
            <td>

Allows disabling TLS verification of the remote certificate.
            </td>
        </tr>
        <tr>
            <td>

`bearer_token`
            </td>
            <td>

`token`
            </td>
            <td>

Token is passed in the standard format with header: `Authorization: bearer {token}`
            </td>
        </tr>
        <tr>
            <td>

`extra_filters`
            </td>
            <td>

`[]`
            </td>
            <td>

List of strings with series selector. See: [Prometheus querying API enhancements](../../README.md##prometheus-querying-api-enhancements)
            </td>
        </tr>
    </tbody>
</table>

Config file example:

```yaml
reader:
  class: "vm"  # or "reader.vm.VmReader" until v1.13.0
  datasource_url: "http://localhost:8428/"
  tenant_id: "0:0"
  queries:
    ingestion_rate: 'sum(rate(vm_rows_inserted_total[5m])) by (type) > 0'
  sampling_period: '1m'
```

### Healthcheck metrics

`VmReader` exposes [several healthchecks metrics](./monitoring.md#reader-behaviour-metrics).