菜单
开源

配置 Grafana Mimir 对象存储后端

Grafana Mimir 可以使用不同的对象存储服务来持久化包含指标数据的块,以及记录规则和 Alertmanager 状态。

Mimir 不会创建配置的存储桶,您必须自行创建。支持的后端有

注意

与 Amazon S3 类似,所选的对象存储实现不得创建目录。Grafana Mimir 没有对象存储目录的概念,因此在删除块时会留下空目录。例如,如果您使用 Azure Blob Storage,则必须禁用

分层命名空间 (hierarchical namespace).

要按租户配置存储保留期,请在运行时配置中设置覆盖项

Ruler 和 Alertmanager 支持本地实现(local),它在使用本地文件系统方面类似于 filesystem,但它是一个只读数据源,可用于将状态配置到这些组件中。

通用配置

为避免重复,您可以使用通用配置并填充common 配置块或提供 -common.storage.* CLI 标志。

要在配置文件中使用环境变量,请确保为变量启用扩展

注意

块存储不能与 Ruler 和 Alertmanager 存储位于同一桶的同一路径下。

使用通用配置时,请确保blocks_storage 使用以下方式之一:

  • 不同的桶,覆盖通用桶名称
  • 存储前缀

如果您将块存储配置为使用与 Alertmanager 或 Ruler 存储相同的桶和存储前缀,Grafana Mimir 将无法启动。

请在下方查看设置不同对象存储的示例

注意

如果您混合使用 YAML 文件和 CLI 标志,请注意它们的优先级逻辑

S3

yaml
common:
  storage:
    backend: s3
    s3:
      endpoint: s3.us-east-2.amazonaws.com
      region: us-east-2
      secret_access_key: "${AWS_SECRET_ACCESS_KEY}" # This is a secret injected via an environment variable
      access_key_id: "${AWS_ACCESS_KEY_ID}" # This is a secret injected via an environment variable

blocks_storage:
  s3:
    bucket_name: mimir-blocks

alertmanager_storage:
  s3:
    bucket_name: mimir-alertmanager

ruler_storage:
  s3:
    bucket_name: mimir-ruler

GCS

yaml
common:
  storage:
    backend: gcs
    gcs:
      # This is an example to illustrate what the service account content should look like.
      # We recommend injecting the service_account via an environment variable instead.
      service_account: |
        {
          "type": "service_account",
          "project_id": "my-project",
          "private_key_id": "1234abc",
          "private_key": "-----BEGIN PRIVATE KEY-----\n\n-----END PRIVATE KEY-----\n",
          "client_email": "test@my-project.iam.gserviceaccount.com",
          "client_id": "5678",
          "auth_uri": "https://#/o/oauth2/auth",
          "token_uri": "https://oauth2.googleapis.com/token",
          "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
          "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/test%40my-project.iam.gserviceaccount.com"
        }

blocks_storage:
  gcs:
    bucket_name: mimir-blocks

alertmanager_storage:
  gcs:
    bucket_name: mimir-alertmanager

ruler_storage:
  gcs:
    bucket_name: mimir-ruler

Azure Blob Storage

您必须禁用分层命名空间 (hierarchical namespace),否则 Grafana Mimir 在删除块时会留下空目录。

yaml
common:
  storage:
    backend: azure
    azure:
      account_key: "${AZURE_ACCOUNT_KEY}" # This is a secret injected via an environment variable
      account_name: mimirprod
      endpoint_suffix: "blob.core.windows.net"

blocks_storage:
  azure:
    container_name: mimir-blocks

alertmanager_storage:
  azure:
    container_name: mimir-alertmanager

ruler_storage:
  azure:
    container_name: mimir-ruler

OpenStack SWIFT

yaml
common:
  storage:
    backend: swift
    swift:
      auth_url: http://10.121.xx.xx:5000/v3
      username: mimir
      user_domain_name: Default
      password: "${OPENSTACK_API_KEY}" # This is a secret injected via an environment variable
      project_name: mimir-prod
      domain_name: Default

blocks_storage:
  swift:
    container_name: mimir-blocks

alertmanager_storage:
  swift:
    container_name: mimir-alertmanager

ruler_storage:
  swift:
    container_name: mimir-ruler