在 Debian 上安装和配置 VictoriaMetrics

介绍

VictoriaMetrics 是一种快速、经济且可扩展的监控解决方案和时间序列数据库。 VictoriaMetrics 可用于 Prometheus 的长期远程存储。 VictoriaMetrics 是用 Go 编程语言编写的,因此安装时无需任何外部依赖。

先决条件

本指南在新的 Vultr Ubuntu 20.04 LTS 云服务器实例上进行了测试,适用于任何版本的 Debian。

部署 Vultr Debian 11 云服务器实例. 创建一个 sudo 用户。 更新 Debian 服务器。 安装卷曲 – apt install curl

安装 VictoriaMetrics

要以非 root 身份运行 VictoriaMetrics,我们需要创建一个 victoriametrics 用户和组。 要创建新的系统用户和组,您可以使用以下两个命令:

$ sudo groupadd -r victoriametrics
$ sudo useradd -g victoriametrics -d /var/lib/victoriametrics -s /sbin/nologin --system victoriametrics

VictoriaMetrics 安装文件打包为预编译的二进制文件。 在本指南中,我们将安装版本 v1.64.1 VictoriaMetrics。 要下载具有特定版本 VictoriaMetrics 的档案,请访问 github 发布. 如需下载,请执行以下命令:

$ curl -L https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.64.1/victoria-metrics-amd64-v1.64.1.tar.gz --output victoria-metrics-amd64-v1.64.1.tar.gz

或者你可以用一个命令下载最新版本(你需要 jq 程序来运行它,你可以用 sudo apt install jq 命令)。 此命令通过 GitHub API 获取最新版本的 VictoriaMetrics,然后下载。

$ export VM_VER=`curl -s https://api.github.com/repos/VictoriaMetrics/VictoriaMetrics/releases/latest | jq -r '.tag_name'` && curl -L https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/${VM_VER}/victoria-metrics-amd64-${VM_VER}.tar.gz --output victoria-metrics-amd64-${VM_VER}.tar.gz

将 VictoriaMetrics 可执行文件解压到 /usr/local/bin。

$ sudo tar xvf victoria-metrics-amd64-*.tar.gz -C /usr/local/bin/

修改可执行文件的所有权:

$ sudo chown -v root:root /usr/local/bin/victoria-metrics-prod

配置 VictoriaMetrics

为 VictoriaMetrics 数据创建一个目录并设置所有者:

$ sudo mkdir -v /var/lib/victoria-metrics-data
$ sudo chown -v victoriametrics:victoriametrics /var/lib/victoria-metrics-data

创建新的 systemd 服务。

$ sudo vi /etc/systemd/system/victoriametrics.service

将以下行添加到文件中:

[Unit]
Description=High-performance, cost-effective and scalable time series database, long-term remote storage for Prometheus
After=network.target

[Service]
Type=simple
User=victoriametrics
Group=victoriametrics
StartLimitBurst=5
StartLimitInterval=0
Restart=on-failure
RestartSec=1
ExecStart=/usr/local/bin/victoria-metrics-prod 
        -storageDataPath=/var/lib/victoria-metrics-data 
        -httpListenAddr=127.0.0.1:8428 
        -retentionPeriod=1
ExecStop=/bin/kill -s SIGTERM $MAINPID
LimitNOFILE=65536
LimitNPROC=32000

[Install]
WantedBy=multi-user.target

-storageDataPath – 数据目录的路径。 VictoriaMetrics 将所有数据存储在此目录中。 -httpListenAddr – VictoriaMetrics 将侦听的 IP 地址和端口。 如果您不仅要从 localhost (127.0.0.1) 连接到 VictoriaMetrics,请指定 0.0.0.0:8428。 在这种情况下,使用 127.0.0.1,因为 vmauth(用于身份验证)将用于外部连接,并将所有查询转发到 VictoriaMetrics。 -retentionPeriod – 存储数据的保留。 较旧的数据会自动删除。 RetentionPeriod=1 表示数据将存储 1 个月,然后删除。

保存并退出:

:wq

启用并启动 VictoriaMetrics 服务以在系统启动时自动运行。

$ sudo systemctl enable victoriametrics.service --now

验证 VictoriaMetrics

检查您是否可以通过 API 访问 VictoriaMetrics:

$ curl http://localhost:8428/api/v1/query -d 'query={job=~".*"}'

如果一切正常,输出必须是这样的:

{"status":"success","data":{"resultType":"vector","result":[]}}

如果在此阶段有任何错误或问题,请检查服务的状态和日志。

$ systemctl status victoriametrics.service
$ journalctl -u victoriametrics.service

安全

默认情况下,VictoriaMetrics 不使用任何身份验证或加密方法。 因此,出于上述配置中的安全原因,VictoriaMetrics 使用本地侦听 (127.0.0.1:8428)。 如果您想使用 VictoriaMetrics 从外部(从 Internet)连接,那么建议使用加密和身份验证工具。 VictoriaMetrics 为此提供了一个单独的实用程序 vmauth。 Vmauth 用作客户端和 VictoriaMetrics 之间的代理。 客户端使用 TLS 并指定密码向 vmauth 发送查询,如果 vmauth 验证此查询,则查询发送到 VictoriaMetrics。

安装 vmauth

