コンテンツにスキップ

コマンド@VictoriaMetrics

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. victoria-metrics-prodコマンド

-downsampling.period

特定の日数以前のデータポイントをダウンサンプリング (数学的に集約) し、単一の値に変換する。

データポイント数が少なくなるため、ストレージ容量を節約できる。

*例*

30日以前のデータを5分ごとダウンサンプリングにする。

$ victoria-metrics-prod -downsampling.period=30d:5m


-dedup.minScrapeInterval

データポイントを重複排除することにより、特定の期間の中で最新のデータポイントを残す。

重複排除のタイミングは、収集ツールの収集間隔と同じ値にすると良い。

冗長化されたメトリクス収集ツールのインスタンスが単一のVictoriaMetricsにメトリクスを送信する場合、特定の期間には冗長化されたインスタンスが送信した同じデータポイントが存在することになる。

この重複を排除するために、期間内で最新のタイムスタンプを持つデータポイントのみを残す。

*例*

$ victoria-metrics-prod -dedup.minScrapeInterval=60s


-httpListenAddr

インバウンド通信を待ち受けるIPアドレスとポート番号を設定する。

*例*

$ victoria-metrics-prod -httpListenAddr=0.0.0.0:8248


-insert.maxQueueDuration

DBへの書き込みの同時実行時に、キューで待機する最大時間を設定する。

*例*

$ victoria-metrics-prod -insert.maxQueueDuration=32


-maxConcurrentInserts

DBへの書き込みの最大同時実行数を設定する。

各CPUで一つずつ実行するため、 設定値はホストマシン (仮想サーバー、コンテナなど) のCPUのコア数に応じて自動的に設定される。

最大同時実行数を制限することで、CPUやメモリのスパイクと、それに伴うクラッシュを防げる。

victoria-metrics_ingestion-spike

*例*

$ victoria-metrics-prod -maxConcurrentInserts=<ホストマシンのCPUのコア数に応じて自動的に設定される>


-maxLabelsPerTimeseries

メトリクスに付与できるラベルの上限数を設定する。

VictoriaMetricsでは、デフォルトで30個しかラベルをつけられず、それ以上のラベルは切り捨てる。

*例*

$ victoria-metrics-prod -maxLabelsPerTimeseries=30


-memory.allowedBytes

VictoriaMetricsが使用できるメモリサイズを設定する。

*例*

$ victoria-metrics-prod -memory.allowedBytes=100000


-memory.allowedPercent

VictoriaMetricsが使用できるメモリサイズのうちで、許容するメモリ使用率を設定する。

これが小さいと、VictoriaMetricsがOOMキラーで停止してしまう。

*例*

$ victoria-metrics-prod -memory.allowedPercent=80


-retentionPeriod

メトリクスの保管期間を設定する。

h(ours)d(ays)w(eeks)y(ears)、単位なし (month) で期間の単位を指定できる。

*例*

$ victoria-metrics-prod -retentionPeriod=90d


-storage.cacheSizeIndexDBDataBlocks

転置インデックスのデータブロックの上限キャッシュサイズを設定する。

デフォルトでは、キャッシュを作成しない。

*例*

$ victoria-metrics-prod -storage.cacheSizeIndexDBDataBlocks=0


-storage.cacheSizeIndexDBIndexBlocks

転置インデックスのインデックスブロックの上限キャッシュサイズを設定する。

デフォルトでは、キャッシュを作成しない

$ victoria-metrics-prod -storage.cacheSizeIndexDBIndexBlocks=0


-storage.cacheSizeIndexDBTagFilters

転置インデックスのタグフィルターの上限キャッシュサイズを設定する。

デフォルトでは、キャッシュを作成しない。

$ victoria-metrics-prod -storage.cacheSizeIndexDBTagFilters=0


-storageDataPath

メトリクスを保管するディレクトリを設定する。

設定したディレクトリ配下にdataディレクトリを作成し、これの配下にメトリクスを保管する。

*例*

$ victoria-metrics-prod -storageDataPath=/var/lib/victoriametrics


-tlsCertFile (-tlsKeyFileと一緒に使用する)

SSL証明書のパスを設定する。

ペアになる秘密鍵を-tlsKeyFileオプションで指定する必要がある。

*例*

$ victoria-metrics-prod -tlsCertFile=/etc/victoriametrics/server.crt -tlsKeyFile=/etc/victoriametrics/server.key


02. vmctl-prod

vm-native

▼ vm-nativeとは

指定したURLのVictoriaMetricsのAPIからデータをエクスポートし、宛先のAPIにインポートする。

vm-native-filter-time-endオプションを指定しなければ、vm-native-filter-time-startオプションの値以降のデータをエクスポートする。

$ vmctl-prod vm-native \
    --vm-native-src-addr=http://<移行元のVictoriaMetricsのURL>:8428/api/v1/export \
    --vm-native-dst-addr=http://<移行先のVictoriaMetricsのURL>:8428 \
    --vm-native-filter-time-start='2022-11-20T00:00:00Z'

▼ vm-native-filter-time-end

エクスポートする時の終了期間を設定する。

$ vmctl-prod vm-native \
    --vm-native-src-addr=http://<移行元のVictoriaMetricsのURL>:8428/api/v1/export \
    --vm-native-dst-addr=http://<移行先のVictoriaMetricsのURL>:8428 \
    --vm-native-filter-time-start='2022-11-20T00:00:00Z' \
    --vm-native-filter-time-end='2022-11-31T00:00:00Z'

▼ vm-native-filter-match

メトリクスから指定したラベルを除去し、エクスポートする。

$ vmctl-prod vm-native \
    --vm-native-src-addr=http://<移行元のVictoriaMetricsのURL>:8428/api/v1/export \
    --vm-native-dst-addr=http://<移行先のVictoriaMetricsのURL>:8428 \
    --vm-native-filter-time-start='2022-11-20T00:00:00Z' \
    --vm-native-filter-match='{__name__!~"vm_.*"}'


03. API

/api/v1/export

エンドポイントからデータを取得し、データをエクスポートする。

JSON、CSV、バイナリ、Prometheusの形式を選べる。

$ curl http://<VictoriaMetricsのURL>:8428/api/v1/export \
    -d 'match[]=vm_http_request_errors_total' \
    > filename.json


/api/v1/import

エンドポイントにデータを送信し、データをインポートする。

JSON、CSV、バイナリ、Prometheusの形式を選べる。

$ curl -X POST http://<VictoriaMetricsのURL>:8428/api/v1/import \
    -H 'Content-Type: application/json' \
    --data-binary "@filename.json"


/api/v1/query

読み出しエンドポイントであり、ストレージに永続化されているメトリクスを取得できる。

PrometheusのHTTPサーバーとおおよそ同じ読み出しエンドポイントを持つ。

# 読み出しエンドポイントにリクエストを送信する。
$ curl \
    -X GET http://<VictoriaMetricsのURL>:8428/api/v1/query \
    -d 'query=vm_http_request_errors_total'


/api/v1/write

書き込みエンドポイントであり、ストレージにメトリクスを永続化できる。

PrometheusのHTTPサーバーとおおよそ同じ書き込みエンドポイントを持つ。

# 書き込みエンドポイントにリクエストを送信する。
$ curl -X POST http://<VictoriaMetricsのURL>:8428/api/v1/write