VictoriaLogs 企业实操:认证入口、持久化采集与恢复

验证:未记录
适用版本
未记录
验证范围
尚未登记验证记录。

本路径适用于容量压测通过、允许恢复窗口的部门日志平台:独立 Linux VM、加密持久盘、vmauth 的私网 TLS(传输层安全)入口、上游磁盘缓冲与独立备份。单节点不是高可用集群;要求节点故障期间查询仍可用时,应采用官方集群架构并单独验收,不把双写当自动去重。

1. 安装固定制品#

使用官方已批准 VictoriaLogs 与 vmauth release,核对架构和发布校验和后把二进制分别安装到 /usr/local/bin/victoria-logs-prod、vmauth-prod;版本与 SHA-256(安全散列摘要)写入变更记录。不要从 main 或 latest 自动更新生产。

sudo useradd --system --shell /usr/sbin/nologin victoria
sudo install -d -o victoria -g victoria -m 0750 /var/lib/victorialogs /etc/victoria /etc/victoria/tls
# /var/lib/victorialogs 必须是专属加密持久盘,不使用临时根盘。
findmnt /var/lib/victorialogs
sudo install -m 0644 victorialogs.service /etc/systemd/system/
sudo install -m 0644 vmauth.service /etc/systemd/system/

下载 victorialogs.service、vmauth.service。防火墙只允许日志采集器/运维网段到私网 8443;9428 仅监听回环。

2. 分离写入与查询权限#

投递匹配 logs.internal.example.com 的证书与私钥;/etc/victoria/listener.env 内容为 LISTEN_ADDRESS=REPLACE_PRIVATE_IP:8443。auth.yaml 由秘密系统渲染,权限 640、属组 victoria:

users:
  - username: orders-ingest
    password: REPLACE_FROM_SECRET_MANAGER
    url_map:
      - src_paths: ['/insert/jsonline']
        headers: ['AccountID: 100', 'ProjectID: 1']
        url_prefix: http://127.0.0.1:9428
  - username: orders-reader
    password: REPLACE_SEPARATE_READ_SECRET
    url_map:
      - src_paths: ['/select/logsql/.*']
        headers: ['AccountID: 100', 'ProjectID: 1']
        url_prefix: http://127.0.0.1:9428

租户 ID(标识符)由可信入口覆盖,客户端不能指定其他租户;不代理 /internal、调试、快照和管理接口。使用 curl --config /secure/reader.curl,其中 user、cacert、url 由受控文件提供,不把密码放命令参数。

sudo systemctl daemon-reload
sudo systemctl enable --now victorialogs vmauth
curl --fail http://127.0.0.1:9428/health

无认证请求必须拒绝;writer 请求查询接口必须拒绝;reader 写入必须拒绝。带伪造 AccountID 的请求不能读写其他租户;自定义 headers 的覆盖行为在所选 vmauth 版本实测后才能接入生产。

3. 真实日志与持久化缓冲#

采集器选择已批准 Vector 版本,独立数据盘、固定版本服务与可写 data_dir;采集实际订单应用的结构化日志文件,以下配置保存 /etc/vector/vector.yaml:

data_dir: /var/lib/vector
sources:
  orders:
    type: file
    include: ['/var/log/orders/*.jsonl']
    read_from: beginning
sinks:
  logs:
    type: http
    inputs: [orders]
    uri: 'https://logs.internal.example.com:8443/insert/jsonline?_stream_fields=service&_msg_field=message'
    method: post
    encoding: {codec: json}
    framing: {method: newline_delimited}
    auth: {strategy: basic, user: orders-ingest, password: '${LOGS_PASSWORD}'}
    tls: {ca_file: /etc/vector/ca.pem, verify_certificate: true, verify_hostname: true}
    buffer: {type: disk, max_size: 1073741824, when_full: block}
    acknowledgements: {enabled: true}

LOGS_PASSWORD 从只读秘密文件注入服务环境;vector validate /etc/vector/vector.yaml 通过后启动。保留应用日志轮转文件的时间必须覆盖最大故障窗口;磁盘缓冲满会阻塞上游,不能保证无限期不丢日志。file source 的确认/检查点语义按所选 Vector 版本核对,HTTP 重试可能产生重复日志,日志中保留事件 ID 供对账。

暂停 vmauth,产生带本次唯一 run_id 的合成业务日志;观察 Vector 缓冲增长和失败告警。恢复 vmauth 后查询该 run_id,核对记录数、事件 ID 与源文件一致;不能只检查 HTTP 200。

4. 分区快照与独立恢复#

VictoriaLogs 使用按日分区;以下在存储 VM 以受控权限执行,DAY 为真实日志所属 UTC 日期:

export DAY=REPLACE_YYYYMMDD
curl --fail --get --data-urlencode "partition_prefix=$DAY" http://127.0.0.1:9428/internal/partition/snapshot/create > snapshots.json
jq -e 'type=="array" and length==1' snapshots.json
export SNAPSHOT=$(jq -r '.[0]' snapshots.json)
# 核对 SNAPSHOT 是本机 /var/lib/victorialogs 内本日快照,不接受外部任意路径。
export BACKUP=/mnt/encrypted-backup/REPLACE_UNIQUE_RUN_ID
mkdir -m 0700 "$BACKUP"
rsync -a --delete "$SNAPSHOT/" "$BACKUP/$DAY/"
# 将 BACKUP 复制到另一故障域的加密备份库并核验完整性后,才移除在线快照。
curl --fail --get --data-urlencode "path=$SNAPSHOT" http://127.0.0.1:9428/internal/partition/snapshot/delete

这是本次新建的独立备份目录;--delete 不得指向共享路径。每天覆盖全部待保留分区,并重复备份仍有晚到日志的分区;一个分区成功不代表整库完整。

独立恢复 VM 安装相同版本、配置独立 vmauth 凭据,先停止 VictoriaLogs,确认目标分区不存在:

sudo systemctl stop victorialogs
test ! -e "/var/lib/victorialogs/partitions/$DAY"
sudo mkdir -p /var/lib/victorialogs/partitions
sudo rsync -a "$BACKUP/$DAY" /var/lib/victorialogs/partitions/
sudo chown -R victoria:victoria /var/lib/victorialogs
sudo systemctl start victorialogs

使用恢复入口查询同 run_id 和时间范围,核对源事件 ID/数量;观察保留期,超出 retention 的数据可能被删除。未验证恢复不要清源数据。VictoriaLogs 分区快照流程与 VictoriaMetrics 的 vmbackup 不同,不要混用。官方备份与恢复

5. 升级与退出#

告警覆盖磁盘、写入拒绝、采集缓冲、最后成功备份时间、恢复校验和证书到期。先在恢复 VM 升级并验收查询/采集协议和数据格式,再维护源实例;单节点维护期间采集器缓冲、查询会中断,计入 RTO(恢复时间目标)。不兼容时恢复备份与旧二进制到独立盘,禁止直接反复覆盖同一数据目录。

结束仅删除本次恢复 VM、临时 run_id 日志和专属凭据;备份按留存策略处理,避免日志包含真实 token 或个人信息。

搜索文档

输入关键词,搜索所有文档。

↑ ↓ 选择 · Enter 打开 · Esc 关闭