日志文件中 WAL 段加载条目不可用的 Prometheus 服务

Unavailable Prometheus service with WAL segment loaded entries in log file

我刚刚第一次设置,Docker 上的 Prometheus 使用这个 docker-compose 文件:

version: '3.7'

volumes:
    prometheus_data: {}

services:
  prometheus:
    image: prom/prometheus:latest
    volumes:
      - ./prometheus/:/etc/prometheus/
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/usr/share/prometheus/console_libraries'
      - '--web.console.templates=/usr/share/prometheus/consoles'
    ports:
      - 9090:9090
    links:
      - alertmanager:alertmanager
    restart: always

问题是几分钟后 CPU 过载并且 RAM (8GB VPS) 被消耗到几乎满容量。服务变得不可用。 查看容器的日志,不断出现如下数百个条目:

level=info ts=2021-10-02T08:01:09.966Z caller=head.go:577 component=tsdb msg="WAL segment loaded" segment=270 maxSegment=355

尝试重新启动容器,但没有任何变化。还尝试将 Prometheus 图像更新到最新版本(从 2.29.0 到 2.30.2)。 我目前正在网上查找,但还没有找到解决方案...

如有任何帮助,我们将不胜感激。

加载 WAL 是启动 Prometheus 的一个组成部分。否则,您将丢失关闭时尚未保留的数据。不幸的是,众所周知,这是资源密集型的,需要一段时间。您唯一的“解决方案”是删除 WAL (rm -r data/wal),但这会导致您丢失一些数据。否则,就等着吧。

将来,您可以启用 experimental in-memory snapshot feature(v2.30 的新增功能),以减少启动时间。