victoriametrics
Prometheusと互換性のある高性能な時系列データベースであるVictoriaMetricsを導入・設定し、長期的なメトリクス保存やMetricsQLでのクエリ実行、水平スケーリングなどを実現するSkill。
📜 元の英語説明(参考)
Deploy and configure VictoriaMetrics as a high-performance time-series database for metrics storage and querying. Use when a user needs a Prometheus-compatible long-term storage backend, wants to write MetricsQL queries, configure vmagent for metrics scraping, or set up VictoriaMetrics cluster mode for horizontal scaling.
🇯🇵 日本人クリエイター向け解説
Prometheusと互換性のある高性能な時系列データベースであるVictoriaMetricsを導入・設定し、長期的なメトリクス保存やMetricsQLでのクエリ実行、水平スケーリングなどを実現するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o victoriametrics.zip https://jpskill.com/download/15539.zip && unzip -o victoriametrics.zip && rm victoriametrics.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15539.zip -OutFile "$d\victoriametrics.zip"; Expand-Archive "$d\victoriametrics.zip" -DestinationPath $d -Force; ri "$d\victoriametrics.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
victoriametrics.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
victoriametricsフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
VictoriaMetrics
概要
高速で費用対効果の高いPrometheus互換の時系列データベースとしてVictoriaMetricsをデプロイします。シングルノードおよびクラスタのデプロイ、vmagentの設定、MetricsQLクエリ、GrafanaおよびPrometheusとの統合について説明します。
手順
タスクA: シングルノードVictoriaMetricsのデプロイ
# docker-compose.yml — vmagentとvmalertを備えたシングルノードVictoriaMetrics
services:
victoriametrics:
image: victoriametrics/victoria-metrics:v1.96.0
command:
- '-storageDataPath=/victoria-metrics-data'
- '-retentionPeriod=90d'
- '-httpListenAddr=:8428'
- '-search.maxUniqueTimeseries=1000000'
- '-dedup.minScrapeInterval=15s'
ports:
- "8428:8428"
volumes:
- vm_data:/victoria-metrics-data
vmagent:
image: victoriametrics/vmagent:v1.96.0
command:
- '-promscrape.config=/etc/vmagent/scrape.yml'
- '-remoteWrite.url=http://victoriametrics:8428/api/v1/write'
- '-remoteWrite.tmpDataPath=/vmagent-remotewrite-data'
volumes:
- ./vmagent-scrape.yml:/etc/vmagent/scrape.yml:ro
- vmagent_data:/vmagent-remotewrite-data
vmalert:
image: victoriametrics/vmalert:v1.96.0
command:
- '-datasource.url=http://victoriametrics:8428'
- '-remoteRead.url=http://victoriametrics:8428'
- '-remoteWrite.url=http://victoriametrics:8428'
- '-notifier.url=http://alertmanager:9093'
- '-rule=/etc/vmalert/rules/*.yml'
volumes:
- ./alert-rules:/etc/vmalert/rules:ro
volumes:
vm_data:
vmagent_data:
タスクB: vmagentスクレイピングの設定
# vmagent-scrape.yml — スクレイピング設定 (Prometheus互換)
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
labels:
environment: production
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__meta_kubernetes_namespace]
target_label: namespace
- source_labels: [__meta_kubernetes_pod_name]
target_label: pod
- job_name: 'app-services'
static_configs:
- targets:
- 'api-gateway:8080'
- 'payment-service:8080'
- 'order-service:8080'
metrics_path: /metrics
relabel_configs:
- source_labels: [__address__]
regex: '([^:]+):.*'
target_label: service
タスクC: MetricsQLクエリ
# サービスごとのリクエストレート (MetricsQLはPromQLを拡張)
sum(rate(http_requests_total[5m])) by (service)
# MetricsQLのrollup関数を使用したP99レイテンシ
quantile_over_time(0.99, http_request_duration_seconds[5m]) by (service)
# MetricsQLのtopk_avgを使用したエラー率による上位5つのサービス
topk_avg(5, sum(rate(http_requests_total{status=~"5.."}[5m])) by (service)
/ sum(rate(http_requests_total[5m])) by (service))
# MetricsQL: 24時間以上の累積合計 (標準PromQLでは利用できません)
running_sum(increase(http_requests_total{service="api-gateway"}[1h]))
# MetricsQL: よりスムーズな視覚化のためのrange_median
range_median(cpu_usage_percent{instance=~"web-.*"})
# API経由でのクエリ
curl -s "http://localhost:8428/api/v1/query_range" \
--data-urlencode 'query=sum(rate(http_requests_total[5m])) by (service)' \
--data-urlencode 'start=-1h' \
--data-urlencode 'step=60s' | jq '.data.result[] | {service: .metric.service, values: (.values | length)}'
タスクD: vmalertのアラートルール
# alert-rules/service-alerts.yml — vmalertのアラートルール
groups:
- name: service-health
interval: 30s
rules:
- alert: HighErrorRate
expr: |
sum(rate(http_requests_total{status=~"5.."}[5m])) by (service)
/ sum(rate(http_requests_total[5m])) by (service) > 0.05
for: 5m
labels:
severity: critical
annotations:
summary: "{{ $labels.service }} でのエラー率が5%を超えています"
- alert: HighMemoryUsage
expr: |
(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes)
/ node_memory_MemTotal_bytes > 0.9
for: 10m
labels:
severity: warning
annotations:
summary: "{{ $labels.instance }} でのメモリ使用量が90%を超えています"
# ダッシュボードパフォーマンスの記録ルール
- record: service:request_rate:5m
expr: sum(rate(http_requests_total[5m])) by (service)
タスクE: クラスタモードデプロイメント
# docker-compose-cluster.yml — 水平スケーリングのためのVictoriaMetricsクラスタ
services:
vmstorage-1:
image: victoriametrics/vmstorage:v1.96.0-cluster
command:
- '-storageDataPath=/storage'
- '-retentionPeriod=90d'
volumes:
- vmstorage1:/storage
vmstorage-2:
image: victoriametrics/vmstorage:v1.96.0-cluster
command:
- '-storageDataPath=/storage'
- '-retentionPeriod=90d'
volumes:
- vmstorage2:/storage
vminsert:
image: victoriametrics/vminsert:v1.96.0-cluster
command:
- '-storageNode=vmstorage-1:8400'
- '-storageNode=vmstorage-2:8400'
- '-replicationFactor=2'
ports:
- "8480:8480"
vmselect:
image: victoriametrics/vmselect:v1.96.0-cluster
command:
- '-storageNode=vmstorage-1:8401'
- '-storageNode=vmstorage-2:8401'
- '-dedup.minScrapeInterval=15s'
ports:
- "8481:8481"
volumes:
vmstorage1:
vmstorage2:
ベストプラクティス
- スクレイピングにはPrometheusの代わりにvmagentを使用してください — リモート書き込みをより効率的に処理します
- HAの重複を処理するために、
-dedup.minScrapeIntervalをスクレイピング間隔と同じに設定してください - MetricsQL拡張機能(topk_avg、
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
VictoriaMetrics
Overview
Deploy VictoriaMetrics as a fast, cost-effective Prometheus-compatible time-series database. Covers single-node and cluster deployment, vmagent configuration, MetricsQL querying, and integration with Grafana and Prometheus.
Instructions
Task A: Deploy Single-Node VictoriaMetrics
# docker-compose.yml — Single-node VictoriaMetrics with vmagent and vmalert
services:
victoriametrics:
image: victoriametrics/victoria-metrics:v1.96.0
command:
- '-storageDataPath=/victoria-metrics-data'
- '-retentionPeriod=90d'
- '-httpListenAddr=:8428'
- '-search.maxUniqueTimeseries=1000000'
- '-dedup.minScrapeInterval=15s'
ports:
- "8428:8428"
volumes:
- vm_data:/victoria-metrics-data
vmagent:
image: victoriametrics/vmagent:v1.96.0
command:
- '-promscrape.config=/etc/vmagent/scrape.yml'
- '-remoteWrite.url=http://victoriametrics:8428/api/v1/write'
- '-remoteWrite.tmpDataPath=/vmagent-remotewrite-data'
volumes:
- ./vmagent-scrape.yml:/etc/vmagent/scrape.yml:ro
- vmagent_data:/vmagent-remotewrite-data
vmalert:
image: victoriametrics/vmalert:v1.96.0
command:
- '-datasource.url=http://victoriametrics:8428'
- '-remoteRead.url=http://victoriametrics:8428'
- '-remoteWrite.url=http://victoriametrics:8428'
- '-notifier.url=http://alertmanager:9093'
- '-rule=/etc/vmalert/rules/*.yml'
volumes:
- ./alert-rules:/etc/vmalert/rules:ro
volumes:
vm_data:
vmagent_data:
Task B: Configure vmagent Scraping
# vmagent-scrape.yml — Scrape configuration (Prometheus-compatible)
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
labels:
environment: production
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__meta_kubernetes_namespace]
target_label: namespace
- source_labels: [__meta_kubernetes_pod_name]
target_label: pod
- job_name: 'app-services'
static_configs:
- targets:
- 'api-gateway:8080'
- 'payment-service:8080'
- 'order-service:8080'
metrics_path: /metrics
relabel_configs:
- source_labels: [__address__]
regex: '([^:]+):.*'
target_label: service
Task C: MetricsQL Queries
# Request rate per service (MetricsQL extends PromQL)
sum(rate(http_requests_total[5m])) by (service)
# P99 latency with MetricsQL's rollup functions
quantile_over_time(0.99, http_request_duration_seconds[5m]) by (service)
# Top 5 services by error rate using MetricsQL's topk_avg
topk_avg(5, sum(rate(http_requests_total{status=~"5.."}[5m])) by (service)
/ sum(rate(http_requests_total[5m])) by (service))
# MetricsQL: running total over 24h (not available in standard PromQL)
running_sum(increase(http_requests_total{service="api-gateway"}[1h]))
# MetricsQL: range_median for smoother visualization
range_median(cpu_usage_percent{instance=~"web-.*"})
# Query via API
curl -s "http://localhost:8428/api/v1/query_range" \
--data-urlencode 'query=sum(rate(http_requests_total[5m])) by (service)' \
--data-urlencode 'start=-1h' \
--data-urlencode 'step=60s' | jq '.data.result[] | {service: .metric.service, values: (.values | length)}'
Task D: Alert Rules for vmalert
# alert-rules/service-alerts.yml — Alert rules for vmalert
groups:
- name: service-health
interval: 30s
rules:
- alert: HighErrorRate
expr: |
sum(rate(http_requests_total{status=~"5.."}[5m])) by (service)
/ sum(rate(http_requests_total[5m])) by (service) > 0.05
for: 5m
labels:
severity: critical
annotations:
summary: "Error rate above 5% on {{ $labels.service }}"
- alert: HighMemoryUsage
expr: |
(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes)
/ node_memory_MemTotal_bytes > 0.9
for: 10m
labels:
severity: warning
annotations:
summary: "Memory usage above 90% on {{ $labels.instance }}"
# Recording rule for dashboard performance
- record: service:request_rate:5m
expr: sum(rate(http_requests_total[5m])) by (service)
Task E: Cluster Mode Deployment
# docker-compose-cluster.yml — VictoriaMetrics cluster for horizontal scaling
services:
vmstorage-1:
image: victoriametrics/vmstorage:v1.96.0-cluster
command:
- '-storageDataPath=/storage'
- '-retentionPeriod=90d'
volumes:
- vmstorage1:/storage
vmstorage-2:
image: victoriametrics/vmstorage:v1.96.0-cluster
command:
- '-storageDataPath=/storage'
- '-retentionPeriod=90d'
volumes:
- vmstorage2:/storage
vminsert:
image: victoriametrics/vminsert:v1.96.0-cluster
command:
- '-storageNode=vmstorage-1:8400'
- '-storageNode=vmstorage-2:8400'
- '-replicationFactor=2'
ports:
- "8480:8480"
vmselect:
image: victoriametrics/vmselect:v1.96.0-cluster
command:
- '-storageNode=vmstorage-1:8401'
- '-storageNode=vmstorage-2:8401'
- '-dedup.minScrapeInterval=15s'
ports:
- "8481:8481"
volumes:
vmstorage1:
vmstorage2:
Best Practices
- Use vmagent instead of Prometheus for scraping — it handles remote write more efficiently
- Set
-dedup.minScrapeIntervalequal to your scrape interval to handle HA duplicates - Use MetricsQL extensions (topk_avg, range_median, running_sum) for cleaner queries
- Set
-retentionPeriodbased on actual needs — VM is storage-efficient but plan capacity - Use recording rules for dashboard queries to reduce query load
- In cluster mode, set
-replicationFactor=2for data durability across storage nodes