菜单
企业版 开源

从 Cortex 迁移到 Grafana Mimir

作为操作员,您可以将 Cortex 的 Helm 部署迁移到 Grafana Mimir。概述包括任何环境所需的步骤。要使用 Helm 迁移部署环境,请参阅使用 Helm 迁移到 Grafana Mimir

注意:本文档在 Cortex 1.10 和 1.11 版本上进行了测试。它可能适用于更新版本的 Cortex,但不作保证。

要迁移 Cortex 的 Jsonnet 部署,请参阅 [从 Cortex 迁移]。

Grafana Mimir 包含了重大变更,简化了水平可伸缩的多租户时间序列数据库及其长期存储的部署和持续操作。

这些变更使得 Grafana Mimir 更易于开箱即用

  • 移除了不需要调整的配置参数
  • 重命名了一些参数以便更易于理解
  • 更新了一些现有参数的默认值

mimirtool 自动化配置转换。它通过从 Cortex 配置生成 Mimir 配置来提供简单的迁移。

开始之前

  • 确保您正在运行 Cortex 1.10.X 或 Cortex 1.11.X。

    如果您正在运行旧版本的 Cortex,请在继续迁移之前升级到Cortex 1.11.1

  • 确保您已安装 Cortex 告警和记录规则以及 Cortex 仪表盘。

    使用监控 mixin,您需要在 Prometheus 或 Cortex 中安装告警和记录规则。您还需要在 Grafana 中安装仪表盘。要下载包含告警和记录规则的预构建 ZIP 文件,请参阅Release Cortex-jsonnet 1.11.0

    要使用 mimirtool 将规则上传到 ruler,请参阅 [mimirtool rules]。要将仪表盘导入 Grafana,请参阅导入仪表盘

显著变更

注意:有关所有变更的完整列表,请参阅 Mimir 的CHANGELOG

  • Grafana Mimir HTTP 服务器默认监听端口 8080;Cortex 默认监听端口 80。要将监听端口保持为 80,请设置 -server.http-listen-port=80

  • -auth.multitenancy=false 时,Grafana Mimir 使用 anonymous 作为默认租户 ID。当 -auth.enabled=false 时,Cortex 使用 fake 作为默认租户 ID。当 -auth.multitenancy=false 时,使用 -auth.no-auth-tenant=fake 以匹配 Cortex 的默认租户 ID。

  • Grafana Mimir 移除了 Cortex 中已弃用的旧版 HTTP 前缀。

    • 查询端点

      旧版当前
      /<legacy-http-prefix>/api/v1/query<prometheus-http-prefix>/api/v1/query
      /<legacy-http-prefix>/api/v1/query_range<prometheus-http-prefix>/api/v1/query_range
      /<legacy-http-prefix>/api/v1/query_exemplars<prometheus-http-prefix>/api/v1/query_exemplars
      /<legacy-http-prefix>/api/v1/series<prometheus-http-prefix>/api/v1/series
      /<legacy-http-prefix>/api/v1/labels<prometheus-http-prefix>/api/v1/labels
      /<legacy-http-prefix>/api/v1/label/{name}/values<prometheus-http-prefix>/api/v1/label/{name}/values
      /<legacy-http-prefix>/api/v1/metadata<prometheus-http-prefix>/api/v1/metadata
      /<legacy-http-prefix>/api/v1/read<prometheus-http-prefix>/api/v1/read
      /<legacy-http-prefix>/api/v1/cardinality/label_names<prometheus-http-prefix>/api/v1/cardinality/label_names
      /<legacy-http-prefix>/api/v1/cardinality/label_values<prometheus-http-prefix>/api/v1/cardinality/label_values
      /api/prom/user_stats/api/v1/user_stats
    • Distributor 端点

      旧版端点当前
      /<legacy-http-prefix>/push/api/v1/push
      /all_user_stats/distributor/all_user_stats
      /ha-tracker/distributor/ha_tracker
    • Ingester 端点

      旧版当前
      /ring/ingester/ring
      /shutdown/ingester/shutdown
      /flush/ingester/flush
      /push/ingester/push
    • Ruler 端点

      旧版当前
      /<legacy-http-prefix>/api/v1/rules<prometheus-http-prefix>/api/v1/rules
      /<legacy-http-prefix>/api/v1/alerts<prometheus-http-prefix>/api/v1/alerts
      /<legacy-http-prefix>/rules<prometheus-http-prefix>/config/v1/rules
      /<legacy-http-prefix>/rules/{namespace}<prometheus-http-prefix>/config/v1/rules/{namespace}
      /<legacy-http-prefix>/rules/{namespace}/{groupName}<prometheus-http-prefix>/config/v1/rules/{namespace}/{groupName}
      /<legacy-http-prefix>/rules/{namespace}<prometheus-http-prefix>/config/v1/rules/{namespace}
      /<legacy-http-prefix>/rules/{namespace}/{groupName}<prometheus-http-prefix>/config/v1/rules/{namespace}/{groupName}
      /<legacy-http-prefix>/rules/{namespace}<prometheus-http-prefix>/config/v1/rules/{namespace}
      /ruler_ring/ruler/ring
    • Alertmanager 端点

      旧版当前
      /<legacy-http-prefix>/alertmanager
      /status/multitenant_alertmanager/status

生成 Grafana Mimir 的配置

