VictoriaMetrics/snap/snapcraft.yaml

87 lines
4.4 KiB
YAML

name: victoriametrics
base: core18
adopt-info: build
icon: logo.png
summary: VictoriaMetrics is fast, cost-effective and scalable time-series database.
description: |
* VictoriaMetrics can be used as long-term storage for Prometheus or for vmagent.
See https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html#prometheus-setup for details.
* Supports Prometheus querying API, so it can be used as Prometheus drop-in replacement in Grafana.
VictoriaMetrics implements MetricsQL, https://docs.victoriametrics.com/metricsql/ query language, which is inspired by PromQL.
* Supports global query view. Multiple Prometheus instances may write data into VictoriaMetrics. Later this data may be used in a single query.
* High performance and good scalability for both inserts and selects.
* High data compression, so up to 70x more data points may be crammed into limited storage comparing to TimescaleDB.
* Optimized for storage with high-latency IO and low IOPS (HDD and network storage in AWS, Google Cloud, Microsoft Azure, etc).
* A single-node VictoriaMetrics may substitute moderately sized clusters built with competing solutions such as Thanos, M3DB, Cortex, InfluxDB or TimescaleDB.
* Easy operation:
* VictoriaMetrics consists of a single without external dependencies.
* All the configuration is done via explicit command-line flags with reasonable defaults.
* All the data is stored in a single directory pointed by `-storageDataPath` flag.
* Easy and fast backups from
to S3 or GCS with https://docs.victoriametrics.com/vmbackup/ / https://docs.victoriametrics.com/vmrestore/.
* Storage is protected from corruption on unclean shutdown (i.e. OOM, hardware reset or `kill -9`) thanks to the storage architecture.
* Supports metrics' scraping, ingestion and backfilling via the following protocols:
* [Metrics from Prometheus exporters]
such as node_exporter.
* Prometheus remote write API(
* InfluxDB line protocol over HTTP, TCP and UDP.
* Graphite plaintext protocol
if `-graphiteListenAddr` is set.
* OpenTSDB put message, if `-opentsdbListenAddr` is set.
* HTTP OpenTSDB /api/put requests, if `-opentsdbHTTPListenAddr` is set.
* JSON line format.
* Native binary format.
* Prometheus exposition format.
* Arbitrary CSV data.
* Supports metrics' relabeling. See https://docs.victoriametrics.com/#relabeling for details.
* Ideally works with big amounts of time series data from Kubernetes, IoT sensors, connected cars, industrial telemetry, financial data and various Enterprise workloads.
* Has open source cluster version (https://github.com/VictoriaMetrics/VictoriaMetrics/tree/cluster).
** Configuration management**
* Prometheus scrape config can be edited with your favorite editor, its located at
`vi /var/snap/victoriametrics/current/etc/victoriametrics-scrape-config.yaml`
after changes, you can trigger config reread with `curl localhost:8428/-/reload`.
* Configuration tuning is possible with editing extra_flags:
`echo 'FLAGS="-selfScrapeInterval=10s -search.logSlowQueryDuration=20s"' > /var/snap/victoriametrics/current/extra_flags && snap restart victoriametrics`
* Data folder located at `/var/snap/victoriametrics/current/var/lib/victoriametrics/`.
grade: stable # must be 'stable' to release into candidate/stable channels
confinement: strict # use 'strict' once you have the right plugs and slots
parts:
build:
plugin: go
go-channel: 1.20/stable
go-importpath: github.com/VictoriaMetrics/VictoriaMetrics
source: .
source-type: local
build-packages: [build-essential, make]
override-build: |
make app-local APP_NAME=victoria-metrics
mkdir -p $SNAPCRAFT_PART_INSTALL/bin
cp -p $SNAPCRAFT_PART_BUILD/bin/victoria-metrics $SNAPCRAFT_PART_INSTALL/bin/
cp -p $SNAPCRAFT_PART_SRC/snap/local/victoriametrics-wrapper $SNAPCRAFT_PART_INSTALL/bin/
override-pull: |
snapcraftctl set-version "$PKG_TAG"
snapcraftctl pull
apps:
victoriametrics:
command: bin/victoriametrics-wrapper
daemon: simple
restart-condition: always
restart-delay: 10s
plugs: [network,network-bind]
plugs:
network:
network-bind:
layout:
/var/lib/victoriametrics:
bind: $SNAP_DATA/var/lib/victoriametrics
/etc/victoriametrics-scrape-config.yaml:
bind-file: $SNAP_DATA/etc/victoriametrics-scrape-config.yaml
architectures:
- build-on: ['arm64', 'amd64']
run-on: ['arm64','amd64']