实用程序 vmauth 位于 vmutils 存档中。 此外,vmutils 有许多额外的实用程序,可以在管理 VictoriaMetrics 服务器时派上用场(例如 vmbackup、vmrestore 等)。 下载存档 vmutils-amd64-VERSION.tar.gz。 在本指南中,我们将安装版本 v1.64.1 vmutils。 要使用特定版本的 vmutils 下载存档,请访问 github 发布. 下载执行命令:

$ curl -L https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.64.1/vmutils-amd64-v1.64.1.tar.gz --output vmutils-amd64-v1.64.1.tar.gz

或者你可以用一个命令下载最新版本(你需要 jq 程序来运行它,你可以用 sudo apt install jq 命令)。 该命令通过GitHub API获取最新版本的vmutils,然后下载。

$ export VM_UTILS_VER=`curl -s https://api.github.com/repos/VictoriaMetrics/VictoriaMetrics/releases/latest | jq -r '.tag_name'` && curl -L https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/${VM_UTILS_VER}/vmutils-amd64-${VM_UTILS_VER}.tar.gz --output vmutils-amd64-${VM_UTILS_VER}.tar.gz

将 vmutils 可执行文件解压到 /usr/local/bin。

$ sudo tar xvf vmutils-amd64-*.tar.gz -C /usr/local/bin/

修改每个可执行文件的所有权:

$ sudo chown -v root:root /usr/local/bin/vm*-prod

配置 vmauth

首先,您需要创建一个配置文件,该文件将指定用于身份验证的登录名和密码,然后您将创建使用 TLS 加密运行 vmauth 所需的 TLS 证书。

创建证书目录:

$ sudo mkdir -p /etc/victoriametrics/ssl/

设置访问 VictoriaMetrics 到配置目录的权限:

$ sudo chown -vR victoriametrics:victoriametrics /etc/victoriametrics

为 vmauth 创建配置文件:

$ sudo vi /etc/victoriametrics/config.yml

将以下行添加到文件中:

users:
  - username: "user"
    password: "strongPassword"
    url_prefix: "http://127.0.0.1:8428"

而你应该替换参数 用户名密码 使用您要用于身份验证的用户名和密码。 并改变 url_前缀 如果您使用另一个 IP 和端口来访问 VictoriaMetrics。

保存并退出:

:wq

然后,为配置文件设置所有者:

$ sudo chown -v victoriametrics:victoriametrics /etc/victoriametrics/config.yml

为 vmauth 生成自签名证书

在此示例中,您将生成用于加密客户端和 vmauth 之间连接的自签名证书,但建议使用可信证书,例如来自 Let’s Encrypt 的证书。

安装用于生成证书的包 openssl:

$ sudo apt install -y openssl

生成证书:

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/victoriametrics/ssl/victoriametrics.key -out /etc/victoriametrics/ssl/victoriametrics.crt

执行该命令后,您会被问到一些问题,例如国家代码、州、城市、组织名称等,请使用您自己或您的组织信息。 最重要的一行是 通用名称 它必须与您的服务器的 IP 地址相匹配,或者是指向它的域名。

将访问 VictoriaMetrics 的权限设置为 SSL 目录:

$ sudo chown -Rv victoriametrics:victoriametrics /etc/victoriametrics/ssl/

在 systemd 中配置服务。

$ sudo vi /etc/systemd/system/vmauth.service

将以下行添加到文件中:

[Unit]
Description=Simple auth proxy, router and load balancer for VictoriaMetrics
After=network.target

[Service]
Type=simple
User=victoriametrics
Group=victoriametrics
StartLimitBurst=5
StartLimitInterval=0
Restart=on-failure
RestartSec=1
ExecStart=/usr/local/bin/vmauth-prod 
        --tls=true 
        --auth.config=/etc/victoriametrics/config.yml 
        --httpListenAddr=0.0.0.0:8247 
        --tlsCertFile=/etc/victoriametrics/ssl/victoriametrics.crt 
        --tlsKeyFile=/etc/victoriametrics/ssl/victoriametrics.key 
ExecStop=/bin/kill -s SIGTERM $MAINPID
LimitNOFILE=65536
LimitNPROC=32000

[Install]
WantedBy=multi-user.target

保存并退出:

:wq

启用并启动 vmauth 服务以在系统启动时自动运行。

$ sudo systemctl enable vmauth.service --now

验证

检查您是否可以通过 API 访问 VictoriaMetrics:

$ curl -H "Authorization: Basic `echo -n "user:strongPassword" | base64`" --insecure https://localhost:8247/api/v1/query -d 'query={job=~".*"}'

请将 user 和 strongPassword 替换为您在创建配置文件 /etc/victoriametrics/config.yml 时指定的密码。

如果一切正常,输出必须是这样的:

{"status":"success","data":{"resultType":"vector","result":[]}}

结论

VictoriaMetrics 是一个强大的时间序列数据库,可用作 Prometheus 指标或其他类似监控系统的存储。 VictoriaMetrics 可以通过使用用于收集指标的附加实用程序 vmagent 来完全取代 Prometheus。 实用程序 vmagent 位于 vmutils 存档中。

VictoriaMetrics 写入 API 类似于 InfluxDB。 如果您的软件支持将指标发送到 InfluxDB,那么您也可以将其配置为发送到 VictoriaMetrics。

VictoriaMetrics 读取 API 使用 PromQL 语言,与 Prometheus 中的相同。 因此,例如,要添加到 Grafana,您需要使用 Prometheus 数据源。

有关 VictoriaMetrics 的更多信息,请参阅 官方文档

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com