[mimirtool config convert] 命令将 Cortex 配置转换为 Mimir 配置。您可以使用它来更新标志和配置文件。

安装 mimirtool

要安装 Mimirtool,请从最新发布版本下载适用于您的操作系统和架构的相应二进制文件并使其可执行。

或者,您可以使用命令行工具(如 curl)下载 mimirtool。例如,对于 AMD64 架构的 Linux,使用以下命令

bash
curl -fLo mimirtool https://github.com/grafana/mimir/releases/latest/download/mimirtool-linux-amd64
chmod +x mimirtool

使用 mimirtool

mimirtool config convert 命令将 Cortex 1.11 配置文件转换为 Grafana Mimir 配置文件。它会移除 Grafana Mimir 中不再可用的配置参数,并重命名具有新名称的配置参数。如果您已明确将配置参数设置为与 Cortex 默认值匹配的值,默认情况下,mimirtool config convert 不会更新该值。要让 mimirtool config convert 将从 Cortex 默认值明确设置的值更新为新的 Grafana Mimir 默认值,请提供 --update-defaults 标志。有关使用 mimirtool 进行配置转换的更多信息,请参阅 [convert]。

使用 Helm 迁移到 Grafana Mimir

您可以从 Cortex Helm Chart (cortex-helm/cortex v1.7.0) 迁移到 Grafana Mimir Helm Chart (grafana/mimir-distributed v3.1.0)。

开始之前

  • 确保您正在运行 v1.7.0 版本的 Cortex Helm Chart。

  • 确保您正在使用 Kubernetes StatefulSet 运行 ingester。

  • 安装 yq v4

    values.yaml 文件中

    ingester:
      statefulSet:
        enabled: true

    ingester 需要存储容量用于预写日志 (WAL) 和创建用于上传的块。在使用 chunks 的 Cortex 中,WAL 是可选的,但在 Mimir 中是必需的。StatefulSet 是确保每个 Pod 获得专用存储卷的最便捷方式。

迁移到 Grafana Mimir Helm Chart

  1. 安装更新的监控 mixin。

    a. 将仪表盘添加到 Grafana。这些仪表盘将替换您的 Cortex 仪表盘,并继续用于监控 Cortex 部署。

    注意:资源仪表盘现在默认启用,并需要额外的指标源。要了解所需的指标源,请参阅 [Additional resources metrics]。

    b. 将记录和告警规则安装到 ruler 或 Prometheus 服务器中。

  2. 运行以下命令添加 Grafana Helm Chart 仓库

    bash
    helm repo add grafana https://grafana.github.io/helm-charts
  3. 转换您的 values.yaml 文件中的 Cortex 配置。

    a. 提取 Cortex 配置并将输出写入 cortex.yaml 文件。

    bash
    yq '.config' <VALUES YAML FILE> > cortex.yaml

    b. 使用 mimirtool 更新配置。

    bash
    mimirtool config convert --yaml-file cortex.yaml --yaml-out mimir.yaml

    c. 清理生成的 YAML 配置。

    您必须移除 mimirtool config convert 生成或来自旧配置的一些字段,因为 mimir-distributed Helm Chart 已为其设置了默认值。使用以下脚本清理这些字段

    bash
    yq -i 'del(.activity_tracker.filepath,.alertmanager.data_dir,.compactor.data_dir,.frontend_worker.frontend_address,.ingester.ring.tokens_file_path,.ruler.alertmanager_url,.ruler.rule_path,.runtime_config.file)' mimir.yaml

    d. 在您的自定义 Helm values 文件顶层,将更新后的配置放在 mimir.structuredConfig 键下。

    注意:mimir.structuredConfig 字段在 v3.0.0 中添加,允许您覆盖特定配置,而无需重写整个块字符串文字,例如在 mimir.config 中。

    在您的 Helm values 文件中

    yaml
    mimir:
      structuredConfig: <CONFIGURATION FILE CONTENTS>

    示例

    yaml
    mimir:
      structuredConfig:
        ingester:
          ring:
            num_tokens: 512

    e. 将 ingester 的 podManagementPolicy 设置为 "OrderedReady"。Grafana Mimir Chart 更偏好 "Parallel" 以实现更快的伸缩,但此字段在现有 StatefulSet 上是不可变的。

    在您的 values.yaml 文件中

    yaml
    ingester:
      podManagementPolicy: "OrderedReady"

    f. 将 nameOverride 参数设置为 cortex。此配置参数确保资源具有与 Cortex Helm Chart 创建的资源相同的名称,并确保 Kubernetes 对现有资源执行滚动升级而非创建新资源。

    在您的 values.yaml 文件中

    yaml
    nameOverride: "cortex"

    g. 禁用 MinIO。Grafana Mimir Helm Chart 在初次安装时默认启用 MinIO 以提供便利。如果您正在从 Cortex 迁移并拥有现有的对象存储,则必须在 Grafana Mimir Helm Chart 自定义 values.yaml 中禁用 MinIO。

    在您的 values.yaml 文件中

    yaml
    minio:
      enabled: false
  4. 使用 Grafana Mimir Chart 运行 Helm 升级。

    注意:发布的名称必须与您的 Cortex Helm Chart 发布名称匹配。

    bash
    helm upgrade <RELEASE> grafana/mimir-distributed [-n <NAMESPACE>]

要验证集群是否正常运行,请使用 [monitoring mixin dashboards]。