vmctl
supports remote-read
mode for migrating data from remote databases that support
Prometheus remote read API
.
vmctl remote-read
allows migrating data from the following systems:
Remote read API has two implementations of remote read API: default (SAMPLES
) and
streamed
(STREAMED_XOR_CHUNKS
).
Streamed version is more efficient but has lower adoption.
See ./vmctl remote-read --help
for details and the full list of flags.
Migration via remote read protocol allows to fetch data via API. This is usually a resource intensive operation for Thanos and may be slow or expensive in terms of resources.
The importing process example for local installation of Prometheus:
./vmctl remote-read \
--remote-read-src-addr=http://<prometheus>:9091 \
--remote-read-filter-time-start=2021-10-18T00:00:00Z \
--remote-read-step-interval=hour \
--vm-addr=http://<victoria-metrics>:8428 \
See how to configure –vm-addr .
Filtering #
Filtering by time can be configured via flags --remote-read-filter-time-start
and --remote-read-filter-time-end
in RFC3339 format.
Filtering by labels can be configured via flags --remote-read-filter-label
and --remote-read-filter-label-value
.
For example, --remote-read-filter-label=tenant
and --remote-read-filter-label-value="team-eu"
will select only series
with tenant="team-eu"
label-value pair.
Configuration #
Migrating big volumes of data may result in remote read client reaching the timeout. Increase the value of
--remote-read-http-timeout
(default 5m
) command-line flag when seeing timeouts or context canceled
errors.
Flag --remote-read-step-interval
allows splitting export data into chunks to reduce pressure on the source --remote-read-src-addr
.
Valid values are month, day, hour, minute
.
Flag --remote-read-use-stream
defines whether to use SAMPLES
or STREAMED_XOR_CHUNKS
mode.
Mode STREAMED_XOR_CHUNKS
is much less resource intensive for the source, but not many databases support it.
By default, is uses SAMPLES
mode.
See general vmctl migration tips .
See ./vmctl remote-read --help
for details and full list of flags:
--remote-read-concurrency value Number of concurrently running remote read readers (default: 1)
--remote-read-filter-time-start value The time filter in RFC3339 format to select timeseries with timestamp equal or higher than provided value. E.g. '2020-01-01T20:07:00Z'
--remote-read-filter-time-end value The time filter in RFC3339 format to select timeseries with timestamp equal or lower than provided value. E.g. '2020-01-01T20:07:00Z'
--remote-read-filter-label value Prometheus label name to filter timeseries by. E.g. '__name__' will filter timeseries by name. (default: "__name__")
--remote-read-filter-label-value value Prometheus regular expression to filter label from "remote-read-filter-label-value" flag. (default: ".*")
--remote-read Use Prometheus remote read protocol (default: false)
--remote-read-use-stream Defines whether to use SAMPLES or STREAMED_XOR_CHUNKS mode. By default, is uses SAMPLES mode. See https://prometheus.io/docs/prometheus/latest/querying/remote_read_api/#streamed-chunks (default: false)
--remote-read-step-interval value The time interval to split the migration into steps. For example, to migrate 1y of data with '--remote-read-step-interval=month' vmctl will execute it in 12 separate requests from the beginning of the time range to its end. To reverse the order use '--remote-read-filter-time-reverse'. Requires setting '--remote-read-filter-time-start'. Valid values are 'month','week','day','hour','minute'.
--remote-read-filter-time-reverse Whether to reverse the order of time intervals split by '--remote-read-step-interval' cmd-line flag. When set, the migration will start from the newest to the oldest data. (default: false)
--remote-read-src-addr value Remote read address to perform read from.
--remote-read-user value Remote read username for basic auth [$REMOTE_READ_USERNAME]
--remote-read-password value Remote read password for basic auth [$REMOTE_READ_PASSWORD]
--remote-read-http-timeout value Timeout defines timeout for HTTP requests made by remote read client (default: 0s)
--remote-read-headers value Optional HTTP headers to send with each request to the corresponding remote source storage
For example, --remote-read-headers='My-Auth:foobar' would send 'My-Auth: foobar' HTTP header with every request to the corresponding remote source storage.
Multiple headers must be delimited by '^^': --remote-read-headers='header1:value1^^header2:value2'
--remote-read-cert-file value Optional path to client-side TLS certificate file to use when connecting to -remote-read-src-addr
--remote-read-key-file value Optional path to client-side TLS key to use when connecting to -remote-read-src-addr
--remote-read-CA-file value Optional path to TLS CA file to use for verifying connections to -remote-read-src-addr. By default, system CA is used
--remote-read-server-name value Optional TLS server name to use for connections to remoteReadSrcAddr. By default, the server name from -remote-read-src-addr is used
--remote-read-insecure-skip-verify Whether to skip TLS certificate verification when connecting to the remote read address (default: false)
--remote-read-disable-path-append Whether to disable automatic appending of the /api/v1/read suffix to --remote-read-src-addr (default: false)